commit 9e1cf2688efc25ae10e17b3d3fb4c15d5907ecfb Author: Stephan Wiesand Date: Thu Feb 26 10:13:50 2015 +0100 Update CellServDB to 20150119 snapshot Update all remaining copies of CellServDB in the tree, and make the Red Hat packaging use it by default too. Reviewed-on: http://gerrit.openafs.org/11764 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk (cherry picked from commit 8cb4a42496f71c3d47ebe30a96ec33478e203c82) Change-Id: I77854bb86ae0d17c4094705e80586b53ba504956 Reviewed-on: http://gerrit.openafs.org/11767 Reviewed-by: Chas Williams - CONTRACTOR Reviewed-by: Stephan Wiesand Tested-by: Stephan Wiesand commit 8317f21bec74f9816a0dd757d60a6954e17f0946 Author: Stephan Wiesand Date: Wed Feb 25 16:35:12 2015 +0100 Make OpenAFS 1.6.11 Update version strings and NEWS for release 1.6.11 Change-Id: I43770a355adc551b1bbd42ac3abc6b649b600532 Reviewed-on: http://gerrit.openafs.org/11762 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk Reviewed-by: Jeffrey Altman Reviewed-by: Stephan Wiesand commit 617d424c6ce451445e93962a59c4880edc8502b9 Author: Stephan Wiesand Date: Wed Feb 4 14:24:02 2015 +0100 Make OpenAFS 1.6.11pre2 prerelease for 1.6.11 Change-Id: I5418881f003b6cb1a74fad2397cd5d2c67613181 Reviewed-on: http://gerrit.openafs.org/11709 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk Reviewed-by: Stephan Wiesand commit 1fbe3cd4841aef35b7e2798769504ee85fc6851d Author: Stephan Wiesand Date: Tue Feb 17 15:34:33 2015 +0100 Document --enable-linux-d_splice_alias-extra-iput Even though we hope no one will actually ever need to use it, explain this configure switch in the same place as the others. Reviewed-on: http://gerrit.openafs.org/11749 Tested-by: BuildBot Reviewed-by: Chas Williams - CONTRACTOR Reviewed-by: Perry Ruiter Reviewed-by: Daria Brashear (cherry picked from commit e02b852f05c0927d48b6467872378bae99df2760) Change-Id: I4f7e42730afab2387d343880acc81d28b70ef5e9 Reviewed-on: http://gerrit.openafs.org/11752 Reviewed-by: Daria Brashear Tested-by: Daria Brashear Reviewed-by: Stephan Wiesand commit 8f07914acee06c509eca3435635bf5247fe6bf33 Author: Stephan Wiesand Date: Fri Feb 13 14:50:44 2015 +0100 Update NEWS for 1.6.11pre2 Preliminary release notes for OpenAFS 1.6.11 Change-Id: I5f23fcbe3ba8520ca4789984c26f84f966f70ff9 Reviewed-on: http://gerrit.openafs.org/11744 Tested-by: BuildBot Reviewed-by: Chas Williams - CONTRACTOR Reviewed-by: Perry Ruiter Reviewed-by: Stephan Wiesand commit 8f4823934bbad984c5cc2961e4f6fc410afb7535 Author: Andrew Deason Date: Wed Feb 4 10:25:38 2015 -0600 rx: Zero unitialized uio structs We use some uio structures that were allocated on the stack, but we only initialize them by initializing individual fields. On some platforms (Solaris is one known example, but probably not the only one), there are additional fields we do not initialize. Since we cannot be certain of what any additional fields there may be, just zero the whole thing. This is basically the same change as I0eae0b49a70aee19f3a9ec118b03cfb3a6bd03a3, but in the rx subtree. Reviewed-on: http://gerrit.openafs.org/11711 Tested-by: Andrew Deason Tested-by: BuildBot Reviewed-by: Perry Ruiter Reviewed-by: Jeffrey Altman Reviewed-by: Daria Brashear (cherry picked from commit a762e6871ad6837ee126cec9e63d99388b4bf119) Change-Id: Ie6a2cce500d6a0a7a09c305296f4b34d122d3108 Reviewed-on: http://gerrit.openafs.org/11714 Tested-by: BuildBot Tested-by: Andrew Deason Reviewed-by: Perry Ruiter Reviewed-by: Benjamin Kaduk Reviewed-by: Chas Williams - CONTRACTOR Reviewed-by: Stephan Wiesand commit a2603d4dd02194a05a550a5759970515b9aa2f08 Author: Marc Dionne Date: Thu Dec 18 08:43:22 2014 -0500 Linux: d_splice_alias may drop inode reference on error d_splice_alias now drops the inode reference on error, so we need to grab an extra one to make sure that the inode doesn't go away, and release it when done if there was no error. For kernels that may not drop the reference, provide an additional iput() within an ifdef. This could be hooked up to a configure option to allow building a module for a kernel that is known not to drop the reference on error. That hook is not provided here. Affected kernels should be the early 3.17 ones (3.17 - 3.17.2); 3.16 and older kernels should not return errors here. [kaduk@mit.edu add configure option to control behavior, which is mandatory on non-buildbot linux systems] Reviewed-on: http://gerrit.openafs.org/11643 Tested-by: BuildBot Reviewed-by: Michael Laß Reviewed-by: Jeffrey Altman (cherry picked from commit 15260c7fdc5ac8fe9fb1797c8e383c665e9e0ccd) Change-Id: I288eb66c38386fcd6bae0da111d97e211cc5c995 Reviewed-on: http://gerrit.openafs.org/11694 Tested-by: BuildBot Reviewed-by: Stephan Wiesand commit 3995ad443eca54542651003d4fc5a7e594833bad Author: Andrew Deason Date: Fri Jan 30 13:29:57 2015 -0600 afs: Zero uninitialized uio structs In several places in the code, we allocate a 'struct uio' on the stack, or allocate one from non-zeroed memory. In most of these places, we initialize the structure by assigning individual fields to certain values. However, this leaves any remaining fields assigned to random garbage, if there are any additional fields in the struct uio that we don't know about. One such platform is Solaris, which has a field called uio_extflg, which exists in Solaris 11, Solaris 10, and possibly further back. One of the flags defined for this field in Solaris 11 is UIO_XUIO, which indicates that the structure is actually an xuio_t, which is larger than a normal uio_t and contains additional fields. So when we allocate a uio on the stack without initializing it, it can randomly appear to be an xuio_t, depending on what garbage was on the stack at the time. An xuio_t is a kind of extensible structure, which is used for things like async I/O or DMA, that kind of thing. One of the places we make use of such a uio_t is in afs_ustrategy, which we go through for cache reads and writes on most Unix platforms (but not Linux). When handling a read (reading from the disk cache into a mapped page), a copy of our stack-allocated uio eventually gets passed to VOP_READ. So VOP_READ for the cache filesystem will randomly interpret our uio_t as an xuio_t. In many scenarios, this (amazingly) does not cause any problems, since generally, Solaris code will not notice if something is flagged as an xuio_t, unless it is specifically written to handle specific xuio_t types. ZFS is one of the apparent few filesystem implementations that can handle xuio_t's, and will detect and specially handle a UIOTYPE_ZEROCOPY xuio_t differently than a regular uio_t. If ZFS gets a UIOTYPE_ZEROCOPY xuio_t, it appears to ignore the uio buffers passed in, and supplies its own buffers from its cache. This means that our VOP_READ request will return success, and act like it serviced the read just fine. However, the actual buffer that we passed in will remain untouched, and so we will return the page to the VFS filled with garbage data. The way this typically manifests is that seemingly random pages will contain random data. This seems to happen very rarely, though it may not always be obvious what is going on when this occurs. It is also worth noting that the above description on Solaris only happens with Solaris 11 and newer, and only with a ZFS disk cache. Anything older than Solaris 11 does not have the xuio_t framework (though other uio_extflg values can cause performance degradations), and all known non-ZFS local disk filesystems do not interpret special xuio_t structures (networked filesystems might have xuio_t handling, but they shouldn't be used for a cache). Bugs similar to this may also exist on other Unix clients, but at least this specific scenario should not occur on Linux (since we don't use afs_ustrategy), and newer Darwin (since we get a uio allocated for us). To fix this, zero out the entire uio structure before we use it, for all instances where we allocate a uio from the stack or from non-zeroed memory. Also zero out the accompanying iovec in many places, just to be safe. Some of these may not actually need to be zeroed (since we do actually initialize the whole thing, or a platform doesn't have any additional unknown uio fields), but it seems worthwhile to err on the side of caution. Thanks to Oracle for their assistance on this issue, and thanks to the organization experiencing this issue for their patience and persistence. 1.6 note: This differs noticeably from the master commit in two places: - src/afs/NBSD/osi_vnodeops.c: On master there is no stack-allocated uio struct here. - src/afs/VNOPS/afs_vnop_write.c and afs_vnop_read.c: On master, these code paths are structured quite differently, and are handled in afs_osi_uio.c instead. Reviewed-on: http://gerrit.openafs.org/11705 Tested-by: BuildBot Reviewed-by: Perry Ruiter Reviewed-by: Daria Brashear (cherry picked from commit 5ef1de5eddccce0e7b135bb9ed4decaa62fc19ce) Change-Id: I8dbf60637774dff81ff839ccd78f58b3b1e85c5b Reviewed-on: http://gerrit.openafs.org/11713 Reviewed-by: Perry Ruiter Tested-by: BuildBot Reviewed-by: Jeffrey Altman Reviewed-by: Stephan Wiesand commit 2108273154d0a90da4b754dfb9afb92168f40d94 Author: Andrew Deason Date: Fri Jan 30 13:08:19 2015 -0600 SOLARIS: Avoid uninitialized caller_context_t Currently we pass a caller_context_t* to some of Solaris' VFS functions (VOP_SETATTR, VOP_READ, VOP_WRITE, VOP_RWLOCK, VOP_RWUNLOCK), but the pointer we pass is to uninitialized memory. This code was added in commit 51d76681, and this particular argument is mentioned in , where the author doesn't really know what the argument is for. Over 10 years later, it's still not obvious what this argument does, since I cannot find any documentation for it. However, browsing publicly-available Illumos/OpenSolaris source suggests this is used for things like non-blocking operations for network filesystems, and is only interpreted by certain filesystems in certain codepaths. In any case, it's clear that we're not supposed to be passing in an uninitialized structure, since the struct has actual members that are sometimes interpreted by lower levels. Other callers in Illumos/OpenSolaris source seem to just pass NULL here if they don't need any special behavior. So, just pass NULL. I am not aware of any issues caused by passing in this uninitialized struct, and browsing Illumos source and discussing the issue with Oracle engineers suggest there would currently not be any issues with the cache filesystems we would be using. However, it's always possible that issues could arise from this in the future, or there are issues we don't know about. Any such issues would almost certainly appear to be non-deterministic and be a nightmare to track down. So just pass NULL, to avoid the potential issues. Reviewed-on: http://gerrit.openafs.org/11704 Reviewed-by: Perry Ruiter Tested-by: BuildBot Reviewed-by: Daria Brashear (cherry picked from commit b9647ac1062509d6a3997ca575ab1542d04677a2) Change-Id: I5d247cfa6ada3773d20e3938957dcc31c8664bb2 Reviewed-on: http://gerrit.openafs.org/11712 Reviewed-by: Perry Ruiter Reviewed-by: Andrew Deason Tested-by: BuildBot Reviewed-by: Benjamin Kaduk Reviewed-by: Jeffrey Altman Reviewed-by: Stephan Wiesand commit c9cd05263b478d116e9c240953827e34fe2559b4 Author: Jeffrey Hutzelman Date: Wed Jun 12 16:22:36 2013 -0400 libafs/LINUX: avoid leaks due to corrupt dir When a corrupt directory is discovered, scanning stops immediately and readdir returns ENOENT. Currently, the vcache lock is unlocked and the dcache containing the directory is released, but that's not enough. It's also necessary to unlock the dcache, on which we hold a read lock, and to clear the vcache state which records an in-progress readdir. Reviewed-on: http://gerrit.openafs.org/9971 Tested-by: BuildBot Reviewed-by: Derrick Brashear (cherry picked from commit a2bfa0e853fb4954fd06a00ea6fbc55c39e76b8a) Change-Id: Id648822cd45087e5c0d320e8cfdcd6659bb33559 Reviewed-on: http://gerrit.openafs.org/11707 Reviewed-by: Perry Ruiter Reviewed-by: Daria Brashear Reviewed-by: Benjamin Kaduk Tested-by: BuildBot Reviewed-by: Stephan Wiesand commit c98fb960b9d9a4cab37bec7fa341f01dad60d14e Author: Andrew Deason Date: Mon Dec 1 10:23:23 2014 -0600 LINUX: Avoid mvid NULL deref in check_bad_parent check_bad_parent dereferences vcp->mvid, assuming it is not NULL (vcp is a root vcache here, so mvid refers to the parent fid). However, in some situations, vcp->mvid can be NULL. When we first afs_GetVCache the fid, we try to set mvid by setting mvid to the 'dotdot' structure in the volume struct. But we get that volume struct from afs_GetVolume, which can fail (at the very least, this can fail on network failure when looking up vldb information). If it fails, then we do not set the mvid parent. On future lookups for the fid, afs_GetVCache will return early for a fastpath, if the vcache is already in memory. So, mvid will never get set in such a situation. We also set the mvid parent fid in afs_lookup if we resolved a mountpoint to the root vcache. However, this is skipped if CMValid is not set on the vcache, so if CMValid is cleared right after resolving the mountpoint (say, perhaps done by some other thread e.g. a callback break or other reasons), then the mvid parent fid will not be set. To avoid crashing in these situations, if vcp->mvid is NULL in check_bad_parent, don't check the mvid, and assume it does not match (since we don't know what it is). This is a 1.6-only change. On the master branch, the problem is addressed by commit 69e84bd8a2ccc6065c3a06b7239c855207b92e4d . Change-Id: I3550cf5a01811ede17d74770161326667a6e8628 Reviewed-on: http://gerrit.openafs.org/11616 Tested-by: BuildBot Reviewed-by: Chas Williams - CONTRACTOR Reviewed-by: Perry Ruiter Reviewed-by: Stephan Wiesand commit 50b28a4326f6f5868369b84dab431f96778787b6 Author: Antoine Verheijen Date: Wed May 7 14:57:26 2014 -0600 OpenBSD: Add support for OpenBSD 5.4 Add param header files and other config info to provide support for OpenBSD 5.4. Reviewed-on: http://gerrit.openafs.org/11130 Tested-by: BuildBot Reviewed-by: Chas Williams - CONTRACTOR Reviewed-by: D Brashear (cherry picked from commit e1d0342326d11a14e1fb0075fb62cc6be9389b97) Change-Id: Ibdde973cf2a542fc89eba025b7210f8b0c843b95 Reviewed-on: http://gerrit.openafs.org/11700 Reviewed-by: Chas Williams - CONTRACTOR Reviewed-by: Benjamin Kaduk Tested-by: BuildBot commit 3da7b86c4ac998640b0b7ffd0e01613449d72e30 Author: Marc Dionne Date: Mon Jan 5 07:17:14 2015 -0500 Linux 3.19: struct nameidata becomes opaque With kernel 3.19 struct nameidata becomes opaque. As a result we cannot rely on STRUCT_NAMEIDATA_HAS_PATH being true for new kernels. Rework the conditions here so that STRUCT_NAMEIDATA_HAS_PATH is only tested when we're using a nameidata structure and the result matters. Also modify a configure test to use a nameidata pointer instead of an actual structure. Reviewed-on: http://gerrit.openafs.org/11648 Reviewed-by: Daria Brashear Tested-by: BuildBot (cherry picked from commit 72e22eb00f641f137f7dbe4195d6d82f4a8addc9) Change-Id: Ia794d9006a054d16a3b9e5b8ced55c798244d4c7 Reviewed-on: http://gerrit.openafs.org/11662 Reviewed-by: Chas Williams - CONTRACTOR Tested-by: BuildBot Reviewed-by: Daria Brashear Reviewed-by: Stephan Wiesand commit 78e8cce68d11e895140b0b03894ffdd62699ffbc Author: Marc Dionne Date: Mon Jan 5 07:13:37 2015 -0500 Linux 3.19: Use mgs_iter in struct msghdr struct msghdr gets msg_iov replaced by msg_iter. Add a configure test and adjust the affected code. Reviewed-on: http://gerrit.openafs.org/11647 Reviewed-by: Daria Brashear Tested-by: BuildBot (cherry picked from commit ec9a7c2db833efacfd0692c658c2d38ed9f852ba) Change-Id: I9d873626d8997922aacf67a5a9ce7621ed904faa Reviewed-on: http://gerrit.openafs.org/11661 Reviewed-by: Chas Williams - CONTRACTOR Tested-by: BuildBot Reviewed-by: Daria Brashear Reviewed-by: Stephan Wiesand commit 7ba61dfa6cedc4e6e106bd2079e564e554720d7e Author: Marc Dionne Date: Mon Jan 5 07:03:16 2015 -0500 Linux 3.19: No more f_dentry Back in kernel 2.6 .20 struct file lost its f_dentry field which was replaced by f_path.To ease transition f_dentry was defined as f_dpath.dentry in the same header.This define finally gets removed with kernel 3.19. Keep using f_dentry in the code, but add a configure test for the presence of f_path and the absence of the f_dentry macro so we can add it if its missing. Change - Id:I8e8a7e4d3ddd861018de50af1eb7315e730ad529 Reviewed-on: http://gerrit.openafs.org/11646 Reviewed-by: Daria Brashear Tested-by: BuildBot (cherry picked from commit f9ca302b7a10ffc36f2439e068333ab147791c5a) Change-Id: I179bf2fbc22e824e40c60c59e5d223d49343e7a5 Reviewed-on: http://gerrit.openafs.org/11660 Reviewed-by: Chas Williams - CONTRACTOR Tested-by: BuildBot Reviewed-by: Daria Brashear Reviewed-by: Stephan Wiesand commit 860764da5ee2e48a2c3f7552fad1766e19eae47f Author: Marc Dionne Date: Thu Dec 18 07:13:46 2014 -0500 Linux: d_alias becomes d_u.d_alias The fields in struct dentry are re-arranged so that d_alias shares space wth d_rcu inside the d_u union. Some references need to change from d_alias to d_u.d_alias. The kernel change was introduced for 3.19 but was also backported to the 3.18 stable series in 3.18.1, so this commit is required for 3.19 and current 3.18 kernels. Reviewed-on: http://gerrit.openafs.org/11642 Reviewed-by: Anders Kaseorg Reviewed-by: Michael Laß Reviewed-by: Daria Brashear Tested-by: BuildBot (cherry picked from commit d6f29679098aff171e69511823b340ccf28e5c31) Change-Id: Ifb6199aa7fa922e64540d9fad1d2d79facbb9761 Reviewed-on: http://gerrit.openafs.org/11659 Reviewed-by: Chas Williams - CONTRACTOR Tested-by: BuildBot Reviewed-by: Daria Brashear Reviewed-by: Stephan Wiesand commit a6013738362f4d1487ca57282b2428e3ba962720 Author: Marc Dionne Date: Thu Dec 18 06:57:22 2014 -0500 Linux: Move code to reset the root to afs/LINUX Move the Linux specific bit of code to reset the root to afs/LINUX platform specific files. Things that play with the Linux vfs internals should not be exposed here. No functional change, but this helps cleanup some ifdef mess. Reviewed-on: http://gerrit.openafs.org/11641 Tested-by: BuildBot Reviewed-by: Michael Laß Reviewed-by: Daria Brashear (cherry picked from commit 6ca324e565c34d9d04f3c553b7d0febe675ae538) Change-Id: I82803669dd34d7abeb29040fbb38ec2f000f2601 Reviewed-on: http://gerrit.openafs.org/11658 Tested-by: BuildBot Reviewed-by: Chas Williams - CONTRACTOR Reviewed-by: Daria Brashear Reviewed-by: Stephan Wiesand commit fba39040435afe63b0737945e2269375107fc686 Author: Andrew Deason Date: Sun Sep 14 14:10:11 2014 -0500 afs: Fix some afs_conn overcounts The usual pattern of using afs_Conn looks like this: do { tc = afs_Conn(...); if (tc) { code = /* ... */ } else { code = -1; } } while (afs_Analyze(...)); The afs_Analyze call, amongst other things, puts back the reference to the connection obtained from afs_Conn. If anything inside the do/while block exits that block without calling afs_Analyze or afs_PutConn, we will leak a reference to the conn. A few places currently do this, by jumping out of the loop with 'goto's. Specifically, in afs_dcache.c and afs_bypasscache.c. These locations currently leak references to our connection object (and to the underlying Rx connection object), which can cause problems over time. Specifically, this can cause a panic when the refcount overflows and becomes negative, causing a panic message that looks like: afs_PutConn: refcount imbalance 0xd34db33f -32768 To avoid this, make sure we afs_PutConn in these cases where we 'goto' out of the afs_Conn/afs_Analyze loop. Perhaps ideally we should cause afs_Analyze itself to be called in these situations, but for now just fix the problem with the least amount of impact possible. FIXES 131885 Reviewed-on: http://gerrit.openafs.org/11464 Reviewed-by: Benjamin Kaduk Reviewed-by: Daria Brashear Tested-by: Benjamin Kaduk Reviewed-by: Jeffrey Altman (cherry picked from commit 54c0ee608f4afd2b178c9b60eabfc3564293d996) Change-Id: Ic02ede4f8177863e8079b4a92c9bad492d6dc97b Reviewed-on: http://gerrit.openafs.org/11645 Reviewed-by: Benjamin Kaduk Reviewed-by: Daria Brashear Tested-by: BuildBot commit 013e8db33fbec8b5db4ac5a1ec94a7f5b2afbc45 Author: Marc Dionne Date: Fri Dec 19 10:11:53 2014 -0500 Unix CM: Avoid using stale DV in afs_StoreAllSegments It was reported in RT 131976 that on Linux some file corruption was observed when doing mmap writes to a file substantially larger than the cache size. osi_VM_StoreAllSegments drops locks and asks the OS to flush any dirty pages in the file 's mapping. This will trigger calls into our writepage op, and if the number of dirty cache chunks is too high (as will happen for a file larger than the cache size), afs_DoPartialWrite will recursively call afs_StoreAllSegments and some chunks will be written back to the server. After potentially doing this several times, control will return to the original afs_StoreAllSegments. At that point the data version that was stored before osi_VM_StoreAllSegments is no longer correct, leading to possible data corruption. Triggering this bug requires writing a file larger than the cache so that partial stores are done, and writing enough data to exceed the system's maximum dirty ratio and cause it to initiate writeback. To fix, just wait until after osi_VM_StoreAllSegments to look at and store the data version FIXES 131976 Reviewed-on: http://gerrit.openafs.org/11644 Tested-by: BuildBot Reviewed-by: Jeffrey Altman (cherry picked from commit b22c586bcdf785c489009ab96cbb572181cb9b09) Change-Id: I32a2f6f32d432fe4a2e21ebd4bb278a9d7e5499f Reviewed-on: http://gerrit.openafs.org/11656 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk Reviewed-by: Stephan Wiesand commit 7308aab9d911d87bde8a0a8a1e6120b83ea9bde6 Author: Andrew Deason Date: Tue Apr 26 14:32:25 2011 -0500 Fix --without-krb5 Currently, specifying --without-krb5 causes the AM_CONDITIONAL KRB5_USES_COM_ERR to not be defined, which makes configure refuse to run successfully. Fix this by forcing KRB5_USES_COM_ERR to always be false if we are running explicitly without krb5. Reviewed-on: http://gerrit.openafs.org/4576 Reviewed-by: Russ Allbery Tested-by: BuildBot (cherry picked from commit 9b405a7b082a8498fb6e918df73482ad05e251ea) Change-Id: I4e706a828e205cf649f09d770986bdfb27f984aa Reviewed-on: http://gerrit.openafs.org/11636 Tested-by: BuildBot Reviewed-by: Chas Williams - CONTRACTOR Reviewed-by: Daria Brashear commit 05f3c5254013b095c86a768c3107f475e99f9a56 Author: Stephan Wiesand Date: Thu Nov 6 14:40:17 2014 +0100 Make OpenAFS 1.6.11pre1 prerelease for 1.6.11 Change-Id: I2c8592ae5aa2d3d7e20283064305ce5b6fc74e60 Reviewed-on: http://gerrit.openafs.org/11593 Tested-by: BuildBot Reviewed-by: D Brashear Reviewed-by: Benjamin Kaduk Reviewed-by: Stephan Wiesand commit 28c943d4a45ebb89623a1e1c91a11fd2ac1c8e6e Author: Stephan Wiesand Date: Mon Nov 24 11:26:04 2014 +0100 Update NEWS for 1.6.11pre1 Preliminary release notes for OpenAFS 1.6.11 Change-Id: Ibbc9948cd4d8cfc87300f7a7276076af779d37b4 Reviewed-on: http://gerrit.openafs.org/11612 Tested-by: BuildBot Reviewed-by: D Brashear Reviewed-by: Andrew Deason Reviewed-by: Stephan Wiesand commit 694721b13d14fdd29b3c1ac781121f0d67bdbbb9 Author: Anders Kaseorg Date: Wed Sep 3 18:26:36 2014 -0400 Linux: Refine openafs-client.service dependencies Make sure that openafs-client is started after the network is online, and before services that need remote-fs at startup. Signed-off-by: Anders Kaseorg Reviewed-on: http://gerrit.openafs.org/11441 Reviewed-by: Chaskiel Grundman Tested-by: BuildBot Reviewed-by: Chas Williams - CONTRACTOR Reviewed-by: Jeffrey Altman (cherry picked from commit cadaea4f86427c4dc74f56fc66707e8cfb0166cb) Change-Id: I42aea5dff364e1005808b6ae926f6cf1bf2e0d61 Reviewed-on: http://gerrit.openafs.org/11534 Tested-by: BuildBot Reviewed-by: Chas Williams - CONTRACTOR Reviewed-by: Benjamin Kaduk Reviewed-by: Stephan Wiesand commit cdb1bb0b29d1aa896a57619cf8f87aabbe798193 Author: Benjamin Kaduk Date: Wed Aug 27 12:23:20 2014 -0400 Appease compile_et for objdir builds The argument we pass to -p needs to be in the source tree, not the object tree -- compile_et will not find the input files it wants in the objdir tree. For tbudb we can do this as is done on master, by just including it in the local variable BUDB, but for tptserver and tvlserver that is a rather invasive change. This fixes the build with a separate objdir, which was broken by commit 7c451fab11b65dd5e2860715b939e5de33c7645e. Change-Id: If90f170ef3777a9987a0ba91747041abb89b2b65 Reviewed-on: http://gerrit.openafs.org/11435 Tested-by: BuildBot Reviewed-by: D Brashear Reviewed-by: Benjamin Kaduk Reviewed-by: Stephan Wiesand commit e51d3b13c2b208efe72b584b532a28444633feff Author: Benjamin Kaduk Date: Thu Oct 30 19:51:29 2014 -0400 Build fix for recent FreeBSD -current r273707 added a flags argument to syscall_register(), so add the appropriate version check in param.generic_fbsd.h and ues that in the main code. Reviewed-on: http://gerrit.openafs.org/11565 Tested-by: Benjamin Kaduk Reviewed-by: D Brashear (cherry picked from commit f39dd54e11dff5e2b4da3eec419ae7c0825c210f) Note that the 1.6 branch does not have param.generic_fbsd.h, so the patch was modified for backport to just use AFS_FBSD110_ENV as the conditional. Change-Id: Id2934d83940caff4f64c2a7f2187b0eca5881c8f Reviewed-on: http://gerrit.openafs.org/11610 Tested-by: BuildBot Reviewed-by: D Brashear Reviewed-by: Benjamin Kaduk Reviewed-by: Stephan Wiesand commit 4e31fa4f6de614e07fbd5faf17d9639f42cab8cb Author: Benjamin Kaduk Date: Wed Nov 19 14:14:07 2014 -0500 Update CellServDB to 20141117 snapshot This should be all the locations we keep it in-tree. Reviewed-on: http://gerrit.openafs.org/11607 Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman (cherry picked from commit ce0cad182cddd21ccdebbf05a3e2379c7fcbe8fe) Change-Id: If63c9540beb81485d3e0c2934096f4d0aaee12ad Reviewed-on: http://gerrit.openafs.org/11608 Tested-by: BuildBot Reviewed-by: D Brashear Reviewed-by: Benjamin Kaduk Reviewed-by: Stephan Wiesand commit 610ed430a1a8dd8967f19273a7dcc0deaf016dd0 Author: Christer Grafström Date: Wed Oct 29 08:05:06 2014 +0100 Packaging support for MacOS X 10.10 "Yosemite" This is just the packaging part of the patch submitted in the RT ticket. The configuration part is in the preceding change. FIXES 131946 Reviewed-on: http://gerrit.openafs.org/11561 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk Reviewed-by: D Brashear (cherry picked from commit 8f630226f6f1f73a4d816b72caab3bb1e4620312) Change-Id: Iea5a295107350e7080278b914badb8b33a5cbc2b Reviewed-on: http://gerrit.openafs.org/11572 Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Stephan Wiesand commit 78bf372b9067f1ac12f2fd0dd9aac81aea9b2df2 Author: Michael Meffie Date: Fri Oct 31 23:45:13 2014 -0400 fix whitespace errors in acinclude.m4 Use tabs instead of spaces in the sysname lookup case statement for the macos cases. Reviewed-on: http://gerrit.openafs.org/11566 Reviewed-by: D Brashear Reviewed-by: Benjamin Kaduk Tested-by: BuildBot Reviewed-by: Jeffrey Altman (cherry picked from commit 7ae5b73a90940fe693fd5a726aa31408bd7aec39) Change-Id: I2860cd835242f0972b8795f2f7fedcb012aa18ea Reviewed-on: http://gerrit.openafs.org/11611 Tested-by: BuildBot Reviewed-by: Stephan Wiesand commit 2ef14c90aa68089acab98819c30f052cb982cf4b Author: Christer Grafström Date: Wed Oct 29 07:56:35 2014 +0100 Add support for configuration of MacOS 10.10 "Yosemite" This is just the configuration part of the patch submitted in the RT ticket. The packaging part will will follow in the next change. FIXES 131946 Reviewed-on: http://gerrit.openafs.org/11560 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk Reviewed-by: D Brashear (cherry picked from commit 4109785a891d802194ad11edb600a61de316d262) Change-Id: I5800a89ef06bfad31ee284637fc0685b82e9693f Reviewed-on: http://gerrit.openafs.org/11571 Reviewed-by: Andrew Deason Tested-by: Stephan Wiesand Reviewed-by: Stephan Wiesand commit 9ff1cd92d023f9a949b499891f552b41cb0c52e4 Author: Andrew Deason Date: Wed Nov 5 10:22:00 2014 -0600 LINUX: Avoid check for key_type.match existence Commit b5de4a9f removed our key_type 'match' function for kernels that do not have such a 'match' function pointer. However, this added a configure test where we are supposed to fail for the "new" behavior, which is discouraged. This causes an actual problem, because this test will fail on at least RHEL5, due to arguably unrelated reasons (the header file for the relevant struct is in key.h instead of key-type.h). And so, in that situation we avoid defining a 'match' function callback, meaning our 'match' function callback is NULL, which causes a panic when we try to actually look up keys for a PAG. To fix this, transform the 'match' config test into one where we succeed for the "new" behavior. We do this by testing for the existence of the new functionality that replaced the old 'match' function, which is the match_preparse function (specifically, the 'cmp' field in the structure accepted by match_preparse). This should cause unrelated compilation errors to cause us to revert to the "old" behavior instead of the "new" behavior. At worst, this should cause build issues if we get the config test wrong (since we will try to use the 'match' function definition that does not exist), instead of panicing at runtime. Note that while we test for key_type.match_preparse, we don't actually use that function, since our 'match' functionality is the same as the default behavior (according to b5de4a9f). So, we can avoid defining any such function for newer kernels. Thanks to Stephan Wiesand for bisecting this issue. Reviewed-on: http://gerrit.openafs.org/11589 Reviewed-by: Marc Dionne Reviewed-by: Stephan Wiesand Tested-by: BuildBot Reviewed-by: Jeffrey Altman (cherry picked from commit a9a3cb2efff7e6c020be4687b004d157bc070ac6) Change-Id: I59f40258c5ea35a59681f436095922d111e344f6 Reviewed-on: http://gerrit.openafs.org/11595 Tested-by: Anders Kaseorg Reviewed-by: Anders Kaseorg Tested-by: BuildBot Reviewed-by: Marc Dionne Reviewed-by: Benjamin Kaduk Reviewed-by: Andrew Deason Reviewed-by: Stephan Wiesand commit 9d653bd966b47223eaaf6f8a5d983b6634bdf0d5 Author: Marc Dionne Date: Thu Oct 23 11:27:55 2014 -0400 Linux 3.18: key_type no longer has a match op Structure key_type no longer has a match op, and overriding the default matching has to be done differently. Our current match op doesn't do anything special so there's no need to try to override the defaults; just remove the assignment of .match and the associated function. Reviewed-on: http://gerrit.openafs.org/11563 Tested-by: BuildBot Reviewed-by: D Brashear (cherry picked from commit b5de4a9f42bb83ae03f2f647b11a1200a502d013) Change-Id: I7baca4a7f02eac45671e1e9ebf48534cdd5830be Reviewed-on: http://gerrit.openafs.org/11570 Reviewed-by: Anders Kaseorg Tested-by: BuildBot Reviewed-by: Benjamin Kaduk Reviewed-by: Andrew Deason Reviewed-by: Stephan Wiesand commit b3527c802ad82cdecc0df6dfa42b228710ad5fd4 Author: Marc Dionne Date: Thu Oct 23 11:12:57 2014 -0400 Linux 3.18: d_invalidate can no longer return an error d_invalidate is now defined as void and does not have a return value to check. Reviewed-on: http://gerrit.openafs.org/11562 Tested-by: BuildBot Reviewed-by: D Brashear (cherry picked from commit a42f01d5ebb13da575b3123800ee6990743155ab) Change-Id: I8542404771c4a7962238efd9a53d7dfcf4011c96 Reviewed-on: http://gerrit.openafs.org/11569 Reviewed-by: Anders Kaseorg Tested-by: BuildBot Reviewed-by: Benjamin Kaduk Reviewed-by: Andrew Deason Reviewed-by: Stephan Wiesand commit 2fd2c69257edff968ef24a1d903bd602817bbf01 Author: Andrew Deason Date: Tue Oct 28 00:10:56 2014 -0500 LINUX: Avoid d_revalidate failure on mtpt mismatch Currently, if afs_linux_dentry_revalidate is given an inode that corresponds to a mtpt vcache ('vcp'), it resolves the mtpt to its root dir if it's easy to do so (mvid and CMValid are set). Later on, we run afs_lookup to see if looking up our dentry's name returns the same vcache that we got; afs_lookup presumably will also resolve the mtpt if it's easy to do so. However, it is possible that afs_linux_dentry_revalidate and afs_lookup will make different decisions as to whether or not they resolve a mtpt to a dir. Specifically, if CMValid is cleared after afs_linux_dentry_revalidate checks for it, but before afs_lookup does, then afs_lookup will return a different vcache than afs_linux_dentry_revalidate is expecting, even though the relevant directory entry has not changed. That is, tvc is not equal to vcp, but tvc could be a mtpt that resolves to vcp, or vice versa. CMValid can be cleared by another thread at virtually any time, since this is cleared in some situations when we're not sure if the mtpt resolution is still valid (callbacks are broken, vldb cache entries expire, etc). afs_linux_dentry_revalidate interprets this situation to mean that the directory entry has changed, and so it eventually d_drop's the associated dentry. The way that this manifests to users is that a "fakestatted" mtpt can appear to be deleted effectively randomly, even when nothing has changed. This can be a problem because this causes the getcwd() syscall to return ENOENT when the working directory involves such an affected directory. To fix this situation, we just detect if afs_lookup returned either 'vcp' (our possibly-resolved vcache), or the original inode associated with the dentry we are revalidating. If the returned vcache matches either of these, then the entry is okay and we don't need to invalidate or drop anything. FIXES 131780 Reviewed-on: http://gerrit.openafs.org/11559 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk Tested-by: Anders Kaseorg Reviewed-by: Anders Kaseorg Reviewed-by: D Brashear (cherry picked from commit ba1cc838ab4a80b7a7787c441a79aca31d84808c) Change-Id: I3273cc15ebe7fd94f3127840fdc5316bd7458e7c Reviewed-on: http://gerrit.openafs.org/11568 Reviewed-by: Anders Kaseorg Tested-by: BuildBot Reviewed-by: Benjamin Kaduk Reviewed-by: Stephan Wiesand commit d3f0c37b796b02e05baf9d8270bd95d713d08b62 Author: Andrew Deason Date: Thu Jul 24 11:07:45 2014 -0500 LINUX: Check afs_lookup return code explicitly Checking if the returned vcache is NULL or not is a bit of an indirect way to check if an error occurred. Just check the return code itself, to make sure we notice if any kind of error is reported. Suggested by Chas Williams. Reviewed-on: http://gerrit.openafs.org/11321 Reviewed-by: Chas Williams - CONTRACTOR Tested-by: BuildBot Reviewed-by: D Brashear (cherry picked from commit 2edf5c0382385f898a017fd8e0e2429f8b2b3520) Change-Id: I7e123ab1cf88570a6b18e438e01409ed7804e014 Reviewed-on: http://gerrit.openafs.org/11558 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot Reviewed-by: Stephan Wiesand commit 663bdfcb16ab742ef12acca110f279b749f15586 Author: Marc Dionne Date: Thu Sep 25 07:52:12 2014 -0300 Linux 3.17: Deal with d_splice_alias errors In 3.17 the logic in d_splice_alias has changed. Of interest to us is the fact that it will now return an EIO error if it finds an existing connected directory for the dentry, where it would previously have added a new alias for it. As a result the end user can get EIO errors when accessing any file in a volume if the volume was first accessed through a different path (ex: RO path vs RW path). This commit just restores the old behaviour, adding the directory alias manually in the error case, which is what older versions of d_splice_alias used to do. Reviewed-on: http://gerrit.openafs.org/11492 Tested-by: BuildBot Reviewed-by: Perry Ruiter Reviewed-by: Andrew Deason Reviewed-by: D Brashear (cherry picked from commit 5815ee92a41cdcf105741d834042a5617dc4c219) Change-Id: Ie86009ede93255c85fcf640af14c598fe1e42ca9 Reviewed-on: http://gerrit.openafs.org/11550 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk Reviewed-by: Stephan Wiesand commit 75f36df74bb3c13aadb047163b93d6c24436f784 Author: Marc Dionne Date: Tue Sep 9 10:39:55 2014 -0300 Linux 3.17: No more typedef for ctl_table The typedef has been removed so we need to use the structure directly. Note that the API for register_sysctl_table has also changed with 3.17, but it reverted back to a form that existed before and the configure tests handle it correctly. Reviewed-on: http://gerrit.openafs.org/11455 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot Reviewed-by: Perry Ruiter Reviewed-by: Andrew Deason Reviewed-by: D Brashear (cherry picked from commit 6a23ca5b6e8bcaf881be7a4c50bfba72d001e6cd) Change-Id: Ifb8fc0b9b01d2578c65407608f0e1b3f3b254459 Reviewed-on: http://gerrit.openafs.org/11549 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk Reviewed-by: Stephan Wiesand commit 198a4c970ee3cce9dcf3c49fd178d3e1fc3c6c9b Author: Jeffrey Altman Date: Mon Oct 13 17:48:05 2014 -0400 aklog 1.6: make krb5_524 non-fatal for native K5 tokens The krb5_524_conv_principal() function should fail whenever the Kerberos v5 principal cannot safely be mapped onto a Kerberos v4 principal, and does fail on some Kerberos v5 principals used in real-world AFS deployments. Prior to this patchset a failure was treated as a fatal error that in turn prevents an AFS token from being generated or set into the cache manager. Prior to b1f9b4cb5dd295162ae51704310e9d6058008f0a the krb5_524_conv_principal() function wasn't used and a local client mapping was created. b1f9b4cb5dd295162ae51704310e9d6058008f0a replaced the local mapping with the krb5 function because the local mapping could be wrong and confusing. The krb5_524_conv_principal() function as applied to AFS tokens is just a local guess. How the username in the token is interpreted by the AFS server is up to the server. krb5_524_conv_principal() is only used for Krb5 native tokens. For Krb4 tokens the krb5_524_convert_creds() function is used to obtain both the Kerberos v4 ticket and the converted names from the KDC. Many organizations used the krb524d service to perform name translation. When the krb524d service is used, the name translation is performed by the KDC, so there is no local call to krb5_524_conv_principal() which might fail. As a result, disallowing the use of a native Krb5 token due to a failed local name translation is a needless loss of functionality; the local name translation is not an essential part of obtaining a token. This patchset modifies the behavior such that krb5_524_conv_principal() errors are non-fatal. 1. If -noprdb is not specified the error message is generated and a NULL username is used. 2. If the username is NULL the prdb lookup is disabled. 3. If the username is NULL the informational messages do not include a username. 4. If the username is NULL the username info provided to the cache manager in the token description is the nul string. This patchset is an openafs-stable-1_6_x specific version of the patch. The master version was submitted to http://gerrit.openafs.org/#change,11542 Credit to Ben Kaduk for assistance with the wording of this commit message. Change-Id: If12ae69394321fa7b7a182c9db95716bc66e489c Reviewed-on: http://gerrit.openafs.org/11538 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot Reviewed-by: Jeffrey Altman Reviewed-by: Stephan Wiesand commit e64daf49eb8ac240b76c4fd8b9f2fb4111793cb9 Author: D Brashear Date: Sat Oct 18 13:24:46 2014 -0400 shlibafsrpc: correct double export in symbol map afs_xdr_pointer was exported twice. remove one. 1.6-only fix. Change-Id: I55c6663340d0b87331f18b3d120d5184b567f5e1 Reviewed-on: http://gerrit.openafs.org/11551 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk Reviewed-by: Stephan Wiesand