openafs.git
9 years agovolscan: print vnode metadata information
Michael Meffie [Tue, 26 Jul 2011 13:18:44 +0000]
volscan: print vnode metadata information

volscan program to print vnode meta-data in a grep/awk/perl friendly
format. Optionally, find the paths of each vnode relative to the volume
root.  Access control list data can be reported, and are listed as one
access entry per line. Mount point information can be shown to which
volumes are mounted from given volumes.

The path lookup code originally written by Tom Keiser.

Change-Id: I743e1a33d9e6076e4f1b1b2cc462960a94e3763b
Reviewed-on: http://gerrit.openafs.org/5102
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Tested-by: Derrick Brashear <shadow@dementix.org>

9 years agoUnix CM: Log reason for marking server up or down
Simon Wilkinson [Thu, 24 Nov 2011 17:43:45 +0000]
Unix CM: Log reason for marking server up or down

When we mark a server up or down also log the error code that says
why we did so, for help in debugging connection issues.

Change-Id: I1a14434607499c9932e23724b8e403442dc400c7
Reviewed-on: http://gerrit.openafs.org/6116
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Tested-by: Derrick Brashear <shadow@dementix.org>

9 years agovolinfo: implement -checkout option
Michael Meffie [Tue, 26 Jul 2011 02:02:04 +0000]
volinfo: implement -checkout option

Implement the -checkout option using the FSSYNC communication
channel with the fileserver.

Change-Id: I119fab0c238fd37eb85c9810626ee91210b2efb6
Reviewed-on: http://gerrit.openafs.org/5101
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agovol: log error reason on header read failure
Michael Meffie [Tue, 22 Nov 2011 00:12:56 +0000]
vol: log error reason on header read failure

Log the error reason instead of just VSALVAGE when
ReadHeader() fails.

Change-Id: I24d5ca175310345ee4ce095229b08d9e7c75f700
Reviewed-on: http://gerrit.openafs.org/6108
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agoWindows: cs_CZ localization
Lukas Volf [Sun, 4 Dec 2011 23:52:49 +0000]
Windows: cs_CZ localization

Resource conversion for the cs_CZ locale.  Does not include
installer updates.

Change-Id: Ifac0d7d9818dc662e584bc74701133cada9fbf33
Reviewed-on: http://gerrit.openafs.org/6227
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agolibafs: disable mtu discovery
Derrick Brashear [Wed, 14 Dec 2011 04:49:38 +0000]
libafs: disable mtu discovery

we need to rework this to use lack of soft acks instead of this
method, which is too fragile

Change-Id: Iedcd1e57e2c6a6c15ce3c040a9a9e6ae7d78bb36
Reviewed-on: http://gerrit.openafs.org/6256
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Tested-by: Derrick Brashear <shadow@dementix.org>

9 years agolibafs: only do pings for default conn with root uid
Derrick Brashear [Wed, 14 Dec 2011 04:20:01 +0000]
libafs: only do pings for default conn with root uid

instead of doing it for potentially every unauth user, just do it for
root.

Change-Id: I39ef22578eb07c339b096b25753a1775c9917e0b
Reviewed-on: http://gerrit.openafs.org/6255
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Tested-by: Derrick Brashear <shadow@dementix.org>

9 years agoWindows: memory leak when setting tokens via smb
Jeffrey Altman [Sat, 10 Dec 2011 18:28:17 +0000]
Windows: memory leak when setting tokens via smb

The SID string of the RPC used to set the token sessionKey
was being leaked.  Be sure to free it when it is no longer
required.

Change-Id: I28261643680d608d5c8805e095650a751193ab6d
Reviewed-on: http://gerrit.openafs.org/6244
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: Suspend/Resume for afsd_service
Jeffrey Altman [Fri, 9 Dec 2011 23:40:42 +0000]
Windows: Suspend/Resume for afsd_service

The power mgmt events are received in the service.  The service
can block all requests from the redirector from being processed
until it knows that it is safe to process them.

The service will receive a SERVICE_CONTROL_APMSUSPEND just before
the system goes to sleep.  The service has two seconds to respond
and it uses that time to attempt to send RXAFS_GiveUpAllCallBacks
to all file servers as an rx_multi with no wait.  It also marks
all servers down and updates the callback expirations to be just
after the servers were marked down so that they will be forced to
be refreshed when the server is marked up.

Upon resume the service receives two events.  First,
SERVICE_CONTROL_APMRESUMEAUTOMATIC which is used to perform an
SMB lan adapter change detection and perform a probe of all down
servers.  The second, SERVICE_CONTROL_APMRESUMESUSPEND is used to
resume SMB listeners, perform a 2nd lan adapter change check (just
in case), check the status of all down servers in additional
networks have come up, and finally resume processing of redirector
requests.

With these changes no special logic in the redirector is required.

Change-Id: I5405ecab754dca04f34afb024c4dacc3fe089088
Reviewed-on: http://gerrit.openafs.org/6243
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoPrint "waiting for job termination" at most once.
Karl Ramm [Sun, 4 Dec 2011 18:56:29 +0000]
Print "waiting for job termination" at most once.

This message is useless, annoying, and is the UI equivalent of littering... but
it does explain why your backup command is just sitting there.

Change-Id: Ied49d0bf9f81b0e10804133c6f05814321d80438
Reviewed-on: http://gerrit.openafs.org/6223
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: increase timeout for extent request retries
Jeffrey Altman [Thu, 8 Dec 2011 15:00:57 +0000]
Windows: increase timeout for extent request retries

The AFS Redirector requests file data extents from the afsd_service.exe.  If
it does not receive the requested extent within 10 seconds it issues another
request for that extent.  Extent processing in the afsd_service is handled
by background daemons that process tasks serially from a work queue.   When
the load on the system is large enough that satisfying the work queue takes
longer than 10 seconds, the redirector would retry the request.  This would
increase the length of the work queue and increase lock contention.

Increasing the timeout period for extent retries to two minutes
significantly reduces the number of retry attempts while maintaining
protection against a lost extent request.  Two minutes is selected because
that is the rx hard dead call timeout.

Change-Id: I8169fbdc2d3456f151359ffe9eaa8eeccb2ceaf1
Reviewed-on: http://gerrit.openafs.org/6237
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: include owner/group in Security DACL
Peter Scott [Thu, 8 Dec 2011 01:29:00 +0000]
Windows: include owner/group in Security DACL

Include the World (Everyone) SID as the owner and group for
all files in AFS.

FIXES 130343

Change-Id: I01d697d7a6dea8e0bea67b81c14597c197b4241d
Reviewed-on: http://gerrit.openafs.org/6236
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoafs: prevent nat pings on destroyed connections
Jeffrey Altman [Mon, 5 Dec 2011 04:15:13 +0000]
afs: prevent nat pings on destroyed connections

If the connection is no longer in use, reset the nat keep alive
timer to 0 seconds.

