diff options
author | Benny Halevy <benny@tonian.com> | 2012-02-16 13:57:17 -0500 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2012-02-17 18:38:53 -0500 |
commit | d24433cdc91c0ed15938d2a6ee9e3e1b00fcfaa3 (patch) | |
tree | 7e8d0b0f71f9cc11bc5ac95694532f1759f30851 /fs/nfsd/nfs4xdr.c | |
parent | 03cfb42025a16dc45195dbdd6d368daaa8367429 (diff) |
nfsd41: implement NFS4_SHARE_WANT_NO_DELEG, NFS4_OPEN_DELEGATE_NONE_EXT, why_no_deleg
Respect client request for not getting a delegation in NFSv4.1
Appropriately return delegation "type" NFS4_OPEN_DELEGATE_NONE_EXT
and WND4_NOT_WANTED reason.
[nfsd41: add missing break when encoding op_why_no_deleg]
Signed-off-by: Benny Halevy <bhalevy@tonian.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/nfs4xdr.c')
-rw-r--r-- | fs/nfsd/nfs4xdr.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index a58f2064f479..f8fcddca0414 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c | |||
@@ -2849,6 +2849,20 @@ nfsd4_encode_open(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_op | |||
2849 | WRITE32(0); /* XXX: is NULL principal ok? */ | 2849 | WRITE32(0); /* XXX: is NULL principal ok? */ |
2850 | ADJUST_ARGS(); | 2850 | ADJUST_ARGS(); |
2851 | break; | 2851 | break; |
2852 | case NFS4_OPEN_DELEGATE_NONE_EXT: /* 4.1 */ | ||
2853 | switch (open->op_why_no_deleg) { | ||
2854 | case WND4_CONTENTION: | ||
2855 | case WND4_RESOURCE: | ||
2856 | RESERVE_SPACE(8); | ||
2857 | WRITE32(open->op_why_no_deleg); | ||
2858 | WRITE32(0); /* deleg signaling not supported yet */ | ||
2859 | break; | ||
2860 | default: | ||
2861 | RESERVE_SPACE(4); | ||
2862 | WRITE32(open->op_why_no_deleg); | ||
2863 | } | ||
2864 | ADJUST_ARGS(); | ||
2865 | break; | ||
2852 | default: | 2866 | default: |
2853 | BUG(); | 2867 | BUG(); |
2854 | } | 2868 | } |