6 years agobozo: Remove dead code and minor cleanup
Ben Kaduk [Wed, 17 Jul 2013 19:00:11 +0000]
bozo: Remove dead code and minor cleanup

This stuff has been #if 0'd for ages; put it out of its misery.

While here, remove the global bnode_waiting which is not used for anything.

bnode_SoftInt claims to return a pointer, so return NULL instead of 0.

Change-Id: Ie7b32bbc606a105190d246355f47bd7ea885c6f8
Reviewed-by: Chas Williams - CONTRACTOR <>
Reviewed-by: Derrick Brashear <>
Tested-by: BuildBot <>

6 years agoviced: Avoid endless BCB loop
Andrew Deason [Mon, 12 Aug 2013 22:37:29 +0000]
viced: Avoid endless BCB loop

Without this commit, when we break callbacks for a fid, we loop over
all callbacks for the fid, break a few of them, and then start over.
We do this repeatedly until we run out of callbacks. If a client sees
a callback break, and then establishes a new callback promise while
the fileserver is still breaking callbacks, the fileserver can break
the same callback for the same host again and again. This can continue
forever, if the client establishes its new callback promises quickly

So to avoid this, when we start breaking callbacks, flag all of the
callback structures that we want to look at. Then when we repeatedly
loop through all of the callbacks for the fid, only look at the
flagged callback structures.

This adds a 'flags' field to struct CallBack, and defines a single

This is an alternative fix to the issue also fixed in 843d705c. This
implementation avoids allocating extra memory under locks, and has the
slight benefit of not breaking callbacks that were elsewhere deleted
during the BCB. This comes at the cost of a single extra traversal
through our callback list, and the cost of claiming one of the bits in
the CallBack structure.

Change-Id: I6418bd404de61ec7a531261ecf581eeea719a2d4
Tested-by: BuildBot <>
Reviewed-by: Benjamin Kaduk <>
Reviewed-by: Derrick Brashear <>

6 years agoRevert "Atomically collect callbacks to be broken"
Andrew Deason [Wed, 21 Aug 2013 01:51:04 +0000]
Revert "Atomically collect callbacks to be broken"

This mostly reverts commit 843d705ca6f0250c3760ec2aa1f3403d19de3df1.
That commit causes each callback-breaking thread to potentially use up
a large amount of memory, as well as possibly causing large memory
allocations under H_LOCK, which isn't great.

There are other ways to allow for atomic callback breaks. Revert that
commit to allow for alternative methods to be implemented in separate
subsequent commits. Do this in separate commits so pullups to stable
branches are easier.

This does not revert the change in the definition of MAX_CB_HOSTS.
That value can still be large due to the improved multi_Rx

Change-Id: I14024b4d80696b0361658b1c5ae7af308629fab4
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

6 years agosalvager: Improve comments
Andrew Deason [Mon, 30 Sep 2013 23:12:21 +0000]
salvager: Improve comments

"these used to be asserts" is not a useful comment. This area of code
does maybe look a little confusing at first glance, though, so replace
these with comments that are more informative.

Change-Id: I4e0b9dff3d010931e02559e82165ffbd61c5b189
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

6 years agosalvager: Fix in-memory invalid linktable counts
Andrew Deason [Mon, 30 Sep 2013 22:53:36 +0000]
salvager: Fix in-memory invalid linktable counts

When we have a nonexistant or invalid linktable, we manually set all
of the linkcounts to 1, since we're recreating the link table from
scratch. However, we also have a linkCount count in our in-memory
allInodes array, which could be populated by garbage if we had a
garbage linktable. So make sure to set our in-memory linkCount to 1
for each inode, so we don't use garbage linkcount data.

Change-Id: I8f4873e12f70f81ee6f2c764957e77136b0a385e
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

6 years agosalvager: Whitespace formatting
Andrew Deason [Mon, 30 Sep 2013 22:51:40 +0000]
salvager: Whitespace formatting

The whitespace here is pretty weird. Clean it up a little.

Change-Id: Ia558d453301ee1231cfb21ee87dc7f190dc905d7
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

6 years agoFBSD: plug refcount leak in pioctl
Ben Kaduk [Wed, 29 May 2013 23:18:22 +0000]
FBSD: plug refcount leak in pioctl

When gop_lookupname_user returns a non-NULL vnode, the vnode came
from afs_GetVCache (by way of afs_lookup) which takes a reference
on the vnode entry.  There's no need to take another spurious
reference here.  The existing code already knows that there's a
reference in place, as there is an AFS_RELE down where FBSD80_ENV
unlocks the vnode if it's locked (that code is also suspicious).

Prior to this patch, things like 'fs flush /path/to/file' would
leak a reference on that cache entry, preventing clean shutdown.

Change-Id: Iefb7be16bb76b709ffd7cfc082ef9078adf9e354
Reviewed-by: Benjamin Kaduk <>
Reviewed-by: Derrick Brashear <>
Tested-by: BuildBot <>

6 years agolinux-kernel-module: move keyring-specific
Christof Hanke [Tue, 8 Oct 2013 09:53:17 +0000]
linux-kernel-module: move keyring-specific

function afs_set_session_keyring into
block. Otherwise compilation fails.

Change-Id: I44bb015990782793eac9326b983b704b2248b230
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

6 years agoprocmgmt: Introduce spawnprocve_sig
Marc Dionne [Sat, 22 Sep 2012 19:29:52 +0000]
procmgmt: Introduce spawnprocve_sig

Introduce spawnprocve_sig, a variant of spawnprocve that allows
a caller to spawn a process with a specific signal mask.
This is useful when we want to set a mask that is different
from the current one.  It needs to be done after the fork()
so that the current thread is not affected.

Change-Id: I900c85cb70d22756b78562618b0e853dcedf8235
Reviewed-by: Derrick Brashear <>
Tested-by: BuildBot <>
Reviewed-by: Chas Williams - CONTRACTOR <>
Reviewed-by: Benjamin Kaduk <>
Reviewed-by: Jeffrey Altman <>

7 years agoihandle: Make sure we don't ih_attachfd invalid FD
Andrew Deason [Thu, 12 Sep 2013 20:58:34 +0000]
ihandle: Make sure we don't ih_attachfd invalid FD

Right now, if you give ih_attachfd_r an invalid fd, and fdLruHead is
NULL, we'll return an FdHandle_t* for an invalid fd. Nowhere in the
code is this possible right now, but the implementation of
ih_attachfd_r and ih_attachfd doesn't make this very clear.

