]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Expand the type of nfs_fattr->valid
authorTrond Myklebust <trond.myklebust@primarydata.com>
Thu, 29 May 2025 10:45:45 +0000 (06:45 -0400)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Mon, 14 Jul 2025 22:20:02 +0000 (15:20 -0700)
We need to be able to track more than 32 attributes per inode.

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: Lance Shelton <lance.shelton@hammerspace.com>
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Link: https://lore.kernel.org/r/1e3405fca54efd0be7c91c1da77917b94f5dfcc4.1748515333.git.bcodding@redhat.com
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
fs/nfs/inode.c
include/linux/nfs_fs_sb.h
include/linux/nfs_xdr.h

index a2fa6bc4d74e37098be03649dbfff494b82e940a..17f5dcda2a00066dedca9f1cc0aa9d9caba0cfd0 100644 (file)
@@ -2209,7 +2209,7 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr)
        bool attr_changed = false;
        bool have_delegation;
 
-       dfprintk(VFS, "NFS: %s(%s/%lu fh_crc=0x%08x ct=%d info=0x%x)\n",
+       dfprintk(VFS, "NFS: %s(%s/%lu fh_crc=0x%08x ct=%d info=0x%llx)\n",
                        __func__, inode->i_sb->s_id, inode->i_ino,
                        nfs_display_fhandle_hash(NFS_FH(inode)),
                        atomic_read(&inode->i_count), fattr->valid);
index 63141320c2a8124d7d78859c2ae90a94eab60585..d7895eeccea39d7ab0770522a6af7a6f094147fb 100644 (file)
@@ -172,8 +172,8 @@ struct nfs_server {
 #define NFS_MOUNT_FORCE_RDIRPLUS       0x20000000
 #define NFS_MOUNT_NETUNREACH_FATAL     0x40000000
 
-       unsigned int            fattr_valid;    /* Valid attributes */
        unsigned int            caps;           /* server capabilities */
+       __u64                   fattr_valid;    /* Valid attributes */
        unsigned int            rsize;          /* read size */
        unsigned int            rpages;         /* read size (in pages) */
        unsigned int            wsize;          /* write size */
index 67f6632f723b45de166654dbcd000cf61454ba16..9cacbbd147876b6e75fd5047c10bef2b2200f500 100644 (file)
@@ -45,7 +45,7 @@ struct nfs4_threshold {
 };
 
 struct nfs_fattr {
-       unsigned int            valid;          /* which fields are valid */
+       __u64                   valid;          /* which fields are valid */
        umode_t                 mode;
        __u32                   nlink;
        kuid_t                  uid;
@@ -80,32 +80,32 @@ struct nfs_fattr {
        struct nfs4_label       *label;
 };
 
-#define NFS_ATTR_FATTR_TYPE            (1U << 0)
-#define NFS_ATTR_FATTR_MODE            (1U << 1)
-#define NFS_ATTR_FATTR_NLINK           (1U << 2)
-#define NFS_ATTR_FATTR_OWNER           (1U << 3)
-#define NFS_ATTR_FATTR_GROUP           (1U << 4)
-#define NFS_ATTR_FATTR_RDEV            (1U << 5)
-#define NFS_ATTR_FATTR_SIZE            (1U << 6)
-#define NFS_ATTR_FATTR_PRESIZE         (1U << 7)
-#define NFS_ATTR_FATTR_BLOCKS_USED     (1U << 8)
-#define NFS_ATTR_FATTR_SPACE_USED      (1U << 9)
-#define NFS_ATTR_FATTR_FSID            (1U << 10)
-#define NFS_ATTR_FATTR_FILEID          (1U << 11)
-#define NFS_ATTR_FATTR_ATIME           (1U << 12)
-#define NFS_ATTR_FATTR_MTIME           (1U << 13)
-#define NFS_ATTR_FATTR_CTIME           (1U << 14)
-#define NFS_ATTR_FATTR_PREMTIME                (1U << 15)
-#define NFS_ATTR_FATTR_PRECTIME                (1U << 16)
-#define NFS_ATTR_FATTR_CHANGE          (1U << 17)
-#define NFS_ATTR_FATTR_PRECHANGE       (1U << 18)
-#define NFS_ATTR_FATTR_V4_LOCATIONS    (1U << 19)
-#define NFS_ATTR_FATTR_V4_REFERRAL     (1U << 20)
-#define NFS_ATTR_FATTR_MOUNTPOINT      (1U << 21)
-#define NFS_ATTR_FATTR_MOUNTED_ON_FILEID (1U << 22)
-#define NFS_ATTR_FATTR_OWNER_NAME      (1U << 23)
-#define NFS_ATTR_FATTR_GROUP_NAME      (1U << 24)
-#define NFS_ATTR_FATTR_V4_SECURITY_LABEL (1U << 25)
+#define NFS_ATTR_FATTR_TYPE            BIT_ULL(0)
+#define NFS_ATTR_FATTR_MODE            BIT_ULL(1)
+#define NFS_ATTR_FATTR_NLINK           BIT_ULL(2)
+#define NFS_ATTR_FATTR_OWNER           BIT_ULL(3)
+#define NFS_ATTR_FATTR_GROUP           BIT_ULL(4)
+#define NFS_ATTR_FATTR_RDEV            BIT_ULL(5)
+#define NFS_ATTR_FATTR_SIZE            BIT_ULL(6)
+#define NFS_ATTR_FATTR_PRESIZE         BIT_ULL(7)
+#define NFS_ATTR_FATTR_BLOCKS_USED     BIT_ULL(8)
+#define NFS_ATTR_FATTR_SPACE_USED      BIT_ULL(9)
+#define NFS_ATTR_FATTR_FSID            BIT_ULL(10)
+#define NFS_ATTR_FATTR_FILEID          BIT_ULL(11)
+#define NFS_ATTR_FATTR_ATIME           BIT_ULL(12)
+#define NFS_ATTR_FATTR_MTIME           BIT_ULL(13)
+#define NFS_ATTR_FATTR_CTIME           BIT_ULL(14)
+#define NFS_ATTR_FATTR_PREMTIME                BIT_ULL(15)
+#define NFS_ATTR_FATTR_PRECTIME                BIT_ULL(16)
+#define NFS_ATTR_FATTR_CHANGE          BIT_ULL(17)
+#define NFS_ATTR_FATTR_PRECHANGE       BIT_ULL(18)
+#define NFS_ATTR_FATTR_V4_LOCATIONS    BIT_ULL(19)
+#define NFS_ATTR_FATTR_V4_REFERRAL     BIT_ULL(20)
+#define NFS_ATTR_FATTR_MOUNTPOINT      BIT_ULL(21)
+#define NFS_ATTR_FATTR_MOUNTED_ON_FILEID BIT_ULL(22)
+#define NFS_ATTR_FATTR_OWNER_NAME      BIT_ULL(23)
+#define NFS_ATTR_FATTR_GROUP_NAME      BIT_ULL(24)
+#define NFS_ATTR_FATTR_V4_SECURITY_LABEL BIT_ULL(25)
 
 #define NFS_ATTR_FATTR (NFS_ATTR_FATTR_TYPE \
                | NFS_ATTR_FATTR_MODE \