Change-Id: I72b69979fb8b15ab5afaa654b317edc254253b4b
Reviewed-on: http://gerrit.openafs.org/6230
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agoWindows: Release Notes Updates
Jeffrey Altman [Sun, 4 Dec 2011 18:42:08 +0000]
Windows: Release Notes Updates

Updates for 1.7.3.

Grammar improvements.

Reformatting.

Change-Id: Iff829f343e0140943495a19406746b30a70ed235
Reviewed-on: http://gerrit.openafs.org/6222
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agorx: Make CALL_RELE and CALL_HOLD lock refcnt mutex
Simon Wilkinson [Sun, 20 Nov 2011 23:11:53 +0000]
rx: Make CALL_RELE and CALL_HOLD lock refcnt mutex

The reference count mutex must always be held when calling CALL_RELE
or CALL_HOLD. Instead of requiring that the caller obtain, and release
the mutex, do so within the HOLD and RELE macros, greatly simplifying
calling code. Provide CALL_RELE_R and CALL_HOLD_R as versions of these
macros which can be used by callers who already hold the reference
count mutex for other purposes.

Change-Id: Ie3e9df8b9d2a79476f1707bd65e588f43271c636
Reviewed-on: http://gerrit.openafs.org/6219
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoFBSD: switch afsi_SetServerIPRank implementation
Ben Kaduk [Sat, 3 Dec 2011 19:37:09 +0000]
FBSD: switch afsi_SetServerIPRank implementation

Upstream has removed the ia_net{,mask} elements from
struct in_ifaddr, so we can no longer use them directly.
Switch to passing an rx_ifaddr_t (i.e. struct ifaddr*) in instead,
as that uses a slightly different codepath which still works
for our purposes.

We compile the kernel module with -Werror, so storing a pointer
(memcpy return value) in an int is forbidden, hence the conditional
declaration of 't'.

Change-Id: Ifefef88a353f4bd50a714ad88afa3a6f012fa3a1
Reviewed-on: http://gerrit.openafs.org/6203
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agorx: Helper function for decrementing conn refcnt
Simon Wilkinson [Sun, 20 Nov 2011 23:07:41 +0000]
rx: Helper function for decrementing conn refcnt

The code to lock the reference count mutex, reduce the connection
reference count, then unlock the mutex, is duplicated many times
throughout rx.c. Replace all of these multiple copies with a single
inline function.

Change-Id: I7adb460019d7434b32a16250cc026be667e7c55d
Reviewed-on: http://gerrit.openafs.org/6218
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Simon Wilkinson <sxw@inf.ed.ac.uk>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agorx: Hide the rx_packet.h
Simon Wilkinson [Sun, 20 Nov 2011 16:31:28 +0000]
rx: Hide the rx_packet.h

Hide the rx_packet.h, and hence the rx_packet structure from
application view. rx_packet.h is currently still installed, and is
included directly by RX security classes, to reduce the per-packet
overhead there.

Change-Id: I269ccf4405a8f83cab4b0392b830bc1f36471c29
Reviewed-on: http://gerrit.openafs.org/6182
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: define MIN and MAX
Jeffrey Altman [Sun, 4 Dec 2011 02:20:05 +0000]
Windows: define MIN and MAX

MIN and MAX are used throughout the tree.  Windows does
not define them.  A future patchset should convert the
openafs src tree to use min and max.

Change-Id: Ibe7bba6a49e3c85f94cd1e1c45e904764bf06e02
Reviewed-on: http://gerrit.openafs.org/6209
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agorx: Make the rx_call structure private
Simon Wilkinson [Sun, 20 Nov 2011 14:58:28 +0000]
rx: Make the rx_call structure private

Hide the rx_call structure for public view. Provide accessors for
those elements which are currently accessed by applications.

Note that this change as it currently stands removes the visibility
of the last sent time, and sequence number information, from the
VolMonitor function.

Change-Id: Ib25ab5635126f893ae43acb684d92a78278d6ca6
Reviewed-on: http://gerrit.openafs.org/6181
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agorx: Make struct rx_connection private
Simon Wilkinson [Tue, 15 Nov 2011 10:40:44 +0000]
rx: Make struct rx_connection private

Move the rx_connection structure into a private header file, so that
it is only visible from within the rx module. This allows us to use
types within the structure that are not visible to everywhere that
includes rx.h, as well as being a step towards a more stable ABI for
RX.

Add accessor functions for all of the connection members which are
currently used by external callers, and modify those accessors
which were implemented as macros to also be functions.

Change all external access to the connection structures to use these
new functions.

Change-Id: Ife67e63f37cb04273fbfc9079db3907bde78ab98
Reviewed-on: http://gerrit.openafs.org/6180
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: apply Nat Pings only to cm_rootUser connections
Jeffrey Altman [Sat, 3 Dec 2011 22:49:47 +0000]
Windows: apply Nat Pings only to cm_rootUser connections

Use CM_UCELLFLAG_ROOTUSER flag to identify the cm_rootUser
connections and only apply Nat pings to those connections
instead of examining the security state of the connection.

Change-Id: I978501972509d1e58b08b630e1ff046b404e59d8
Reviewed-on: http://gerrit.openafs.org/6208
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: track cm_rootUser connections
Jeffrey Altman [Sat, 3 Dec 2011 22:46:41 +0000]
Windows: track cm_rootUser connections

Add CM_UCELLFLAG_ROOTUSER flag to cm_ucell_t for the purpose
of tracking which connections belong to the cm_rootUser.

Change-Id: Icd809631637d4fc6c2bb1bd93e7cab74f2fb5c2b
Reviewed-on: http://gerrit.openafs.org/6207
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agorx: rx_conn/rx_peer refCount signed
Jeffrey Altman [Sat, 3 Dec 2011 20:45:53 +0000]
rx: rx_conn/rx_peer refCount signed

Can't trace reference count underflows with rxi_LowConnRefCount
and rxi_LowPeerRefCount if they cannot become negative.

Change-Id: I429da00a8e711c2e562378ec5d6601093293a55b
Reviewed-on: http://gerrit.openafs.org/6205
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agorx: Some kernels have no reschedule function
Simon Wilkinson [Sat, 3 Dec 2011 21:10:43 +0000]
rx: Some kernels have no reschedule function

If RXK_TIMEDSLEEP_ENV isn't set, then Unix kernel cache managers
call rxevent_Init without a reschedule function. Check for this so
we don't end up calling a NULL function in these situations.

Change-Id: I5e89f5247aeffc4c27d3f81c0ccabe4979232846
Reviewed-on: http://gerrit.openafs.org/6206
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: npdll connected query returns no usage
Jeffrey Altman [Sat, 3 Dec 2011 04:38:01 +0000]
Windows: npdll connected query returns no usage

In response to a NPEnumResources CONNECTED scope query, the usage
field is always set to zero.  If the CONNECTABLE flag is set,
mpr.dll will filter the entry out of the result list.

Change-Id: If939f9f168fe2e02a1a8287c661ec2e1cda5eb8f
Reviewed-on: http://gerrit.openafs.org/6195
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: Use roken's min and max
Simon Wilkinson [Sat, 3 Dec 2011 11:20:57 +0000]
Windows: Use roken's min and max