Ideally the "close some fds and retry" behavior in ih_attachfd_r will
be split out, so this code could be easier to follow, and we could
implement open() EMFILE retrying for icreate operations. But for now,
just make the current behavior clearer, so future modifications do not
introduce such mistakes.

Change-Id: Ibc80b32bc6f50480d12e3241fe198bc0587a962c
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agoDOC: afsd man page: give an example of the direct volume mount syntax
Jason Edgecombe [Fri, 27 Sep 2013 02:07:39 +0000]
DOC: afsd man page: give an example of the direct volume mount syntax

The syntax is a little confusing, so an example is needed to clarify it.

Change-Id: I413a5f2af6ccf48e780007c658c35a34384d09e0
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>
Reviewed-by: Michael Meffie <>
Reviewed-by: Mark Vitale <>
Reviewed-by: Derrick Brashear <>

7 years agovos: more details in vos release -verbose output
Michael Meffie [Fri, 1 Feb 2013 15:57:07 +0000]
vos: more details in vos release -verbose output

When running vos release with the -verbose flag, print the reasons for a
complete release, and the reasons for doing a full dump of the volume.  When
doing a full dump, have the verbose output print 'entire volume' instead of
'full release', to avoid confusion with a complete release.

Change-Id: I041da692bfea5d7eb0c96d51a5a794e3eeeb6d72
Reviewed-by: Mark Vitale <>
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agofix linux build error in osi_probe
Michael Meffie [Fri, 27 Sep 2013 17:35:07 +0000]
fix linux build error in osi_probe

Fix a build error for older versions of linux, introduced by
commit 7694f536d3997768b69a635616b0cf24d71a595a
(scsi_command_size became scsi_command_size_tbl)

Fixes a build error on RHEL/CentOS 5.9; 2.6.18-348.3.1.el5.

Change-Id: I7e6f08e7f7cbba47034701e6137eb91fa567dbda
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agovos: complain if no fields are passed
Christof Hanke [Tue, 24 Sep 2013 09:01:08 +0000]
vos: complain if no fields are passed

to vos "setfields". It might be a misleading if it exists
sucessfully when clearly invoked wrongly.

Change-Id: Ic92f4e17fde0a0dfc182f9713350800c72fa165e
Tested-by: BuildBot <>
Reviewed-by: Benjamin Kaduk <>
Reviewed-by: Derrick Brashear <>

7 years agodoc: state klog.krb is obsolete
Michael Meffie [Tue, 24 Sep 2013 01:23:27 +0000]
doc: state klog.krb is obsolete

State upfront that klog and klog.krb (v4) are obsolete.

Update the klog.krb description and remove some redundant

Change-Id: I6ede8084aebbd49c5a27aa427ef9782d99a347aa
Reviewed-by: Derrick Brashear <>
Tested-by: BuildBot <>

7 years agoCatch up to FreeBSD VM object read/write locks
Ben Kaduk [Fri, 22 Mar 2013 17:51:02 +0000]
Catch up to FreeBSD VM object read/write locks

Upstream r248084 changed the vm_object mutex to be a rwlock,
allowing for future optimizations.  This is a KPI change, so
introduce conditionals to be compatible with both versions of the KPI.

Change-Id: I6e3101bc80262480035dee4c5b2d1b9cbc44b57b
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agobuild: compile_et rules for parallel make
Michael Meffie [Tue, 10 Sep 2013 02:25:50 +0000]
build: compile_et rules for parallel make

Change all makefile rules which run compile_et in order support parallel
make.  The compile_et generates two outputs, so special care must be
taken in rules which run compile_et.

All the rules for compile_et have been changed to the form:

    foo.c foo.h:
        compile_et -h foo
    foo.h: foo.c

The above rules are equivalent to:

        compile_et -h foo

    foo.h: foo.c
        compile_et -h foo

therefore a parallel make will serialize the builds of foo.c and foo.h,
and should detect that the second is no longer needed once the first is
over.  This form works since is not a phony target, and does not
depend on a phony target.

Previously, the rules for compile_et were of the one of the two forms:

    a)  foo.c foo.h:
            compile_et -h foo


    b)  foo.h: foo.c
            compile_et -h foo

Form a) is problematic for parallel makes, since it is equivalent to:

            compile_et -h foo
            compile_et -h foo

In a parallel make, compile_et will be run concurrently, clobbering
each other's output files.

Form b) is better, but is problematic when foo.h is removed, since foo.h
will not be updated.

Thanks to Russ Allbery for pointing out the automake documentation which
describes issues with commands that produce multiple outputs, and
portable solutions.

Change-Id: I14c056606084f80270e05592d3d09a600f804e24
Reviewed-by: Benjamin Kaduk <>
Reviewed-by: Derrick Brashear <>
Tested-by: BuildBot <>

7 years agoWindows: fix libafscp build directory
Jeffrey Altman [Wed, 11 Sep 2013 14:44:37 +0000]
Windows: fix libafscp build directory

NTMakefile specifed the directory as libacl not libafscp

Change-Id: I12af68a19155d0764967f9cd2e8eb2d8795530d5
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Freelance Do not chase mount points
Jeffrey Altman [Wed, 4 Sep 2013 19:53:57 +0000]
Windows: Freelance Do not chase mount points

When adding mount points or symlinks do not chase mount points
when attempting to determine the FID of the added object.

Change-Id: Ic4e070d687cc56407a19c41f185f3e28db7671bd
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: cm_MergeStatus avoid lock recursion
Jeffrey Altman [Fri, 27 Sep 2013 22:02:52 +0000]
Windows: cm_MergeStatus avoid lock recursion

It is possible for cm_MergeStatus() to be called while the is already held.  If it is a panic occurs.  Test for
refcount == 0 before acquiring the lock in addition to afterwards.
If the refcount is not zero, then we do not need to acquire the
lock in any case.

Change-Id: I1b73a03f4745e524d7fdf8f9b231b420895ff0fa
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: AFSCreate avoid race leading to NULL dereference
Jeffrey Altman [Wed, 4 Sep 2013 17:11:24 +0000]
Windows: AFSCreate avoid race leading to NULL dereference

If a test for NULL is performed ahead of an assignment and then
use of the assigned value, there is a race which can result in
the assigned value being NULL if the value being assigned is
altered by another thread.

Perform the assignment first then test based upon that.

Change-Id: I6d50619dab168c2aa12542b14217779f1be08ee9
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoProbe directly for com_err.h
Andrew Deason [Wed, 11 Sep 2013 16:22:20 +0000]
Probe directly for com_err.h

