NFSv4: Enable attribute delegations
authorTrond Myklebust <trond.myklebust@primarydata.com>
Mon, 17 Jun 2024 01:21:28 +0000 (21:21 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Mon, 8 Jul 2024 17:47:25 +0000 (13:47 -0400)
If we see that the server supports attribute delegations, then request
them by setting the appropriate OPEN arguments.

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: Lance Shelton <lance.shelton@hammerspace.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
fs/nfs/nfs4proc.c

index 03835c8a180f59333d0d33d6fd2a29ebaf9d8bc5..1209ce22158ed10b91e828529e317a27320d3f3f 100644 (file)
@@ -1339,8 +1339,13 @@ nfs4_map_atomic_open_share(struct nfs_server *server,
        if (!(server->caps & NFS_CAP_ATOMIC_OPEN_V1))
                goto out;
        /* Want no delegation if we're using O_DIRECT */
-       if (openflags & O_DIRECT)
+       if (openflags & O_DIRECT) {
                res |= NFS4_SHARE_WANT_NO_DELEG;
+               goto out;
+       }
+       /* res |= NFS4_SHARE_WANT_NO_PREFERENCE; */
+       if (server->caps & NFS_CAP_DELEGTIME)
+               res |= NFS4_SHARE_WANT_DELEG_TIMESTAMPS;
 out:
        return res;
 }