roken provides min() and max() macros. Use these, rather than our own
MIN() and MAX()

Change-Id: I82456c061cb274490e2ef2966a7075c2bde1f016
Reviewed-on: http://gerrit.openafs.org/6196
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agoAdd OpenAFS to the dependencies of remote-fs.
Edward Z. Yang [Sun, 20 Nov 2011 20:48:33 +0000]
Add OpenAFS to the dependencies of remote-fs.

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>

Change-Id: Icd1fd34dc3a5c849a2b698c1da08eb4003e6efa1
Reviewed-on: http://gerrit.openafs.org/6093
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agoRemove dead code from rxi_FindIfnet()
Ben Kaduk [Sat, 3 Dec 2011 01:24:04 +0000]
Remove dead code from rxi_FindIfnet()

There is a separate implementation for DARWIN and XBSD above, so
having a check for DARWIN here is pointless.

Change-Id: I66741dd1d8dbddc19809fd6e6fcd0897f047f222
Reviewed-on: http://gerrit.openafs.org/6193
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agorx: Refactor MaxMTU error checking
Simon Wilkinson [Sun, 20 Nov 2011 16:29:55 +0000]
rx: Refactor MaxMTU error checking

The error checking on the rxMaxMTU parameter was done individually by
every server that sets it, using "internal" RX #defines to do so.
Instead, do the error checking within the function that actually sets
the MTU, reducing both the amount of code duplication, and the amount
of RX knowledge held within the servers.

Change-Id: Ic2cdd9425d5344a5137f76f66f711f4dee91a7b6
Reviewed-on: http://gerrit.openafs.org/6091
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

9 years agosalvager: Create link table with volume group id
Andrew Deason [Fri, 2 Dec 2011 20:36:59 +0000]
salvager: Create link table with volume group id

The link table needs to be created with the VG id or RW vol id, not
the non-RW vol id. Unlike other special inodes, this goes for both the
'parent' and 'volume' volume ids, not just the 'parent' id, since
there is only one link table per VG.

Without this, the salvager can generate invalid linktable special
inodes if it encounters a VG with no inodes for the RW vol.

Change-Id: I10725c514ef1b8a5b09a506e42596b51b74af5a2
Reviewed-on: http://gerrit.openafs.org/6179
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agoDAFS: Ensure logging on attach2 errors
Andrew Deason [Wed, 30 Nov 2011 23:41:53 +0000]
DAFS: Ensure logging on attach2 errors

The attach2 error path transitions a volume to VOL_STATE_ERROR, in
case whatever got us to that error path did not already put the volume
in an appropriate state. Log when we do this, to make sure we do not
end up with a volume in VOL_STATE_ERROR state silently.

Change-Id: I02c842b64882d96e707e867ee0f7730a2bebd405
Reviewed-on: http://gerrit.openafs.org/6168
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agoDAFS: Avoid unnecessary preattach on FSYNC_VOL_ON
Andrew Deason [Wed, 30 Nov 2011 23:35:56 +0000]
DAFS: Avoid unnecessary preattach on FSYNC_VOL_ON

FSYNC_VOL_ON/FSYNC_VOL_ATTACH can be called to "online" a volume that
was actually kept online for the duration of the volume operation.
Avoid calling VPreAttachVolumeByVp_r for such a volume if it's already
attached, in order to avoid an unnecessary log message and to save a
tiny bit of processing.

Change-Id: I7776b933599ec0488941ccbd9a8e1279f5a552f4
Reviewed-on: http://gerrit.openafs.org/6167
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agoDAFS: Log more for VPreAttachVolumeByVp odd states
Andrew Deason [Wed, 30 Nov 2011 23:21:32 +0000]
DAFS: Log more for VPreAttachVolumeByVp odd states

When we encounter "odd" states in VPreAttachVolumeByVp_r, say what the
actual state we encountered was, along with the attach flags, so we
have a better idea of what's going on.

Change-Id: Ic5d07d249db7b51301b3ac903ba987cfa21922ee
Reviewed-on: http://gerrit.openafs.org/6166
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agoDAFS: Ensure GetVolume errors on ERROR volumes
Andrew Deason [Wed, 30 Nov 2011 23:08:57 +0000]
DAFS: Ensure GetVolume errors on ERROR volumes

In GetVolume, after we call VAttachVolumeByVp_r, there is no explicit
check to see if vp is in VOL_STATE_ERROR state. Make sure we don't try
to use such a volume, or blindly transition the volume away from that
state.

Change-Id: Ib2c975ac215eeff28b4ff5f5bb0a387298d7aab9
Reviewed-on: http://gerrit.openafs.org/6165
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agoDAFS: Do not transition to ERROR on trivial errors
Andrew Deason [Wed, 30 Nov 2011 20:36:06 +0000]
DAFS: Do not transition to ERROR on trivial errors

attach2 can result in many different errors; some indicate that the
volume is in an inconsistent state, but many others just indicate that
the volume cannot be attached for benign reasons (such as VNOVOL if
the volume doesn't exist, or VOFFLINE if the volume is being used by a
volume utility). Currently, for DAFS, attach2 transitions the relevant
volume to the VOL_STATE_ERROR state for almost all errors encountered,
even the benign ones. Instead, skip the error state transition for
error handling paths that do not reflect a "broken" volume.

Change-Id: I07754f715920c4ee30fb156fb2412d1e1a7e2597
Reviewed-on: http://gerrit.openafs.org/6164
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agoWindows: GetInfoTip really set return to NULL
Jeffrey Altman [Fri, 2 Dec 2011 23:49:23 +0000]
Windows: GetInfoTip really set return to NULL

When we are not returning an info-tip string from the shell
extension the string output parameter must be set to NULL.

Change-Id: I63cd9bbe078edd01e62d4b0c810a513dfbf205ae
Reviewed-on: http://gerrit.openafs.org/6183
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: memset in RDR_RequestFileExtentsAsync
Jeffrey Altman [Fri, 2 Dec 2011 18:41:38 +0000]
Windows: memset in RDR_RequestFileExtentsAsync

The logic in RDR_RequestFileExtentsAsync() made it possible
for memset() to be called multiple times on a buffer that
is already known to be up to date.  Restructure the code to
make things faster.

Change-Id: Iea09b01f126a6d8915e6bf3dd3978ad4b482eb03
Reviewed-on: http://gerrit.openafs.org/6178
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: cm_MergeStatus redirector invalidation
Jeffrey Altman [Fri, 2 Dec 2011 18:36:01 +0000]
Windows: cm_MergeStatus redirector invalidation

The redirector maintains its own cached status information which
must be updated when a DV change occurs that is not the result
of a redirector initiated data change.

If the current old DV is BAD, send a DV change notification.

If the DV has changed and request was not initiated by the
redirector, send a DV change notification.