com_err.h can be in com_err.h, et/com_err.h, or krb5/com_err.h (for
netbsd 6.1 and possibly other netbsd). aklog currently only includes
either com_err.h or et/com_err.h, depending on autoconf probes
performed by the krb5.m4 macros.

So, also look for krb5/com_err.h. The krb5.m4 macros currently only
look for com_err.h at all if certain other libkrb5 tests return
certain results, so just look for all of them directly in some of our
openafs-specific krb5 probing logic in

Also remove the duplicate check for et/com_err.h in acinclude.m4 while
we're here. We only use et/com_err.h if krb5 support is enabled, so
only check for it in the second of krb5 probes.

FIXES 131716

Change-Id: Ic454b9bf7043f91654dcd1c262ab3790bf2ad272
Reviewed-by: Derrick Brashear <>
Tested-by: BuildBot <>

7 years agoWhine if single-DES keys are in use
Andrew Deason [Wed, 25 Sep 2013 05:25:48 +0000]
Whine if single-DES keys are in use

If we are using single-DES keys in our KeyFile, yell at the
administrator, so they have a chance at realizing that they should
migrate to stronger crypto.

Change-Id: Ic37d9e1cea7ee7e12594be0dec02000f11efc896
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agovol: Nuke parent vol special inodes
Andrew Deason [Wed, 18 Sep 2013 21:56:23 +0000]
vol: Nuke parent vol special inodes

