]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Linux: 3.2: Use set_nlink to update i_nlink
authorAnders Kaseorg <andersk@mit.edu>
Mon, 21 Nov 2011 00:00:00 +0000 (19:00 -0500)
committerDerrick Brashear <shadow@dementix.org>
Mon, 21 Nov 2011 12:58:59 +0000 (04:58 -0800)
As of v3.2-rc1~84^2~1, struct inode.i_nlink is now const to prevent
direct modification.

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>
(cherry picked from commit f1dd2d696fb9ab71b4192b156042e0c63019c58a)

Change-Id: I685aa6e8638e8fe864f1a6a7e428dfb6839ebcea
Reviewed-on: http://gerrit.openafs.org/6099
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
acinclude.m4
src/afs/LINUX/osi_vfsops.c
src/cf/linux-test4.m4

index c5cf9495eec8e0d548af5c6a8d044e077605da04..f09fbb2d332ed8b4bf86362c8fb28026516a5eb3 100644 (file)
@@ -943,6 +943,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
                 LINUX_REGISTER_SYSCTL_TABLE_NOFLAG
                 LINUX_HAVE_DCACHE_LOCK
                 LINUX_D_COUNT_IS_INT
+                LINUX_HAVE_SET_NLINK
 
                 dnl If we are guaranteed that keyrings will work - that is
                 dnl  a) The kernel has keyrings enabled
index 596d0644f09654cc3d4c7fc126354d3ee01004b6..d32720f5ccf2944c3874d33476ee3f8614e4cdeb 100644 (file)
@@ -439,7 +439,11 @@ void
 vattr2inode(struct inode *ip, struct vattr *vp)
 {
     ip->i_ino = vp->va_nodeid;
+#ifdef HAVE_SET_NLINK
+    set_nlink(ip, vp->va_nlink);
+#else
     ip->i_nlink = vp->va_nlink;
+#endif
     ip->i_blocks = vp->va_blocks;
 #ifdef STRUCT_INODE_HAS_I_BLKBITS
     ip->i_blkbits = AFS_BLKBITS;
index 3d3aa8f4b47fd0b85442d80818c20e285f86a4db..f10ea47996346d2889ed5f7f49eaa215732403e3 100644 (file)
@@ -618,3 +618,15 @@ AC_DEFUN([LINUX_DOP_D_DELETE_TAKES_CONST], [
                        [define if dentry.d_op->d_delete takes a const argument],
                        [-Werror])
 ])
+
+
+AC_DEFUN([LINUX_HAVE_SET_NLINK], [
+  AC_CHECK_LINUX_BUILD([for set_nlink],
+                       [ac_cv_linux_have_set_nlink],
+                       [#include <linux/fs.h>],
+                       [struct inode _inode;
+                       set_nlink(&_inode, 1);],
+                       [HAVE_SET_NLINK],
+                       [define if set_nlink exists],
+                       [-Werror])
+])