If the request was initiated by the redirector, send a notification
for store and directory operations that result in a DV change greater
than the number of active RPCs or any other operation that results
in an unexpected DV change such as FetchStatus.

Change-Id: I6dd4c9d450901e4b5d4c8d67841e3b833cebbe1f
Reviewed-on: http://gerrit.openafs.org/6177
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: cm_MergeStatus use new DV to purge buffers
Jeffrey Altman [Fri, 2 Dec 2011 18:31:15 +0000]
Windows: cm_MergeStatus use new DV to purge buffers

When deciding whether or not to purge buffers on a DV change
it is the new DV that matters not the old DV.  If the new DV
is 0, there should be no purging because there are no buffers
to purge.

Change-Id: Ie505348dbbf8173e477645e5022410ddd3028240
Reviewed-on: http://gerrit.openafs.org/6176
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: use interlocked increment on cm_buf_t refcnt
Jeffrey Altman [Fri, 2 Dec 2011 18:21:24 +0000]
Windows: use interlocked increment on cm_buf_t refcnt

For consistency use interlocked increment when setting the
cm_buf_t refCnt to 1 even though it is protected by a lock.

Change-Id: I91fbb1469715ee6b7d6f94f416c59ebcd1645336
Reviewed-on: http://gerrit.openafs.org/6175
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: buf_GetNewLocked should use cleaned cm_buf
Jeffrey Altman [Fri, 2 Dec 2011 16:21:46 +0000]
Windows: buf_GetNewLocked should use cleaned cm_buf

buf_GetNewLocked() searches the free buffer list for a buffer
that has a 0 refcnt, is not in the chunk that is being populated,
is not actively having I/O performed on it and is not dirty.
If it comes across a dirty buffer, it calls buf_Clean() with
the assumption that buf_CleanAsync() (as it was previously called)
was in fact asynchronous and would return immediately.  Instead
buf_Clean() is synchronous and when it completes the buffer will
in most cases be clean.  buf_GetNewLocked() should use the newly
cleaned buffer if it is still available and not continue the
search from the next entry in the free buffer list.

Change-Id: Iae629df57b9d27a813f7f4c6740be23bd33fe039
Reviewed-on: http://gerrit.openafs.org/6174
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: fix buf_Recycle() comment
Jeffrey Altman [Fri, 2 Dec 2011 16:19:13 +0000]
Windows: fix buf_Recycle() comment

buf_Recycle() does not return with a reference count to the
cm_buf_t object held.  Correct the comment.

Change-Id: Ic6acde3178afe59181436d9c10d4ddfb05340372
Reviewed-on: http://gerrit.openafs.org/6173
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: buf_CleanAsync is not async; rename it
Jeffrey Altman [Fri, 2 Dec 2011 16:14:11 +0000]
Windows: buf_CleanAsync is not async; rename it

buf_CleanAsync() calls cm_BufWrite() which stores the dirty
buffers synchronously.  There is nothing asynchronous about
buf_CleanAsync() so rename it to buf_Clean() and buf_CleanAsyncLocked()
to buf_CleanLocked().   Update the comments to remove the references
to the asynchronous processing which doesn't exist.

That is not to say that the call to buf_Clean() in buf_GetNewLocked()
should not be asynchronous; it should.  There is no such functionality
at the moment.  One approach would be to modify buf_IncrSyncer to
trigger on an event set by buf_GetNewLocked() instead of the call
to buf_Clean().  Another approach would be registering a background
store event.  In any case, that is for another patchset.

Change-Id: I4c6d08d2a81b36f3cc43ada96acfa0ff9db23845
Reviewed-on: http://gerrit.openafs.org/6172
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: convert buf_IncrSyncer to pthreads
Jeffrey Altman [Fri, 2 Dec 2011 16:11:59 +0000]
Windows: convert buf_IncrSyncer to pthreads

buf_IncrSyncer() calls rx therefore it should be a pthread
thread so as not to count against the 63 native thread count
limit.

Change-Id: If00eeb7d26bfbf7d0f35addb05290f3704d11a89
Reviewed-on: http://gerrit.openafs.org/6171
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: invalidate rdr for CM_SCACHE_VERSION_BAD
Jeffrey Altman [Thu, 1 Dec 2011 04:29:56 +0000]
Windows: invalidate rdr for CM_SCACHE_VERSION_BAD

If the cm_scache_t.dataVersion is set to CM_SCACHE_VERSION_BAD,
invalidate the redirector notion of status so that we do not
leak info to users that do not have permission.

If the dataVersion is CM_SCACHE_VERSION_BAD and is updated
with real status info, invalidate the redirector so it attempts
to read the directory contents.

Change-Id: Iaa15b37f7f1863169ffe93ae9bc3d24086a3b734
Reviewed-on: http://gerrit.openafs.org/6159
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: do not set CM_SCACHEFLAG_EACCES twice
Jeffrey Altman [Thu, 1 Dec 2011 04:28:46 +0000]
Windows: do not set CM_SCACHEFLAG_EACCES twice

correct a merge error.

Change-Id: Iaf57703403a5c7555da730be0907bd31c9dfb34f
Reviewed-on: http://gerrit.openafs.org/6158
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoSOLARIS: Define BSD_COMP for non-UKERNEL on 5.11
Andrew Deason [Thu, 1 Dec 2011 17:20:41 +0000]
SOLARIS: Define BSD_COMP for non-UKERNEL on 5.11

We were defining BSD_COMP twice for UKERNEL. Move one of the #define's
up to the !UKERNEL section.

Change-Id: I91b90d666ab83a2037549c3f66ea038234a42e11
Reviewed-on: http://gerrit.openafs.org/6162
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Tested-by: Derrick Brashear <shadow@dementix.org>

9 years agoafsd.fuse: link libopr
Derrick Brashear [Thu, 1 Dec 2011 17:34:38 +0000]
afsd.fuse: link libopr

needed for rbtrees. linktest does so; we also need to

Change-Id: Ic5c8aaa0727a979212ed4f089d915b106c00fac8
Reviewed-on: http://gerrit.openafs.org/6163
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Tested-by: Derrick Brashear <shadow@dementix.org>

9 years agoremove CopyOnWrite2 and unused vars
Derrick Brashear [Wed, 30 Nov 2011 21:20:23 +0000]
remove CopyOnWrite2 and unused vars

unused static functions make grumpy compilers grumpy.

Change-Id: I2a48e2993193a615bffe331f19948bfc46fba16b
Reviewed-on: http://gerrit.openafs.org/6157
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agoviced: disable accelerated copyonwrite
Derrick Brashear [Sun, 27 Nov 2011 16:23:29 +0000]
viced: disable accelerated copyonwrite

don't do multistage CoW

FIXES 130295
Change-Id: Iec35619b970d87a72ed497d4bbec0b9415c9ddf7
Reviewed-on: http://gerrit.openafs.org/6135
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Tested-by: Derrick Brashear <shadow@dementix.org>

9 years agoWindows: AFSRDFSProvider log to file
Jeffrey Altman [Tue, 29 Nov 2011 20:02:12 +0000]
Windows: AFSRDFSProvider log to file