When we "nuke" a volume, we delete all inodes we can find that are for
the given volume id. This currently means that if we nuke an RW volume
id, we delete all of the inodes for file data for the entire volume
group (since they're all stored in the VG id), but we do not delete
the special inodes for any non-RW volumes in that volume group. Those
special inodes left behind are not very useful, since we just deleted
all of the actual file data.

Currently this means that on namei, it's impossible to nuke the
special inodes for non-RW volumes, since the namei nuke will only look
in the subdir for the given volume id. If you give it the RW volume
id, it won't delete the special inodes as menioned above; if you give
it the RO volume id, it will only look in the RO subdir, and won't
find the RO special inodes in the RW subdir.

If a volume group is damaged in such a way that the salvager cannot
fix it (due to a bug), this means that it is impossible to get rid of
that volume group completely from the partition on namei without
manually running "rm -rf" on the relevant AFSIDat directory. Normally
we have a failsafe of running 'vos zap -force', but that doesn't work
for non-RW special inodes, as mentioned above.

So, in order to allow this 'vos zap -force' failsafe to work in
hopefully all situations, also delete the special inodes for the
parent volume. Use similar logic as exists in the salvager's
OnlyOneVolume function.

Change-Id: Id29da48a548c70b2b9ada1dd09f41cb59452bd11
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agorxgen: cast bool properly
Chaskiel Grundman [Fri, 20 Sep 2013 19:08:30 +0000]
rxgen: cast bool properly

The C type for xdr's bool is bool_t. When casting, use the correct type

Change-Id: I562ee1e48eeffa8fece66176cf13013630d157aa
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agobozo: cap retry delay
Michael Meffie [Tue, 20 Aug 2013 20:48:34 +0000]
bozo: cap retry delay

Cap the retry delay to a reasonable amount of time instead
of just doubling the delay until it reaches 16 hours.

Change-Id: Ibc7dd75670a9b02f34050842b6e54df4f5a7c315
Reviewed-by: Andrew Deason <>
Reviewed-by: Benjamin Kaduk <>
Reviewed-by: Derrick Brashear <>
Tested-by: BuildBot <>

7 years agorx_multi: free the quantity of memory we allocated
Jonathan A. Kollasch [Sat, 21 Sep 2013 00:46:05 +0000]
rx_multi: free the quantity of memory we allocated

Change-Id: I3a666bb5c3b8b9ab222d1170095e46116fac4229
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>
Reviewed-by: Derrick Brashear <>

7 years agotkt_MakeTicket5: Use correct bitmask operator
Chaskiel Grundman [Fri, 20 Sep 2013 20:47:33 +0000]
tkt_MakeTicket5: Use correct bitmask operator

tkt_MakeTicket5 tries to avoid returning heimdal asn1 error codes,
but uses an incorrect expression that's almost always true. Use
bitwise & instead of logical && to fix.

Change-Id: I59bffe8c9b98c6f32b967bc37a7989c98c5720b6
Reviewed-by: Jeffrey Altman <>
Reviewed-by: Simon Wilkinson <>
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agoAdd missing clean rules
Chaskiel Grundman [Fri, 20 Sep 2013 19:27:27 +0000]
Add missing clean rules

do libtool cleanup in src/afsd, src/kauth, and src/venus
remove ordinary objects in src/opr

Change-Id: Iddf6bb017a38e20e971b9faf576ee2f9e39625c0
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agoRemove AFS_NBSD40_ENV block within AFS_HPUX110_ENV block
Jonathan A. Kollasch [Sat, 21 Sep 2013 00:36:30 +0000]
Remove AFS_NBSD40_ENV block within AFS_HPUX110_ENV block

Change-Id: Id679f07c811c36b9f47556a9e7be94fe7ba303f3
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agorx: Always call rxi_StartListener
Andrew Deason [Fri, 20 Sep 2013 20:13:43 +0000]
rx: Always call rxi_StartListener

Commit c10f5296 made rx_Init only call rxi_StartListener in the kernel
if we have RXK_LISTENER_ENV. But this doesn't make any sense, since
rxi_StartListener only does anything if RXK_LISTENER_ENV is _not_
defined. As a result, for any non-rxk-listener non-rx-upcall platform,
we never receives rx packets in the kernel, since we never set up our
rx packet callback. The only such platform appears to be AIX, since
while other platforms (HPUX, FBSD, IRIX) have a non-rxk-listener mode,
they also implement an rxk-listener mode that we always turn on.

So, just always call rxi_StartListener, and let the ifdef guards for
the various implementations of rxi_StartListener do the right thing.

FIXES 131725

Change-Id: I209a89bda06f2c790aca2682468066c7b0bb7edd
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agoAdd config glue for amd64_nbsd70 and i386_nbsd70 sysnames
Jonathan A. Kollasch [Thu, 19 Sep 2013 00:37:32 +0000]
Add config glue for amd64_nbsd70 and i386_nbsd70 sysnames

Change-Id: I2d0b6848f96aab8d68a41fb6d5892284fca987ad
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agolinux: core dump requires write fop
Derrick Brashear [Fri, 13 Sep 2013 15:13:05 +0000]
linux: core dump requires write fop

turns out not just writev is unhappy with aio_write (only); core dumping
wants a write file op. always provide it.

FIXES 131729

Change-Id: If099f83973825981b4c568db7572bf30d399c089
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agoafsd: check if mountdir is an absolute path
Christof Hanke [Fri, 13 Sep 2013 09:47:08 +0000]
afsd: check if mountdir is an absolute path

if the mountdir in the cacheinfo file is not absolute,
it can confuse commands like "df". Thus, force it to
be absolute.

Change-Id: Idb098b7c83fef6931fe71dd53a85569a953e5e3f
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agoLINUX: Keyring deal with suse-specific key_type op
Christof Hanke [Thu, 12 Sep 2013 07:25:31 +0000]
LINUX: Keyring deal with suse-specific key_type op

instantiate_prep used for checking for

Change-Id: Ia7411e85467ba418dfefa5cd7c2d570fe20a5a68
Reviewed-by: Marc Dionne <>
Reviewed-by: Derrick Brashear <>
Tested-by: BuildBot <>

7 years agotabular output: fix segmentation fault
Christof Hanke [Wed, 4 Sep 2013 12:59:04 +0000]
tabular output: fix segmentation fault

inititalize  Table->numAllocatedRows=0;

Change-Id: I72c6a687fde69cad3bf9aedd43d59d382455045b
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agolibuafs: return error on symlink to self
Derrick Brashear [Tue, 10 Sep 2013 01:27:54 +0000]
libuafs: return error on symlink to self

if we are symlinked to ourself directly, return ELOOP.

Change-Id: I408012c4a9afb6bab0e917677c940f65ad59c697
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agolibuafs: move code for uafs_LookupLink
Derrick Brashear [Tue, 10 Sep 2013 01:22:02 +0000]
libuafs: move code for uafs_LookupLink

in order that we can make a future version static, move the code.

Change-Id: I67e50ef5f14db3567ecd437b694b62b2c8fdb760
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agolibafs: update uio resid in bypasscache
Derrick Brashear [Sun, 8 Sep 2013 04:11:47 +0000]
libafs: update uio resid in bypasscache

when we do a no cache read, we should decrease the resid as we use
up buffer... otherwise we have no idea in the caller how much data
actually got transferred

Change-Id: I50072fddcde1681b3760002d5065b1c2d9b97605
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>
Reviewed-by: Derrick Brashear <>

7 years agoclient: flag in cachemanager if rmtsys is enabled
Christof Hanke [Thu, 12 Sep 2013 11:34:04 +0000]
client: flag in cachemanager if rmtsys is enabled

when processing "fs sysname" on a client, a rmtsys-related
checks are executed by default. These prevent a user with gid
2750 and 274i8 (0xabc and 0xabe) from executing this command.
Add a new flag inside the cachemanager for the rmtsys-
functionality. This flag is set through a new ioctl by the afsd
on startup.

Change-Id: Idf95aa81cc1dbb46c70a11b9ae2ccfa04bfb4c4f
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agoauth: fix cellservdb update check
Michael Meffie [Sat, 7 Sep 2013 03:58:39 +0000]
auth: fix cellservdb update check

Fix a bug introduced by the check to avoid excessive stats of the
cellservdb.  Fixes a bug where cached cell config data is served for up
to one second after a write.

Check the timeRead field which is reset after a write to indicate the
data should be read.

Fixes commit 0e3bfa033ed230fcb46ad8e3c26c8b7aae6e00af

Change-Id: I209e93a1bc4107a878eefaae92ec0e5e4ada2518
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>
Reviewed-by: Marc Dionne <>
Reviewed-by: Derrick Brashear <>

7 years agolinux: provide read and write ops even when we have aio
Derrick Brashear [Thu, 12 Sep 2013 12:09:34 +0000]
linux: provide read and write ops even when we have aio

read/write will fall back to aio ops but e.g. writev will
fail if there is not either a write or writev op explicitly.

force the fallback via do_sync_read/do_sync_write

required with 2.6.18-348.x rhel kernels but probably not newer ones

Change-Id: I773a8e38df435015e4bc9fc353d930d14b3e6791
Reviewed-by: Marc Dionne <>
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>
Tested-by: Derrick Brashear <>

7 years agoLinux Keyring error handling
Christof Hanke [Wed, 28 Aug 2013 12:51:13 +0000]
Linux Keyring error handling

honour the returncode of key_instantiate_and_link() to avoid
having non-working pagsh without an error.

Change-Id: Ia62c1c24b22e833cd5dc2689181397965901d34e
Tested-by: BuildBot <>
Reviewed-by: Marc Dionne <>
Reviewed-by: Michael Meffie <>
Reviewed-by: Mark Vitale <>
Reviewed-by: Derrick Brashear <>

7 years agoLinux 3.11: Adapt to d_count changes
Marc Dionne [Tue, 3 Sep 2013 11:55:14 +0000]
Linux 3.11: Adapt to d_count changes

In preparation for upcoming changes in the 3.12 cycle, d_lockref
was introduced late in the 3.11 cycle.  The dentry's d_lock and
d_count are moved to this new structure.  A new d_lock macro makes
the change transparent for locking, but direct users of d_count
must adapt.  A new d_count() helper function is provided and
should now be used.

Use the new d_count() helper function if available, and move
some of the ifdef logic into a helper compatibility function.

Change-Id: I32a21a174d763fb7df8f1e04da3bb7260684571d
Tested-by: Jeffrey Altman <>
Reviewed-by: Simon Wilkinson <>
Reviewed-by: Jeffrey Altman <>

7 years agofix src tarball error text in make-release
Ken Dreyer [Fri, 6 Sep 2013 04:39:57 +0000]
fix src tarball error text in make-release

Correct the error message if make-release fails to create the source

Change-Id: Iaf908975d56c0ee4c2959854f0ffd9c855f2c708
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Do not leak activeRPC count
Jeffrey Altman [Tue, 3 Sep 2013 12:42:50 +0000]
Windows: Do not leak activeRPC count

If a callback race has been lost cm_MergeStatus is not executed.
In that case either the activeRPC count should not be incremented
or must be decremented to indicate that the current call has been

Change-Id: I417f72bbc482f6d207ed0c09770b1d8a53d078ff
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Adjust setting of VERIFY_DATA flag
Jeffrey Altman [Mon, 2 Sep 2013 18:38:41 +0000]
Windows: Adjust setting of VERIFY_DATA flag

If the CcPurge operation fails or cannot be performed, in addition
to setting the purge on close flag, set the verify data flag.  This
ensures that the next attempt to access the file will retry the

Change-Id: I9ebbdab8b5dd31ace5d316454b6e54cf537686d5
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Add trace to track setting VERIFY flag
Jeffrey Altman [Mon, 2 Sep 2013 18:34:32 +0000]
Windows: Add trace to track setting VERIFY flag

Add trace statements at each location the VERIFY flag is set or

Change-Id: I108d3d44947bc92f147afb66f746af3262435104
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Skip Extent operations if Direct IO
Jeffrey Altman [Mon, 2 Sep 2013 18:31:38 +0000]
Windows: Skip Extent operations if Direct IO

If the redirector is using Direct IO servicing there are no extents
in use.  Skip the AFSFlushExtents, AFSTearDownExtents, and related
calls unless extent processing is in use.  This will reduce lock
contention and reduce cpu processing.

Change-Id: I2948295bdd6056e6fbdab7d32c46575a8a7aebbc
Reviewed-by: Jeffrey Altman <>
Tested-by: Jeffrey Altman <>

7 years agoWindows: Hold Fcb Resource across CcPurgeSection
Jeffrey Altman [Mon, 26 Aug 2013 00:07:44 +0000]
Windows: Hold Fcb Resource across CcPurgeSection

Now that the Fcb Resource and SectionObjectResource are held in
the FastIo pathway and the Trend Micro deadlock has been addressed
by holding a reference on the FileObject it is time to fix the
lock acquisition ordering.   For each CcPurgeSection call the
Fcb Resource will be held exclusive before the SectionObjectResource.

Change-Id: Ica9e3674b39e2789c35bcf13d9fa1f2326420119
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Strip out unused ModWriter Fastio code
Rod Widdowson [Sun, 25 Aug 2013 20:20:28 +0000]
Windows: Strip out unused ModWriter Fastio code

The code is no longer used (the fcb->PagingIO resource is taken for
us by the modwriter) so we strip it out to save other making changes
and then remembering/discovering that this code isn't being used.

Change-Id: I0d880049758559ae0860f8c1e12583304a459a68
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Take FCB resource in presection create.
Rod Widdowson [Sun, 25 Aug 2013 19:25:55 +0000]
Windows: Take FCB resource in presection create.

Fix a lock inversion in the paging query file information path (called
from within section create).

The query file takes the FCB resource, but that is a lower rank
lock than the SOP resource which is taken in AcquireFileForNtCreateSection,

We fix the inversion by grabbing the FCB resource in

Change-Id: I6ea8d2ebf9d454f78469e86765ae36e1993533b2
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Pin the Cc FileObject during section create.
Rod Widdowson [Sun, 25 Aug 2013 16:16:39 +0000]
Windows: Pin the Cc FileObject during section create.

This means that if we purge the data cache while the section is being
created then the MJ_CLOSE will not happen until we unpin the FO.

Thus we can drop any embarsssing locks prior to the close and
meddling antivirus products can do odd stuff in the close path.

Note that there may not be a file object, but in that case there
will be no close on the purge since any CcInitialize operations
will wait on us dropping the SOP lock exe - hence the SOP cannot
be set up.

Also note that this only applies to the data section,
but we do not purge the image section.

Change-Id: I63884888d98eb4eb03858ed962d74bd3b4702042
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: AFSPerformObjectInvalidate FILE processing
Jeffrey Altman [Mon, 26 Aug 2013 00:02:51 +0000]
Windows: AFSPerformObjectInvalidate FILE processing

Refactor AFSPerformObjectInvalidate so that all of the non-DIRECT_IO
processing variables are in the Extents processing section.  Remove
all references to Extents processing from the DIRECT_IO block.

Change-Id: If1c20f9d09b415f4c032cea600983efe6ab0cdc3
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: AFSVerifyEntry get rid of bPurgeExtents
Jeffrey Altman [Sun, 25 Aug 2013 23:54:52 +0000]
Windows: AFSVerifyEntry get rid of bPurgeExtents

The logic in AFSVerifyEntry is such that bPurgeExtents is always
set to true so simplify the code by removing it.

Change-Id: Idfa90f47158eadb71560122aa3d04b80b7410e03
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Fix trace messages in AFSSetEndOfFileInfo
Jeffrey Altman [Sun, 25 Aug 2013 00:20:54 +0000]
Windows: Fix trace messages in AFSSetEndOfFileInfo

The wrong function name was specified.

Change-Id: I820af87177b84120088a4bd2b60655e9b0f68b80
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: AFSWrite comments
Jeffrey Altman [Fri, 23 Aug 2013 19:02:44 +0000]
Windows: AFSWrite comments

Add various comments regarding lock requirements

Change-Id: I285eb416ef7d05ef29fcffbc5ce9afd5d3d27322
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Missing try..except in AFSCachedWrite
Jeffrey Altman [Fri, 23 Aug 2013 19:00:17 +0000]
Windows: Missing try..except in AFSCachedWrite

Wrap another cache manager call with try..except

Change-Id: I2d10fc5a4c9a47f32590a394c57c412d773409f5
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Refactor AFSVerifyEntry AFSValidateEntry
Jeffrey Altman [Thu, 22 Aug 2013 21:50:39 +0000]
Windows: Refactor AFSVerifyEntry AFSValidateEntry

Inside a big switch statement it is hard to follow when there
are multiple 'break' exits within a 'case'.   Reorganize the code
so that there is only a single exit for the FILE type.  Unnecessary
blocks are removed as well.

Change-Id: I7ae0ae4592a15a23e8526f18a96a9ded9a1d135c
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: introduce Section Object Resource Trace Subsystem
Jeffrey Altman [Thu, 22 Aug 2013 21:46:19 +0000]
Windows: introduce Section Object Resource Trace Subsystem

Section Object Resource acquires and releases are lost in the
noise of all of the rest of the locks.  Introduce a dedicated
subsystem just for Section Objects.

Add missing entries at the same time.

Change-Id: Ibf94da7e737d0559a822f731dbbda7ebe96dfa2d
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: afsredirlib afscommonwrite trace msg error
Jeffrey Altman [Thu, 22 Aug 2013 21:43:20 +0000]
Windows: afsredirlib afscommonwrite trace msg error

Specify the correct function name in the trace msg.

Change-Id: I08307d873308631af8cc7afd148b78636b4f49ce
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Call AFSExeceptionFilter for all exceptions
Jeffrey Altman [Wed, 21 Aug 2013 16:27:35 +0000]
Windows: Call AFSExeceptionFilter for all exceptions

In many cases we capture exceptions record and the Exception Code
as ntStatus and move on with life.   This patchset changes that.
All exceptions are passed to AFSExceptionFilter so we do not miss

Change-Id: I4bc8836047a8735becf2f9efaca2a6fa7749b3ca
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoviced: Clarify comment explaining cba sorting
Andrew Deason [Wed, 21 Aug 2013 22:07:14 +0000]
viced: Clarify comment explaining cba sorting

The current comment here is very brief; it may not be immediately
clear to a reader why we are sorting these, and so why we need the
given CBAs in an array. Expand on it a bit.

Note that it seems like it might be possible to refactor multi_Rx to
not require all calls to be created before any packets are sent. If
multi_Rx were changed to send data as we create calls, it may be
possible to eliminate this sorting, and allow for slightly more
efficient callback traversal when breaking callbacks.

Change-Id: I966cdcf6d40aa5c02f8768f4dd76c580c811ccaf
Tested-by: BuildBot <>
Reviewed-by: Michael Meffie <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Delay MP Target evaluation until required
Jeffrey Altman [Sat, 17 Aug 2013 16:51:06 +0000]
Windows: Delay MP Target evaluation until required

Do not evaluate the Target FID of a mount point until such time
as the target directory must be accessed.

Change-Id: I8aa0da50256cacc4433fad6c7675ca8bd3bd5eb7
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: modify PopulateCurrentEntry follow mp rules
Jeffrey Altman [Sat, 17 Aug 2013 15:35:39 +0000]
Windows: modify PopulateCurrentEntry follow mp rules

It is always safe to read the mount point target data, it is not
always safe to evaluate the volume id since the VLDB might not be

For directory enumerations do not evaluate the target Fid.  Only
do so for eval by name and by id requests.

Change-Id: Ifa0e84b2e9fb0822dceb9d719a47c541fed2a2bf
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: update GetFileVersionInformation fail msg
Jeffrey Altman [Sat, 17 Aug 2013 15:33:45 +0000]
Windows: update GetFileVersionInformation fail msg

Include the module name in the error message if GetFileVersionInformation
fails.  Its failure means the module has no file version resource data.

Change-Id: If2e0d376613b5b10e58114986f9ae6994a6de6c0
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Cap Cache Size on X86
Jeffrey Altman [Sat, 17 Aug 2013 14:18:53 +0000]
Windows: Cap Cache Size on X86

Since we know the cache size cannot be arbitrary size because it
must fit into contiguous process memory and because it is difficult
to compute the actual size limit, cap the size to 716800KB.

Change-Id: I850f489dc8a392875582e52d8d511dedf69aec9c
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: do not return STATUS_RETRY for rx timeouts
Jeffrey Altman [Sat, 17 Aug 2013 04:08:30 +0000]
Windows: do not return STATUS_RETRY for rx timeouts

Report the RPC server unavailable instead.

Change-Id: I9a6d8eec9d93f66b098b2edc4119d2e759efd9a1
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: np AddConnection error code
Jeffrey Altman [Sat, 10 Aug 2013 04:44:08 +0000]
Windows: np AddConnection error code

If AddConnection fails because DeviceIOcontrol fails, do not
return out of memory which is an unsupported error code.  Report
a network failure.

Change-Id: Ib0c83a2fc0b681a94483e1b16ab102354767c993
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Do not recycle deleted scache on refcnt 0
Jeffrey Altman [Fri, 16 Aug 2013 19:36:32 +0000]
Windows: Do not recycle deleted scache on refcnt 0

If the scache object with CM_SCACHEFLAG_DELETED set is recycled
then the deleted state is lost and the cache manager cannot prevent
unnecessary FetchStatus queries to the file server.

Change-Id: Idaed9c3a18fb1d68c9c6d720a5b16591acafce7d
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: Do not remove scp from hash table on deletion
Jeffrey Altman [Fri, 16 Aug 2013 16:01:55 +0000]
Windows: Do not remove scp from hash table on deletion

If the CM_SCACHEFLAG_DELETED flag is going to have any benefit, the
cm_scache object must not be removed from the hash table in response
to a VNOVNODE error.  Otherwise, a new cm_scache object is allocated,
the CM_SCACHEFLAG_DELETED is not found, and a new callback request
is issued to the file server which in response returns VNOVNODE.

Do this enough times and the abort threshold is triggered and then
the application becomes very unhappy with performance.

Change-Id: I5c6e2495c149f52ca192d195897e2a1822cf0d14
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: CM_SCACHEFLAG_DELETED use InterlockedOr
Jeffrey Altman [Fri, 16 Aug 2013 16:01:02 +0000]
Windows: CM_SCACHEFLAG_DELETED use InterlockedOr

When setting CM_SCACHEFLAG_DELETED use InterlockedOr.

Change-Id: Ie6ccc8e0a167e5bb6a8b74689606166821168989
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: buf_CleanLocked no callback for deleted file
Jeffrey Altman [Fri, 16 Aug 2013 15:58:18 +0000]
Windows: buf_CleanLocked no callback for deleted file

If the cm_scache flags indicate the object is CM_SCACHEFLAG_DELETED,
do not request a callback.  Simply invalidate the data in the buffer
and move on.

Change-Id: Id461dc20dda53c93eb87f2648f6279877e4a34d6
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agovolser: repair volserver -udpsize and -sleep options
Mark Vitale [Tue, 16 Jul 2013 21:27:05 +0000]
volser: repair volserver -udpsize and -sleep options

commit cd3492d0635708f141dbb9230471434268ef2188 accidentally
broke the parsing of the volserver -udpsize and -sleep options.

Change-Id: Ia900e4d8fda1b4d5759b46932a4b62bf5591707b
Tested-by: BuildBot <>
Reviewed-by: Marc Dionne <>
Reviewed-by: Derrick Brashear <>

7 years agodo not ship uncompressed tarballs
Ken Dreyer [Wed, 31 Jul 2013 22:00:24 +0000]
do not ship uncompressed tarballs

There's not much point to shipping uncompressed tarballs in 2013. Delete
them during "make-release".

Change-Id: Ib52bd4a34ef0f5b0eacb973e60f7c1ef921f5ade
Reviewed-by: Derrick Brashear <>
Reviewed-by: Stephan Wiesand <>
Tested-by: BuildBot <>
Reviewed-by: Ken Dreyer <>

7 years agoCheck for over/underflow while allocating PTS ids
Ben Kaduk [Wed, 17 Jul 2013 00:39:56 +0000]
Check for over/underflow while allocating PTS ids

The behavior of signed integer over/underflow is implementation-defined,
but even if the compiler is nice and just wraps around, we could get
ourselves into trouble later on.

Change-Id: I20ea9c790037a36b8527889b3f7adcfd60e74fd4
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>
Reviewed-by: Mark Vitale <>
Reviewed-by: Derrick Brashear <>

7 years agoVerify, not Assert, for the (util) global mutex
Ben Kaduk [Wed, 17 Jul 2013 20:09:09 +0000]
Verify, not Assert, for the (util) global mutex

We don't want turning off debugging to force open this lock.

Change-Id: Ia8dd689c506e42a4bf87c83af23d7457df12f8b9
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agodoc: clarify setcrypt defaults
Ken Dreyer [Sat, 27 Jul 2013 15:22:56 +0000]
doc: clarify setcrypt defaults

Change-Id: I0145ecc9935786204d215a11459d170f6220657b
Reviewed-by: Jason Edgecombe <>
Reviewed-by: Michael Laß <>
Reviewed-by: Jeffrey Altman <>
Reviewed-by: Derrick Brashear <>
Tested-by: Derrick Brashear <>

7 years agoDo not use a non-literal format string
Ben Kaduk [Wed, 31 Jul 2013 00:17:01 +0000]
Do not use a non-literal format string

Now that UKERNEL's panic() is a proper varargs function (gerrit 9877),
we can use a literal format string "%s" to print the panic message.
clang warngs about a non-literal format string, and in some build
environments the warning becomes fatal via -Werror.

Change-Id: I7d8c9390e3edad7efa6ae1217f938b635423d23a
Reviewed-by: Jeffrey Altman <>
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agobudb: Do not use garbage cellinfo
Andrew Deason [Wed, 31 Jul 2013 20:58:41 +0000]
budb: Do not use garbage cellinfo

If the -servers option is given, we never initialize cellinfo or the
clones array. So, don't give the cellinfo structure or the clones
array to ubik in that case, or we may crash or do other weird things.

This issue appears to have been introduced in commit fc4ab52e.

FIXES 131706

Change-Id: I87681c697fec7bbfd6c73a8a9a865e4309c95963
Reviewed-by: Jeffrey Altman <>
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agoenable Perl's strict and warnings in make-release
Ken Dreyer [Wed, 31 Jul 2013 22:16:16 +0000]
enable Perl's strict and warnings in make-release

Declare the undeclared variables $help, $man, and @toCompress, delete
the duplicate declaration for $last, and remove the unused $tag

Change-Id: I33de42722b84207dc1bbad50539dc5bf92da2f5e
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

Andrew Deason [Thu, 1 Aug 2013 19:06:52 +0000]

Currently we have two DAFS-related preprocessor defines in the
the symbol for enabling DAFS code, and turns on demand attachment and
all of the related complicated volume handling; it requires pthreads.
DAFS_UTIL is supposed to be used for utilities interacting with DAFS,
but do not have pthreads and so cannot build the relevant threads for
e.g. the VLRU, so they don't support demand attachment and a lot of
more advanced volume handling techniques.

Having both of these exist is confusing. For example, currently in
partition.c we only initialize dp->volLockFile for DAFS_FS, even
though the structure exists if _either_ DAFS_FS or DAFS_UTIL is
defined. This means when only DAFS_UTIL is defined, volLockFile will
exist in the partition structure, but will be uninitialized!

Amongst other possible issues, this means right now that DAFS_UTIL
users (dasalvager is the only one right now) will try to use an
uninitialized volLockFile whenever they try to use a volume that needs
locking. Since the partition struct is usually initialized to all
zeroes, this means we'll try to issue a lock request for FD 0,
whatever FD 0 is. If FD 0 is not open, we'll fail with EBADF and bail
out. But if FD 0 is open to some random file, the lock will probably
succeed, and we'll proceed without actually locking the volume lock
file. While the fssync volume checkout mechanism still works, the
on-disk locking mechanism protects against race conditions the fssync
volume checkout mechanism cannot protect against, and so handling
volumes in this way is not safe.

This is just one example; there are other issues with the partition
headerLockFile and probably may other things; most instances of
DAFS_FS really should be enabled for DAFS_UTIL as well.

So, instead of trying to account for and fix all of these problems
individually, get rid of AFS_DEMAND_ATTACH_UTIL, and just use
AFS_DEMAND_ATTACH_FS. This means that all relevant code must be
pthreaded, but since the only relevant code is for the dasalvager, we
can just make dasalvager pthreaded. Salvaging does not make use of any
threads or LWPs, so this should not have any side-effects.

Thanks to Ralf Brunckhorst for reporting the issue where we encounter
EBADF when FD 0 is not open, leading to the discovery of this.

Change-Id: I3848eb877f26b9d65833d5ce0e03f5cf7ba28de4
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agoLinux: Remove extra "goto out" from tmpfs fix
Marc Dionne [Wed, 29 May 2013 14:33:44 +0000]
Linux: Remove extra "goto out" from tmpfs fix

Remove a stray "goto out" that should not have been applied in
this spot along with the tmpfs fix.

Thanks to Stephan Wiesand for pointing it out.

Change-Id: I6f798029a948446b974456648513ea7db4469561
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agovolume_inline.h: Down with assert, again
Anders Kaseorg [Tue, 23 Jul 2013 18:37:26 +0000]
volume_inline.h: Down with assert, again

Commit 34767c6a0f914960c9a1efabe69dd9c312a2b400 replaced all assert
calls in this file with osi_Assert (now opr_Assert), but shortly
thereafter, commit db6ee95864a8fc5f33b7e95c19c8ff5058d37e92 added
VTimedWaitStateChange_r with two new assert calls.  These are
precarious in a public header; fix them to opr_Assert like the ones in

Change-Id: If2055355b45a09940d69dace59ec18bd6a0cc6fa
Signed-off-by: Anders Kaseorg <>
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agorxkad: remove warnings from der-protos.h
Jeffrey Altman [Tue, 9 Jul 2013 21:50:26 +0000]
rxkad: remove warnings from der-protos.h

der-protos.h was generated from Heimdal headers which in turn were
auto-generated.  The included a large number of function prototypes
of the form

  ret-type func(parm-list, type */* comment */);

where the combination of */* is ambiguous.  Does it mean an end comment
followed by a pointer declaration or a pointer declaration followed by
a begin comment.  This combination generates warnings on Windows.  The
bug was fixed in Heimdal's code generator.  Fixing it here by editing
the code.

Change-Id: Ie66a5c70b0144173d70433adfbe3ed453672af81
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: fix cm_ServerFindByUUID
Jeffrey Altman [Wed, 17 Jul 2013 00:22:59 +0000]
Windows: fix cm_ServerFindByUUID

opr_uuid_equal() returns non-zero if equal.

Change-Id: I6777d4536d002ec227454aa014278e0fc32eb14d
Reviewed-by: Mark Vitale <>
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoaix: link afs_dynamic_kerbauth to rfc3961
Jeffrey Altman [Wed, 24 Jul 2013 21:54:13 +0000]
aix: link afs_dynamic_kerbauth to rfc3961

Change-Id: Ie06fc83382e18f2e90a5f3874a8bb71afa0c4748
Tested-by: BuildBot <>
Reviewed-by: Jeffrey Altman <>

7 years agoWindows: fix building of aklog
Jeffrey Altman [Wed, 24 Jul 2013 21:31:35 +0000]
Windows: fix building of aklog

patchset 7e4e06b87a09197816b0e1ae132e38dc30090574 was misapplied
to src/WINNT/aklog/aklog.c resulting in a Windows build failure.

Change-Id: I789ee1464f1f2e695d043d7a25a9f7566068733a
Tested-by: Simon Wilkinson <>
Reviewed-by: Jeffrey Altman <>
Tested-by: Jeffrey Altman <>

7 years agoWindows: fix cm_ServerEqual bug
Jeffrey Altman [Sun, 14 Jul 2013 01:29:19 +0000]
Windows: fix cm_ServerEqual bug

must check svr2 not svr1 in the second uuid check.

Change-Id: I570b06c630a18c31001b3ca3ab09c870c7cbc355
Tested-by: BuildBot <>
Reviewed-by: Mark Vitale <>
Reviewed-by: Jeffrey Altman <>

7 years agoMerge branch 'rxkad-kdf-master' into HEAD
Simon Wilkinson [Wed, 24 Jul 2013 14:55:26 +0000]
Merge branch 'rxkad-kdf-master' into HEAD

Merge the current OpenAFS master branch with the branch on which
OpenAFS-SA-2013-003 and OpenAFS-SA-2013-004 were developed.

7 years agoUse -nofork when starting bosserver via systemd
Michael Laß [Sun, 14 Jul 2013 19:31:27 +0000]
Use -nofork when starting bosserver via systemd

Systemd does not expect the started process to fork unless
"Type=forking" is given. Use -nofork to run BOS in foreground and allow
systemd to track its state.

Change-Id: I024be12b410d6b8299edd16f309d816a3df469ed
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>
Reviewed-by: Marc Dionne <>
Reviewed-by: Mark Vitale <>
Tested-by: Michael Laß <>
Tested-by: Ken Dreyer <>
Reviewed-by: Ken Dreyer <>

7 years agoFix typo
Ben Kaduk [Fri, 12 Jul 2013 17:38:08 +0000]
Fix typo

The file is KeyFileExt, not KeyFileEx.

Change-Id: Iffd5edc8a60b1a49441822d26dc44fa252bd70e3
Tested-by: BuildBot <>
Reviewed-by: Derrick Brashear <>

7 years agoAdd support for deriving DES keys to klog.krb5
Ben Kaduk [Sat, 13 Jul 2013 09:49:27 +0000]
Add support for deriving DES keys to klog.krb5

Change-Id: I5b58585661f34ec501ad8db8f92b659f32919366

7 years agoUpdate the asetkey man page for rxkad-k5
Ben Kaduk [Fri, 12 Jul 2013 16:43:57 +0000]
Update the asetkey man page for rxkad-k5

Also add the usage for the six-argument form while here.

Update some generic text to account for the existence of rxkad-k5,
and mention that the Update Server is not the only thing which can copy
around KeyFiles.  Give an example of the seven-argument form's usage for

7 years agoUse the string form of key types in asetkey
Ben Kaduk [Fri, 12 Jul 2013 16:53:46 +0000]
Use the string form of key types in asetkey

Check for rxkad-k5 keys in the six-argument form and warn they are
unsupported.  Do sanity-checking on the type.

Change-Id: I571fcf88744dec271265e6a47f7d9831f867115b

7 years agoDerive DES/fcrypt session key from other key types
Chaskiel Grundman [Mon, 18 Mar 2013 01:58:47 +0000]
Derive DES/fcrypt session key from other key types

If a kerberos 5 ticket has a session key with a non-DES enctype,
use the NIST SP800-108 KDF in counter mode with HMAC_MD5 as the PRF to
construct a DES key to be used by rxkad.

To satisfy the requirements of the KDF, DES3 keys are first compressed into a
168 bit form by reversing the RFC3961 random-to-key algorithm

Windows has three additional places to get tokens, who knew?

Change-Id: I4dc8e83a641f9892b31c109fb9025251de3dcb27

7 years agoKrb5 ticket support for server-to-server and localauth
Chaskiel Grundman [Sun, 28 Apr 2013 18:27:47 +0000]
Krb5 ticket support for server-to-server and localauth

Create a tkt_MakeTicket5 that creates a native krb5 rxkad token with
a service key supported by the rfc3961 library (session keys must be
provided as DES)

Update GenericAuth to search for rxkad_krb5 keys and call tkt_MakeTicket5
if it finds any.

Change-Id: Ia9543fdcffcbf3ca899a003908662ff3daa8ee07

7 years agoAsetkey now handles afsconf_rxkad_krb5 keys too
Chaskiel Grundman [Thu, 11 Apr 2013 04:12:36 +0000]
Asetkey now handles afsconf_rxkad_krb5 keys too

afsconf_rxkad_krb5 keys can hold any kerberos enctype, not just des.
Allow asetkey to copy them into KeyFileExt and print them, too.

Change-Id: I11a7dc7770da58c8381accd7fa2164cdfcea43ae

7 years agoUse rfc3961 library to decrypt kerberos 5 tickets
Chaskiel Grundman [Sat, 6 Apr 2013 17:42:23 +0000]
Use rfc3961 library to decrypt kerberos 5 tickets

Decrypt tickets with non-des enctypes by calling out to the rfc3961 library.
This requires the security object to be given an enhanced get_key callback
that supports looking up keys by enctype.
Include a wrapper around afsconf_GetKeyByTypes so rxkad doesn't have
to know anything about libauth internals/interfaces

Change-Id: Id2b085fb41e2ed3576ec66b2914c03e78c0077ec

7 years agoUpdate the WiX installer to know about afsrfc3961.dll
Ben Kaduk [Wed, 29 May 2013 02:07:06 +0000]
Update the WiX installer to know about afsrfc3961.dll