Jeffrey Altman [Tue, 11 Aug 2009 14:37:19 +0000 (10:37 -0400)]
Windows: Dfs Referrals Processing. Not all errors are errors.
When processing a Dfs Referral request, not all lookup errors
should be treated as if the path does not exist. Servers being
down or busy, volumes offline, cell vldb servers not found, etc.
do not mean that the client should go searching elsewhere to
evaluate the path.
Jeffrey Altman [Tue, 11 Aug 2009 12:43:53 +0000 (08:43 -0400)]
Windows: Avoid unnecessary DNS lookups
Windows will attempt to open connections to a broad
range of pipe service (share) names which do not contain
a dot in them. Attempts to search for these names as
cell names in DNS result in timeouts and sluggish behavior
when browsing \\AFS in the Explorer Shell.
To avoid this problem, do not perform a DNS lookup for a
cellname that doesn't not contain a dot in it.
Jeffrey Altman [Tue, 11 Aug 2009 12:59:39 +0000 (08:59 -0400)]
Windows: Setting Server Preferences
The Windows cache manager can apply administrator specified
server preferences as specified in the registry. When these
rankings are applied the CM_SERVERFLAG_PREF_SET flag was not
set on the cm_server_t object. In addition, appropriate locking
was not being used in the places where the flag was set.
Felix Frank [Thu, 2 Jul 2009 07:14:13 +0000 (09:14 +0200)]
Unite CacheFetchProcs and add abstraction calls.
The cache type specific differencies among afs_MemCacheFetchProc
and afs_UFSCacheFetchProc are divided into two sets of "fetchOps".
Upon rxfs_fetchInit, the appropriate set is chosen.
Asanka Herath [Fri, 7 Aug 2009 02:56:42 +0000 (22:56 -0400)]
Windows: Implement SRVSVC and WKSSVC RPC interfaces
Windows uses RPC over SMB to communicate with file servers for
administrative tasks including enumeration and queries of file
server shares. This patch implements support for RPC over SMB
and partially implements the SRVSVC and WKSSVC RPC interfaces.
Andrew Deason [Mon, 10 Aug 2009 17:06:26 +0000 (12:06 -0500)]
Restore util des dependency
Commit c3c8a3e2f912855addc2c430f909bdce912e3670 removed 'des' as a
dependency of the 'util' target, but util still depends on des since
rxkstats.c includes des.h. So, put the des dep back in.
Change static max allocators to 30. Add atomic add/sub macros returning
original value, based on CASIO. Add interfaces to add and remove generic
allocator caches. Add atomic inc/dec/sub macros using MCAS primitives.
Add inline assembly for x86_64 and shim for Solaris (9+) atomic operations,
providing Solaris x86 and alternate shim for Solaris Sparc. Set interface
adapted for iteration and generalized for use with opaque key, value
pointers. File cas_skip_func.c provides kv interface, cas_skip_adt.c
provides kv interface, plus iteration on skip lists. Casual dependencies
on stdio and exit() defined out.
Jeffrey Altman [Thu, 6 Aug 2009 03:25:42 +0000 (23:25 -0400)]
Windows: Preserve GetLastError during WinTorture testing
When an error occurs during the WinTorture scripts the
actual error was not always being preserved because
subsequent Win32 calls were executed before the value
was logged.
In at least one case, the variable used to store the
last error was not initialized nor assigned in all data
paths.
Marc Dionne [Mon, 27 Jul 2009 18:24:15 +0000 (14:24 -0400)]
kauth warning reduction
Warning removal for various functions that manipulates keys and use
several data types interchangeably.
Inline helpers are introduced to convert between the types and are
used when making function calls to target the appropriate type:
des_prototypes.h
cblockptr_to_cblock: des_cblock * to des_cblock
charptr_to_cblock: char * to des_cblock
charptr_to_cblockptr: char * to des_cblock *
rxkad_prototypes.h
ktc_to_cblock: struct ktc_encryptionKey * to des_cblock
ktc_to_cblockptr: struct ktc_encryptionKey * to des_cblock *
kauth_internal.h
EncryptionKey_to_cblock: EncryptionKey * to des_cblock
EncryptionKey_to_ktc: EncryptionKey * to struct ktc_encryptionKey *
ktc_to_EncryptionKey: struct ktc_encryptionKey * to EncryptionKey *
- parameters are adjusted for tkt_DecodeTicket(5), replacing the char *
key with struct ktc_encryptionKey, to match usage
- the get_key function is changed to have a void * parameter, to match
usage
- rxkad_prototypes.h includes des.h to get the des_cblock definition.
This causes conflicts for a few files where the kerberos headers are
also included - aklog/aklog_main.c and WINNT/afsd/afskfw.c
Use NO_DES_H_INCLUDE in thoses cases to skip the new parts of
rxkad_prototypes.h
Claudio Bisegni [Mon, 3 Aug 2009 17:05:46 +0000 (19:05 +0200)]
Removed user perspectivev3 file in xcode project and update the gitconfig
gitconfig in src/platform/DARWIN/AFSPreference has been modified to ignore the perspectivev3 that is created by xcode for window layout.Has been also delete the file created for the user
Claudio Bisegni [Mon, 3 Aug 2009 14:40:05 +0000 (16:40 +0200)]
Cleaned most warning OSX OpenAFS preference and completed the AFSBackgrounder implementation
At startup the preference pane check for the presence in ~/Library/LaunchAgents of the file it.infn.lnf.network.AFSBackgrounder.plist that. The agent could be started in OpenAFS preference pane view.
AFSBackgrounder has replaced the NSMenuExtra, when it doesn't quit well launchd restart it. AFSBackgrounder can be used also for other work, for now, at login it check the user preference for get token.
Has been made some refactoring in code for remove most warning.
The unused think are been delete from project.
Start coding OSX Backgrounder Application, for OpenAFS Preference Pane, that user NSStatusItem
To prevent future compatibility with osx we must use NSStatusItem instead NSMenuExtra that is not documented api.
For this has been created a background only application that will manage all function managed by current NSMenuExtra
Restore permission documentation in bosserver man page
The original IBM HTML documentation had a table showing the permissions
that bosserver expects and sets when it creates the directory structure
for AFS. That table was accidentally dropped in the conversion to POD.
Restore it from the HTML shipped with an older version of OpenAFS.
Andrew Deason [Thu, 30 Jul 2009 17:43:27 +0000 (13:43 -0400)]
Fix UKERNEL afs_mount arguments
Change 73 (commit dc6299f5) changed the order of arguments for the
UKERNEL implementation of afs_mount, causing uafs_mount to segfault
whenever called. This changes them back to what they were before.
Andrew Deason [Mon, 20 Jul 2009 17:31:44 +0000 (12:31 -0500)]
Add additional vlprocs safety checks
This adds additional safety checks to the vlserver's implementation of
the VL_CreateEntry, VL_ReplaceEntry, and VL_UpdateEntry RPCs. Now in all
three of these, any new volume ID that would be added to the VLDB or
that would be newly referenced in a VLDB entry is checked against
duplication in other entries. Additionally, any new volume names added
to the VLDB (either by creation, or modifying an existing volume) are
checked against duplication. This should make it impossible for clients
to make a volume ID or volume name correspond to multiple volume groups
(either conceptually or literally in the vldb).
This also alters the vlserver's implementation of the VL_GetNewVolumeId
RPC such that the vlserver increments maxvolid until the range of volume
IDs [*newvolumeid, *newvolumeid+bumpcount) is unused. 'vos' is modified
to only allocate one new volume id at a time, so we don't skip over
potentially-usable vol ids.
Windows: test for and react to SMB Extended Session Timeout support
SMB Extended Session Timeout Support is available only on
Windows systems with specific versions of the mrxsmb.sys driver.
Add a test for those driver versions. If a supporting version
is present use the extended session timeout value instead of the
standard timeout value for the redirector timeout. Adjust the
rx hard, conn, and idle timeouts accordingly.
The SMB module will define the ExtendedSessTimeout registry
value if it does not exist. We rely on the fact that this is
done after the rx timeout values are calculated. The mrxsmb
driver only reads the value at boot.
Simon Wilkinson [Tue, 28 Jul 2009 10:09:30 +0000 (11:09 +0100)]
Code cleanup for vlserver
Move the cnvldb.h include so it's after vlserver.h
Don't define MAXSERVERS in cnvldb.h (it's already defined elsewhere)
Cast nvldbentry(s) to vldbentry to avoid warnings from display_entry
Volume IDs are unsigned
Use var[0]='\0' rather than sprintf(var, "");
Reviewed-on: http://gerrit.openafs.org/237 Tested-by: Marc Dionne <marc.c.dionne@gmail.com> Reviewed-by: Derrick Brashear <shadow@dementia.org>
Simon Wilkinson [Tue, 28 Jul 2009 11:13:10 +0000 (12:13 +0100)]
Cleanup for the USS directory
Add additional header files for prototypes
Add additional prototypes to header files
yyerror() is internal, not external. Make it static while we're at it.
ANSIfy various function definitions
Unsigned vs signed cleanup
Reviewed-on: http://gerrit.openafs.org/239 Tested-by: Marc Dionne <marc.c.dionne@gmail.com> Reviewed-by: Derrick Brashear <shadow@dementia.org>
Simon Wilkinson [Mon, 27 Jul 2009 21:32:01 +0000 (22:32 +0100)]
More warnings cleanup for vol/
Prototype a number of functions
Add additional includes as required
Make some existing prototypes match the actual declarations
Volume IDs are unsigned in most of the code, change this bit to match
Make various Procs take an anonymous pointer, so they can be type checked
Add vol_internal.h for prototypes internal to this package
Reviewed-on: http://gerrit.openafs.org/235 Tested-by: Marc Dionne <marc.c.dionne@gmail.com> Reviewed-by: Derrick Brashear <shadow@dementia.org>
Marc Dionne [Mon, 27 Jul 2009 15:29:34 +0000 (11:29 -0400)]
Eliminate some "implicit function declaration" warnings
Include appropriate header files to eliminate some warnings for
implicit function declarations. These are simple cases that don't
generate new warnings because of the prototypes.
Use grp.h if it exists to get setgroups() definition.
Reviewed-on: http://gerrit.openafs.org/233 Tested-by: Simon Wilkinson <sxw@inf.ed.ac.uk> Reviewed-by: Simon Wilkinson <sxw@inf.ed.ac.uk> Tested-by: Jeffrey Altman <jaltman@openafs.org> Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Adam Megacz [Mon, 27 Jul 2009 03:32:07 +0000 (20:32 -0700)]
In rxi_SendPacket[List], down hosts if ENETUNREACH or equivalent
This patch causes rxi_SendPacket[List] to "down" a host if
rxi_Sendmsg() returns -ENETUNREACH (or equivalent). Previous behavior
only did this check if defined(KERNEL) becauase non-defined(KERNEL)
implementations did not return meaningful error codes from
rxi_Sendmsg().
Jeff Altman <jaltman@openafs.org> supplied the logic for the
AFS_NT40_ENV case; I was not able to test this (I do not own a
Windows license) and took him on his word.
Reviewed-on: http://gerrit.openafs.org/59 Reviewed-by: Adam Megacz <megacz@gmail.com> Tested-by: Adam Megacz <megacz@gmail.com> Reviewed-by: Derrick Brashear <shadow@dementia.org> Tested-by: Derrick Brashear <shadow@dementia.org>
Marc Dionne [Mon, 27 Jul 2009 02:28:29 +0000 (22:28 -0400)]
Unused variable cleanup
Eliminate some warnings for unused variables. In most cases the
variables are not used at all and are removed; in a few cases the
declarations need to be ifdef'ed to follow the code that uses them.
For a typical build here this removes 24 warnings.
Reviewed-on: http://gerrit.openafs.org/232 Reviewed-by: Jeffrey Altman <jaltman@openafs.org> Tested-by: Simon Wilkinson <sxw@inf.ed.ac.uk> Reviewed-by: Simon Wilkinson <sxw@inf.ed.ac.uk> Reviewed-by: Derrick Brashear <shadow@dementia.org>
Jason Edgecombe [Mon, 27 Jul 2009 01:26:59 +0000 (21:26 -0400)]
Future-proof the wording of the auditlog options in the man pages
It was suggested that the auditlog option should not say there is one
record per RPC. In the future, there might be a need for multiple records
per RPC.
Adam Megacz [Sun, 19 Jul 2009 18:00:41 +0000 (11:00 -0700)]
Use -errno or WSAGetLastError() as return value from rxi_Sendmsg()
This patch causes the pthread and lwp implementations of rxi_Sendmsg()
to use -errno or WSAGetLastError() as the return value if it is
positive. This is required in order to communicate more meaningful
error conditions to rxi_SendPacket[List], which should "down" a host
immediately when it observes ENETUNREACH.
Jeff Altman <jaltman@openafs.org> supplied the logic for the
AFS_NT40_ENV case; I was not able to test this (I do not own a
Windows license) and took him on his word.
Reviewed-on: http://gerrit.openafs.org/58 Tested-by: Derrick Brashear <shadow@dementia.org> Reviewed-by: Adam Megacz <megacz@gmail.com> Tested-by: Adam Megacz <megacz@gmail.com> Reviewed-by: Derrick Brashear <shadow@dementia.org>
Windows: Add cm_req_t parameter to buf_Get* functions
The buf_Get* functions do not currently accept a cm_req_t
parameter. As a result they allocate their own cm_req_t on
the stack even though all callers already have one that can
be used.
Portable lock-free data structures by Keir Fraser (MCAS)
The MCAS suite, previously released as lock-free library, under a
non-restrictive license.
This software includes software previously released in 2003 under a
GPL license, but released by the original copyright holder, Keir
Fraser, under a BSD license, on 5/28/2008.
Document that the quotas passed to fs setquota, vos create, and vos
setfields and the size passed to fs setcachesize may take a suffix
indicating the unit. This documents the change in behavior implemented by 54c0a3f3e6575fa5af39ddd797d5381c36b48001.
Fix a copy/paste error in the vos create -maxquota option definition.
Andrew Deason [Wed, 24 Jun 2009 21:46:27 +0000 (17:46 -0400)]
Enhance audit logs to support SysV message queues
Adds support for sysv message queues for fileserver audit logs. This
also organizes the audit log code into various 'interfaces', of which
there are two: the original 'file' interface, and the 'sysvmq' interface
that this adds. The interface is configurable at runtime with the
-audit-interface switch.
Andrew Deason [Mon, 6 Jul 2009 15:29:20 +0000 (10:29 -0500)]
Allow specifying vos create/addsite volume IDs
This adds the -id option to 'vos create', and the -roid option to 'vos
create' and 'vos addsite'. This allows the user to manually specify the
volume IDs that a new RW or RO volume will get (or explicitly specify
that an RO volume ID should be unset), instead of always relying on the
volume IDs retrieved from the vlserver.
Running bos -noauth should not require client CellServDB configuration
When setting up a new cell, the admin is instructed to use "bos -noauth"
to configure the servers and only afterwards create the client configuration.
This leads to a catch-22 since currently bos -noauth fails if there is no
client configuration even though it is not required.
This change avoids the call to afsconf_Open() which is only required
if tokens are being acquired.
Windows: Move src/NTMakefile to top-level in order to avoid copying
For some unknown reason the Windows top-level NTMakefile is stored
at src/NTMakefile and must be copied to the top-level before it can
be used. Now that git permits easy file moves, relocate src/NTMakefile
to where it belongs.
This patch completes the implementation of an install time prompeter
for information about the local AFS cell, which is then used to populate
the ThisCell file. It removes the need for manual editing of
configuration files as part of the installation.
(Build system modified by Simon Wilkinson from Toby's original patch)
Remove hand-crafted equivalents of AC_SEARCH_LIBS for socket, connect,
and gethostbyname functions. The only effective difference between
this code and AC_SEARCH_LIBS was to define the HAVE_* macros for the
functions, which are not used anywhere in the tree.
Remove AC_FUNC_SETVBUF_REVERSED. This call no longer does anything in
current versions of Autoconf since the last system with this problem
was based on SVR2 and became obsolete in 1987. Remove the one place in
the source tree where the results are used.
Windows: rename compile_et.pod to afs_compile_et.pod
Gerrit 175 renamed compile_et and compile_et.pod to afs_compile_et*.
Fix the Windows build system to process the new pod file name
and modify the WiX installer scripts to install afs_compile_et.html.
Simon Wilkinson [Tue, 21 Jul 2009 19:53:57 +0000 (20:53 +0100)]
Further code cleanup for the backup suite
Protect butm.h against multiple inclusion
Prototype more functions for internal use in bucoord
Remove some unused variables
Include additional headers as required
Prototype exported functions in budb
Make SendReturnList helper function generic, by using a void * rock
Simon Wilkinson [Wed, 22 Jul 2009 00:11:15 +0000 (01:11 +0100)]
Rename installed version of compile_et
Rename the installed version of compile_et to afs_compile_et to avoid
conflicts with other, more standard, users of com_err. Also rename the
man page to match
Matt Benjamin [Tue, 21 Jul 2009 21:07:36 +0000 (17:07 -0400)]
Refactor OpenBSD param files into common and architecture-specific
sections.
The new structure follows the pattern of the NetBSD param files, as
suggested by Derrick. Since the change is retroactive, it seems
reasonable to also make the retroactive change to add the amd64 param
files, back to OpenBSD 3.6. OpenBSD 3.6 added SMP support for x86_64,
so the architecture was a mature subtarget at that point.
rxinfo's code to print out the principal corresponding to an rx_call uses
static arrays for the principal components but was checking that the array
pointer was non-NULL when deciding whether to print principal components.
Instead check whether each portion of the principal is the empty string.
Add explicit initializations of the static buffers to the empty string so
that we're not relying on rxkad_GetServerInfo always initializing them for
us.
This patch changes the common error reporting type from CE_PANIC
to CE_WARN and adds appropriate cleanup processing so that we do not
leak resources if an error occurs.
Simon Wilkinson [Wed, 22 Jul 2009 21:07:32 +0000 (22:07 +0100)]
Squish more warnings in xstat
Use a correct prototype for a_ProbeHandler in xstat_cm_Init
Fix a printf warning
rx_getAllAddr and afs_cb_interface.addr disagree on the sign of addresses
afs_interface.addr is a [], which we then use & to get the address of. Fix
this to stop the compiler from sulking.
Simon Wilkinson [Wed, 22 Jul 2009 21:40:13 +0000 (22:40 +0100)]
Do not call principal_ntoh to copy ktc_principal structs
principal_ntoh() is designed for butc_principal structures, which are a
different size from ktc_principal structures, and so it can't be used to
copy them.
This implements rx_GetLocalPeers(), which exposes peer statistics
that are currently collected to the cache manager. This function
will later be used to rank both the file server and vldb server
lists using the statistics exposed by rx_GetLocalPeers().
osi_pag_module.c should not be built conditionally based on whether the
NFS translator is enabled. This file is used by afspag.ko, which is run
on NFS translator clients, not servers, and should not have GPL symbol
problems.
Reviewed-on: http://gerrit.openafs.org/http://gerrit.openafs.org/179 Reviewed-by: Derrick Brashear <shadow@dementia.org> Tested-by: Marc Dionne <marc.c.dionne@gmail.com> Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Felix Frank [Thu, 2 Jul 2009 06:55:47 +0000 (08:55 +0200)]
Unite CacheStoreProcs and add abstraction calls.
The cache type specific differencies among afs_MemCacheStoreProc
and afs_UFSCacheStoreProc are divided into two sets of "storeOps".
Upon rxfs_storeInit, the appropriate set is chosen.
FIXME: Simon suggests that there should be a single set of storeOps,
as the main difference lies in what rx_ calls must be made.
This decision would then be made by calling a wrapper function from
each storeOp. These wrappers should be cachetype-specific and protocol-
independent. They would be associated to struct afs_cacheOps.
Reviewed-on: http://gerrit.openafs.org/http://gerrit.openafs.org/107 Tested-by: Russ Allbery <rra@stanford.edu> Reviewed-by: Russ Allbery <rra@stanford.edu>
Simon Wilkinson [Tue, 21 Jul 2009 19:16:51 +0000 (20:16 +0100)]
Further prototyping and cleanup of UKERNEL
This patch continues to reduce the number of warnings that come from
a UKERNEL build. It also replaces the use of a system provided suser()
call (which isn't available everywhere), with afs_suser that's provided
by UKERNEL. Note that this makes UKERNEL applications usable by
everyone, not just root.
fork_syscall() becomes a normal function
call_syscall() is ANSIfied
UKERNEL/osi_groups.c gets the includes it needs
UKERNEL/osi_machdep.c stops thinking it's on Solaris
UKERNEL/osi_vnodeops.c stops confusing vnodes and vcaches
Normally pattern matching against volume names is done on the server, but
if this fails, the client (src/bucoord/commands.c) is doing this.
This program had no code to use regex(3) when HAVE_POSIX_REGEX is defined.
This patch adds calls to regex(3) if HAVE_POSIX_REGEX is defined.
For systems without POSIX regex there were two (slightly different)
implementations in src/bucoord/regex.c and src/util/regex.c. The newer
version src/bucoord/regex.c has been modified and moved to src/util/regex.c.
Some header files and Makefiles have been removed/updated to work with this
setup.
Marc Dionne [Tue, 21 Jul 2009 22:16:45 +0000 (18:16 -0400)]
Build fixes: prevent unnecessary rebuilding
Fixes to a few Makefiles to prevent needless rebuilding when using make
after a successful build.
Rework dependencies in src/bubasics to prevent needless rebuilding and
fix some remaining parallel build issues. Multiple targets really
have to be avoided.
Remove dependency on the include/afs directory from the src/config Makefile.
Depending on a directory means that we will rebuild the target if the
timestamp changes, for instance if other files or sub-directories are
installed. This caused param.h to get re-installed in some cases and
the kernel module source files to be recompiled. This directory is
created in the top-level Makefile anyway so we shouldn't need an
explicit dependency.
the function rx_ReadProc32 (src/rx/rx_rdwr.c) checks the pointer
call->currentPacket before the function rxi_FreePacket is called. This
test was missing in the function rx_ReadProc.
Matt Benjamin [Sat, 18 Jul 2009 13:29:20 +0000 (09:29 -0400)]
Add amd64 subtarget for OpenBSD
The subtarget name is amd64_obsd. A sysname is created for the
OpenBSD 4.5 release, since it's current. The sysname id range starting at
4000 is claimed for amd64_obsd, with amd64_obsd45 at 4014, so that prior
releases can be added in the correct order, if needed.
Mention of Jim Rees and CITI in new param file changed to line crediting
them for original work.
Andrew Deason [Wed, 15 Jul 2009 14:54:32 +0000 (09:54 -0500)]
Correct ctime arguments
Corrects a few places throughout the tree where ctime() is incorrectly passed a
pointer to an afs_uint32 or similar fixed-width datatype, instead of a pointer
to a time_t.