For when logging via OutputDebugString() is insufficient, add
a cheap method of logging to a fixed file: c:\temp\AFSRDFSProvider.log.
Set AFSRedirector\NetworkProvider "Debug" to 0x2.

Change-Id: I419bfbe251b8ef58d7c1b7921badde19d72c34e6
Reviewed-on: http://gerrit.openafs.org/6142
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: NPEnumResources no Printer support
Jeffrey Altman [Tue, 29 Nov 2011 20:01:00 +0000]
Windows: NPEnumResources no Printer support

The AFS Redirector does not support printer shares.  If the
query is for printers only (or any other query that does not
permit disk shares as a response) return no more entries.

Change-Id: Ide9fc58489bed7f4a9cf50da24a98a9b2477b72d
Reviewed-on: http://gerrit.openafs.org/6141
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: NPGetConnectionCommon buffer too small
Jeffrey Altman [Tue, 29 Nov 2011 19:59:24 +0000]
Windows: NPGetConnectionCommon buffer too small

If the specified buffer size is too small, say so.  Do not
attempt to copy data in that won't fit.  Do not walk beyond
the end of the allocated memory.

Change-Id: Id4a75273d8ec9e9cc8471a963bc32f6cad59163e
Reviewed-on: http://gerrit.openafs.org/6140
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: no drive subst for NPCancelConnection
Jeffrey Altman [Tue, 29 Nov 2011 19:55:55 +0000]
Windows: no drive subst for NPCancelConnection

NPCancelConnection() must use the results of a Get Connection
ioctl to the afs redirector and not the result of Drive Letter
Substitution queries via DosQueryDevice().  Rename NPGetConnection()
to NPGetConnectionCommon() and add a new parameter to indicate
whether drive substitution is ok.

Change-Id: I42cd4488038f128ae90356a41bc538966d9cebed
Reviewed-on: http://gerrit.openafs.org/6139
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: refactor NPCancelConnection
Jeffrey Altman [Tue, 29 Nov 2011 19:54:24 +0000]
Windows: refactor NPCancelConnection

refactor NPCancelConnection to consolidate some conditional
blocks to improve readability.

Change-Id: Ic3aaaac10809caeaab10fdb6c759be8d55d1f75c
Reviewed-on: http://gerrit.openafs.org/6138
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: Mount Point and Symlink Overlay Icons
Chris Orsi [Sat, 26 Nov 2011 22:26:10 +0000]
Windows: Mount Point and Symlink Overlay Icons

Change-Id: I34b8166664f54878eb58a0dcc3e1241cb977aa5f
Reviewed-on: http://gerrit.openafs.org/6137
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: Wix disable integrated logon by default
Jeffrey Altman [Mon, 28 Nov 2011 23:42:21 +0000]
Windows: Wix disable integrated logon by default

One of the significant differences between the NSIS and Wix
installer packages is that NSIS does not activate integrated
logon by default whereas the Wix installer does.  Enabling
integrated logon without configuring the cell, CellServDB,
installing Kerberos v5 and configuring krb5.conf can result
in a very long wait at logon.  Now that NSIS is no longer
being supported and cannot be supported as a native 64-bit
installer mechanism we must disable integrated logon by
default to prevent more bad end user experiences like
@Lotterleben described on Twitter.

Change-Id: I10be4185177f94e53295a7641dd387feb295eaa5
Reviewed-on: http://gerrit.openafs.org/6132
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agorx: Use a red black tree for the event stack
Simon Wilkinson [Sun, 23 Oct 2011 20:21:39 +0000]
rx: Use a red black tree for the event stack

Instead of the current event stack, which uses a sorted linked
list, use a red/black tree to maintain the timer stack. This
dramatically improves event insertion times, at the expense of
some additional implementation complexity.

This change also adds reference counting to the rxevent
structure. We've always had a race between an event being
fired, and that event being simultaneously cancelled by
the user thread. Reference counting avoids that race resulting
in the structure appearing twice in the free list.

Change-Id: Icbef6e04e01f3eef5b888bc3cb77b7a3d1be26ae
Reviewed-on: http://gerrit.openafs.org/5841
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoUnix CM: Build rbtrees in kernel
Simon Wilkinson [Fri, 11 Nov 2011 09:33:31 +0000]
Unix CM: Build rbtrees in kernel

Build the new opr rbtree code in the Unix kernel module

Change-Id: I8271b209c8c17c4c651f2499cd8f60e44818a828
Reviewed-on: http://gerrit.openafs.org/5842
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoudebug: Fix endianness when fudging lastYesHost
Andrew Deason [Tue, 29 Nov 2011 18:07:49 +0000]
udebug: Fix endianness when fudging lastYesHost

hostAddr is in NBO, lastYesHost is in HBO.

Change-Id: Id11046426512c79b8e760841e1e13cf91deb0b4c
Reviewed-on: http://gerrit.openafs.org/6136
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agoWindows: FSync not CleanVnode during Cleanup
Jeffrey Altman [Tue, 29 Nov 2011 00:15:33 +0000]
Windows: FSync not CleanVnode during Cleanup

cm_FSync() is buf_CleanVnode() plus a sync of metadata which
is required during last handle close.

FIXES 130351

Change-Id: I25635e3c9768dbf7d9501178b99cdd64a5be7789
Reviewed-on: http://gerrit.openafs.org/6134
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: Wix cell names can be greater than 120 chars
Jeffrey Altman [Mon, 28 Nov 2011 23:45:55 +0000]
Windows: Wix cell names can be greater than 120 chars

Increase the permitted length in the UI to 255 characters.

Change-Id: I33d3f546da8b38f89bb88352abcb908879728771
Reviewed-on: http://gerrit.openafs.org/6133
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: cache format version change
Jeffrey Altman [Mon, 28 Nov 2011 20:13:43 +0000]
Windows: cache format version change

With the change to the size of the osi_mutex_t and osi_rwlock_t
structures the CM_CONFIG_DATA_VERSION must change to force a
reconstruction of the cache file.

Change-Id: I0aadd2f7c699a5daaa87acf749957ff65d51fe6e
Reviewed-on: http://gerrit.openafs.org/6131
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: osi_mutex / osi_rwlock changes
Jeffrey Altman [Sat, 26 Nov 2011 22:26:50 +0000]
Windows: osi_mutex / osi_rwlock changes

Reorganize the osi_mutex and osi_rwlock structure so
that all counters are 32-bit and pointers are
aligned.  This requires adding padding fields.

Move lock validation checks within the critical section.

Include additional assertions checking the ownership
state and protecting against under/overflows.

Increase the size of the rwlock tid array to support
a larger number of simultaneous readers.

Change-Id: Ia46684c601a1a589a210a36862ae6ad6448a435e
Reviewed-on: http://gerrit.openafs.org/6130
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: convert daemons threads to pthreads
Jeffrey Altman [Sat, 26 Nov 2011 15:55:27 +0000]
Windows: convert daemons threads to pthreads

The daemon threads make calls to Rx and therefore need to
be created with the pthread package to prevent the threads
from being tracked as 'native' threads by the pthread_thread_shutdown
thread which can only track up to 63 native threads.

Change-Id: I8d096be9398a0a541bb59eb245cd7b3fe6f3843c
Reviewed-on: http://gerrit.openafs.org/6119
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoFBSD: cleanup dvp locking for ISDOTDOT
Ben Kaduk [Sun, 13 Nov 2011 18:12:50 +0000]
FBSD: cleanup dvp locking for ISDOTDOT

This is a more correct version of
c2ed2577f9c16df3088158fb593d7aab6e8690d0, which was reverted since
it caused build issues on some versions and kernel panics on others.

We do want to always unlock dvp before calling over the network
in the ISDOTDOT case, but be sure to use the proper spelling
for this operation (as the syntax has changed between FreeBSD versions).
This requires not unlocking dvp right after the afs_lookup() call if
it succeeds, letting us just lock the "child" vp (which is actually
the parent starting from '/') first, and then re-lock dvp.

The error case of afs_lookup() was already handled correctly in
this logic, which is to say that it was incorrect before this change,
attempting to recursively lock dvp which causes a panic.

Change-Id: Ide29e47991413dadc3a2b5948f0f6c5bfa2911c4
Reviewed-on: http://gerrit.openafs.org/6127
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agonamei: force-close fd on read or write error
Derrick Brashear [Sun, 27 Nov 2011 15:42:59 +0000]
namei: force-close fd on read or write error

if we errored, just reallyclose so we'll get a new fd

Change-Id: I55de45a96dc7fab481a49c10c68f2ebc0d4ea27c
Reviewed-on: http://gerrit.openafs.org/6126
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agoLinux: 3: Update specfile to know about 3.* kernels.
Edward Z. Yang [Sun, 27 Nov 2011 00:32:51 +0000]
Linux: 3: Update specfile to know about 3.* kernels.

Update spec file to be consistent with acinclude.m4 with regards to
sysnames.  We don't bother updating the code inside the legacy kernel
build section, as it doesn't get triggered for 3.* kernels (it should
probably get cleaned up at some point.)

Also, fix a bug in error message printing of unrecognized kernel.

Signed-off-by: Edward Z. Yang <ezyang@mit.edu>

Change-Id: Ife6046db0bec981be59aa053f63ae71458da7167
Reviewed-on: http://gerrit.openafs.org/6120
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Simon Wilkinson <sxw@inf.ed.ac.uk>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agoUnix CM: Fix PutVolume in afs_BlackListOnce
Simon Wilkinson [Wed, 23 Nov 2011 16:30:55 +0000]
Unix CM: Fix PutVolume in afs_BlackListOnce

It isn't safe to keep accessing a structure once we have Put our
reference to it.

Change-Id: I6f23a054c3ccde21aa17e07d06dd3c6e7761c098
Reviewed-on: http://gerrit.openafs.org/6117
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: add trace logging to Pioctl File Info Query
Jeffrey Altman [Tue, 22 Nov 2011 14:31:45 +0000]
Windows: add trace logging to Pioctl File Info Query

Change-Id: I357518a341dd97aa94c30ae9c0defa56a97eb920
Reviewed-on: http://gerrit.openafs.org/6110
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: _._AFS_IOCTL_._ size is zero
Jeffrey Altman [Tue, 22 Nov 2011 21:36:18 +0000]
Windows: _._AFS_IOCTL_._ size is zero

When replying to a FileStandardInformation query on the pioctl
special file, the size of the file is 0.  Failure to return 0
can result in an anti-virus program attempting to read the file
via a paging request which will fail.

Change-Id: I83f2f40cca99c04a5fe06546f19bdf96dfbb4951
Reviewed-on: http://gerrit.openafs.org/6109
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: RDR_InvalidateObject do not hold locks
Jeffrey Altman [Tue, 22 Nov 2011 02:47:38 +0000]
Windows: RDR_InvalidateObject do not hold locks

Do not hold any locks when calling the afs redirector.  Holding
a lock can cause a deadlock.

Change-Id: I5fb493d68e3cf3a8e58024b3b9f54349928f84c3
Reviewed-on: http://gerrit.openafs.org/6105
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: cm_GetSCache do not release unheld lock
Jeffrey Altman [Mon, 21 Nov 2011 18:14:40 +0000]
Windows: cm_GetSCache do not release unheld lock

if cm_GetNewSCache() fails, an attempt would be made to
release cm_scacheLock which is not held.  However, it should
be noted that cm_GetNewSCache() cannot fail without itself
triggering a panic.

Change-Id: I316e33712440c2bd816294ad788ad125ab7b4a73
Reviewed-on: http://gerrit.openafs.org/6103
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: Use Jenkins' Hash
Jeffrey Altman [Mon, 21 Nov 2011 13:42:13 +0000]
Windows: Use Jenkins' Hash

Replace the non-string hash functions with Jenkins' Hash
derived hash values.

Bump the cache version value because the hash function has
changed.

Change-Id: I9de789a48abab38ceb16e928bfc0c10e2a88747e
Reviewed-on: http://gerrit.openafs.org/6102
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoopr: Add Bob Jenkins's hash functions
Simon Wilkinson [Sun, 20 Nov 2011 23:40:51 +0000]
opr: Add Bob Jenkins's hash functions

This imports a small subset of Bob Jenkins lookup3.c hash functions
into the opr library. At present we only import the subset of this
that deals with aligned arrays of integers, as this addresses our
immediate need.

It seems likely that if we're interested in a hash function for string
arrays (or other arbitrary data), that more recent functions such like
SpookyHash (from Bob Jenkins, again) or CityHash (from Google) may be
a better solution.

The immediate use case for this is removing the use of the '%' operator
when indexing speed critical hash tables, as well as ensuring fairer
distribution of entries across these tables.

A short set of test cases is also provided

Change-Id: I0ae26382e77da02204a30a95747f7d6de8c4f24a
Reviewed-on: http://gerrit.openafs.org/6095
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoLinux: 3.2: Use set_nlink to update i_nlink
Anders Kaseorg [Mon, 21 Nov 2011 00:00:00 +0000]
Linux: 3.2: Use set_nlink to update i_nlink

As of v3.2-rc1~84^2~1, struct inode.i_nlink is now const to prevent
direct modification.

Change-Id: If0a38ffb7f9964e23f5e64c900ae92f56fb77def
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
Reviewed-on: http://gerrit.openafs.org/6096
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agoafs: Leave cellnum alone for explicit mtpt cell
Andrew Deason [Tue, 15 Nov 2011 19:18:48 +0000]
afs: Leave cellnum alone for explicit mtpt cell

When a mountpoint is given an explicit cell, don't alter cellnum.
Cellnum represents the cell for the parent, and is used for
determining whether or not we're crossing a cell boundary.

Previously, this code forced the mount point to always be treated as
foreign (for a mountpoint prefixed with a cell name), or to always be
treated as local (for a mountpoint prefixed with a cell number).

Change-Id: I7b98ccc94bf61dc3d7be0b7d6b54019cd797e884
Reviewed-on: http://gerrit.openafs.org/6051
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

9 years agonamei: tweak getlinkbyte error handling
Jeffrey Altman [Fri, 11 Nov 2011 16:00:47 +0000]
namei: tweak getlinkbyte error handling

in the event of a pread error, add the same error exit path
trigger that we have elsewhere

Change-Id: Id7a371f3fd710f3c6dad21bccb0662cf8562d99f
Reviewed-on: http://gerrit.openafs.org/5843
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoauth: avoid excessive stat of cellservdb
Michael Meffie [Thu, 27 Oct 2011 21:53:47 +0000]
auth: avoid excessive stat of cellservdb

The modified time resolution is one second, so only
stat the cellservdb file at most only once per second.

Change-Id: I7d9a58f9af72b8c36b50374e49c07b4db85285e0
Reviewed-on: http://gerrit.openafs.org/5743
Reviewed-by: Simon Wilkinson <sxw@inf.ed.ac.uk>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agovol: rate-limit volume usage updates
Michael Meffie [Thu, 3 Nov 2011 21:09:28 +0000]
vol: rate-limit volume usage updates

Add threshold and time rate-limit parameters for volume usage
updates to disk.  This reduces the amount of i/o needed for
volume usage statistics on very busy fileservers.  Set the
default to limit updates to one every 5 seconds per volume.

Change-Id: I6b4274476ef6b8f9e4288b109d5a3edbdea6e91c
Reviewed-on: http://gerrit.openafs.org/5803
Reviewed-by: Derrick Brashear <shadow@dementix.org>
Reviewed-by: Tom Keiser <tkeiser@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>

9 years agoWindows: RDR_RequestFileExtentsAsync unheld lock
Jeffrey Altman [Fri, 18 Nov 2011 14:54:43 +0000]
Windows: RDR_RequestFileExtentsAsync unheld lock

commit 55f5f356af2ef884413bd656f100055741ae871b forgot to remove
a lock_ReleaseWrite(&scp->rw) in RDR_RequestFileExtentsAsync().

Change-Id: I787ceddcada3659c7b2fae9bb90aa005a71d2ceb
Reviewed-on: http://gerrit.openafs.org/6075
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: must obtain and release an actual lock
Jeffrey Altman [Fri, 18 Nov 2011 05:39:24 +0000]
Windows: must obtain and release an actual lock

Change-Id: I2bb490ba3c1db05c4dc7660ca7319d7d96d16c0f
Reviewed-on: http://gerrit.openafs.org/6072
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: non-release only worker threads can release
Jeffrey Altman [Thu, 17 Nov 2011 05:30:24 +0000]
Windows: non-release only worker threads can release

There are two classes of worker threads created by the service
and donated to the afsredir as part of the reverse ioctl processing
model.  Normal workers can process any kind of ioctl and Release
Only workers that can only process release extent events.

Use a KeWaitForMultipleEvents in the normal worker case to permit
processing any type of event.  The previous implementation excluded
release extent ioctls from the normal workers.

Change-Id: I05e86f62c08e322cf7aa9bdd2fd325919bcbfe8f
Reviewed-on: http://gerrit.openafs.org/6071
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Rod Widdowson <rdw@steadingsoftware.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoauth: initKeys before first error exit path
Jeffrey Altman [Wed, 16 Nov 2011 05:29:34 +0000]
auth: initKeys before first error exit path

In afsconf_OpenInternal() _afsconf_InitKeys() must be called
before the first opportunity to call afsconf_CloseInternal()
or a crash can occur if the CellServDB file cannot be parsed.

Change-Id: I5b2487056a24d0c4ad78921d85df755758c7679e
Reviewed-on: http://gerrit.openafs.org/6059
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Simon Wilkinson <sxw@inf.ed.ac.uk>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: Do not install IBM AFS HLP files
Jeffrey Altman [Wed, 16 Nov 2011 15:33:41 +0000]
Windows: Do not install IBM AFS HLP files

The IBM AFS HLP files are so out of date at this point
that they are simply confusing.  They reference tools and screens
that no longer exist and claim the product is "IBM AFS".  Incorrect
documentation is worse than no documentation.

The HLP files cannot be updated since we do not have the sources.

HLP file format is no longer supported on Windows Vista or 7.

The afs-nt.hlp file will continue to be installed conditionally
when afscreds.exe is installed but the shortcut to it in the
Start menu is being removed.  afscreds.exe is not installed by
default.

Change-Id: I3443a5c4ca65472a16cbf7ae1d52da39e917136a
Reviewed-on: http://gerrit.openafs.org/6065
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: buf_CleanAsyncLocked dirty range only
Jeffrey Altman [Tue, 15 Nov 2011 23:35:26 +0000]
Windows: buf_CleanAsyncLocked dirty range only

buf_CleanAsyncLocked() should not instruct cm_BufWrite() to
write a full chunk if the current buffer is the only one that
is dirty.  cm_BufWrite() will determine if it is appropriate
to fill a full chunk when storing.  Instructing it to check
a full chunk forces it to do more work than necessary.

Change-Id: Ie140d405147d700196532b72f04885a301a2550f
Reviewed-on: http://gerrit.openafs.org/6054
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: create scache->redirMx to reduce contention
Jeffrey Altman [Tue, 15 Nov 2011 23:23:46 +0000]
Windows: create scache->redirMx to reduce contention

Relying on the cm_scache_t.rw lock to protect the cm_scache_t.redirQueue*
results in a large amount of contention between processing extent
requests and releases from the afs redirector and the threads attempting
to read from or write data to the file server.   There is no reason why
the same lock must be used.  Allocate a dedicated mutex to protect the
queue.

By placing the new mutex after the buf_globalLock in the locking
hierarchy it permits the lock acquisition logic for extent processing
to be simplified further reducing cm_scache_t.rw lock transitions.

Change-Id: Id2ded86c1f3757a2f1071c8cf39f2fbc6bcfcfaa
Reviewed-on: http://gerrit.openafs.org/6053
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: Increase default number of daemon threads
Jeffrey Altman [Wed, 16 Nov 2011 00:03:14 +0000]
Windows: Increase default number of daemon threads

With the SMB interface there was little benefit to having
a large background daemon worker pool since it was so rarely
used.  Now that the redirector does everything in the background
daemon workers, increase the default from 4 to 16 threads.

Change-Id: I319182e4c539c14d06fe62dde2b41a159e4edea6
Reviewed-on: http://gerrit.openafs.org/6058
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: cm_SetupStoreBIOD use firstModOffset chunk
Jeffrey Altman [Wed, 16 Nov 2011 00:00:05 +0000]
Windows: cm_SetupStoreBIOD use firstModOffset chunk

When cm_SetupStoreBIOD attempts to store a chunk to the file
server it should not use *inOffsetp as the start of the range.
There is no guarantee that the buffer at *inOffsetp is dirty.
Instead use firstModOffset which refers to the first known
dirty buffer in the range specified by the caller.  Attempt
to fill a chunk of consecutive dirty buffers from that point.

Change-Id: I468e896b046192461d6fe0dc3669e5feeb7886ba
Reviewed-on: http://gerrit.openafs.org/6057
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: Fairness for background operations
Jeffrey Altman [Tue, 15 Nov 2011 23:40:21 +0000]
Windows: Fairness for background operations

The background daemon worker pool is responsible for processing
background Store and Fetch operations.  With the SMB interface
primary store and fetch operations are performed in the SMB worker
thread which makes sense since those operations must be synchronous
to the incoming request.

With the AFS redirector interface almost all of the work is performed
by the background daemon worker pool.  It is therefore critical that
the workers not get stuck in a state that starves applications.
For example, copy of a file that is larger than the cache to \\AFS
will result in a background store request for each chunk size of
the file.  If each worker thread grabs one to process, only one will
make progress and the rest will block.  If a cleanup operation
(aka handle close) occurs the entire file will be flushed to the
server synchronously in the redirector worker thread.  That thread
will cause of the background daemon threads to block.

Any subsequent fetch data requests that get queued behind the list
of stores will in turn block until they clear.  This behavior is not
fair.

This patchset adds a new test to the cm_BkgDaemon() request
selection loop, cm_RequestWillBlock().  If a request will block it
is skipped.  If there are no requests to process that would not have
blocked, the worker will sleep for 25ms instead of the usual 1s.

For BkgStore operations, the CM_SCACHEFLAG_DATASTORING flag is
used to indicating a blocking state.

For BkgFetch and PreFetch operations, the CM_BUF_WRITING and
CM_BUF_READING flags on the first cm_buf_t of the range is used
to indicate a blocking state.

Change-Id: I95d9d1f14dbe0c7d717e6a7253ccfb10a9fac851
Reviewed-on: http://gerrit.openafs.org/6056
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agovlserver: Avoid atoi for vol ids
Andrew Deason [Tue, 15 Nov 2011 17:53:12 +0000]
vlserver: Avoid atoi for vol ids

Change-Id: I27c30f9320ea6d2093846148ad455eda71b0b713
Reviewed-on: http://gerrit.openafs.org/6050
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: Create default Security Descriptor
Jeffrey Altman [Tue, 15 Nov 2011 14:03:59 +0000]
Windows: Create default Security Descriptor

A misplaced #endif prevented the allocation of a default
security descriptor.  This results in STATUS_INSUFFICIENT_RESOURCES
errors.

FIXES 130284

Change-Id: I9c1d67368a1b5d770a4c9a981bdb4a24f8ad3c8e
Reviewed-on: http://gerrit.openafs.org/6048
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: interlocked refCount increment in cm_GetSCache
Jeffrey Altman [Mon, 14 Nov 2011 22:49:45 +0000]
Windows: interlocked refCount increment in cm_GetSCache

Failure to use interlocked operations in cm_GetSCache can
result in an under count

Change-Id: I370bcb9ac8b40f1c1b7ea3b7647fc76e3a554e2c
Reviewed-on: http://gerrit.openafs.org/6046
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: netidmgr krb5_cc_get_principal can fail
Jeffrey Altman [Sun, 13 Nov 2011 17:06:18 +0000]
Windows: netidmgr krb5_cc_get_principal can fail

Do not dereference a NULL pointer if krb5_cc_get_principal fails.

Change-Id: Ic213f0c41249931441bcedaf551acaa160ff7f0f
Reviewed-on: http://gerrit.openafs.org/6016
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: smb_ReceiveNTCreateX create smb_fid earlier
Jeffrey Altman [Sat, 12 Nov 2011 23:33:18 +0000]
Windows: smb_ReceiveNTCreateX create smb_fid earlier

smb_ReceiveNTCreateX() calls cm_CheckNTOpen() which now
requires the smb_fid_t allocated fid value for use in share
mode locking.   Move the allocation of the smb_fid earlier
in the function and apply necessary cleanup in error paths.

Change-Id: Iee0e39cdf393bfd245829bdfb42ddfba63908451
Reviewed-on: http://gerrit.openafs.org/6004
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: cm_GetSCache avoid holding cm_scacheLock
Jeffrey Altman [Sat, 12 Nov 2011 22:32:06 +0000]
Windows: cm_GetSCache avoid holding cm_scacheLock

cm_GetSCache used to hold cm_scacheLock write-locked from
start to finish except that it didn't.  There were several
places where cm_scacheLock was dropped and reacquired due
to lock ordering requirements.  Unfortunately, this has
two problems. First, the function isn't very fast in the
most common case since cm_scacheLock is write-locked for
the search for an existing FID.  Second, there is a race
that results when cm_GetNewSCache() drops the cm_scacheLock.

To make things faster, use a read-lock for the common case.

To avoid the race, if the FID cannot be located, call
cm_GetNewSCache() first and then obtain the cell and volume
information.  Then perform a second lookup for the FID while
holding cm_scacheLock write-locked.  If we lost the race or
there was an error obtaining the cell and volume info, put
the new cm_scache_t back onto the end of the LRU queue.

Change-Id: Idb94275d23c160ee0a2dc8fdcfd0f09506ecb2d3
Reviewed-on: http://gerrit.openafs.org/6003
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: avoid null ptr in RDR_RequestFileExtentsAsync
Jeffrey Altman [Sat, 12 Nov 2011 22:24:12 +0000]
Windows: avoid null ptr in RDR_RequestFileExtentsAsync

If the cm_scache_t cannot be obtained, do not dereference it
while returning an error to the redirector.

Change-Id: Ia8aaa33ca4ab410dc1b0100ea5668d5660d90b75
Reviewed-on: http://gerrit.openafs.org/6002
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: Track active RPCs per scache_t
Jeffrey Altman [Sat, 12 Nov 2011 18:45:08 +0000]
Windows: Track active RPCs per scache_t

It has been noticed that multiple RPCs can be active on
a cm_scache_t object at the same time.  This is especially
true of directory objects with the redirector.  Track the
number of active RPCs and use that number in cm_MergeStatus
when deciding whether or not to discard the cached data for
the object.

Change-Id: If291bb4c0e48d0ec087c3a7c2640e4598e7fd419
Reviewed-on: http://gerrit.openafs.org/6001
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

9 years agoWindows: fix locking hierarchy in service
Jeffrey Altman [Sat, 12 Nov 2011 18:41:30 +0000]
Windows: fix locking hierarchy in service

The smb username lock and the daemon global lock can be requested
while the scache dirlock is held if there are no free buffers
and the service is forced to claw back extents from the redirector.
Adjust the locking hierarchy accordingly.

Change-Id: I85387a16ca580d678af45f3931aa5e81fe0a0f2c
Reviewed-on: http://gerrit.openafs.org/6000
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>