.. | .. |
---|
16 | 16 | #include <linux/list.h> |
---|
17 | 17 | #include <linux/uidgid.h> |
---|
18 | 18 | #include <uapi/linux/nfs4.h> |
---|
| 19 | +#include <linux/sunrpc/msg_prot.h> |
---|
19 | 20 | |
---|
20 | 21 | enum nfs4_acl_whotype { |
---|
21 | 22 | NFS4_ACL_WHO_NAMED = 0, |
---|
.. | .. |
---|
37 | 38 | |
---|
38 | 39 | struct nfs4_acl { |
---|
39 | 40 | uint32_t naces; |
---|
40 | | - struct nfs4_ace aces[0]; |
---|
| 41 | + struct nfs4_ace aces[]; |
---|
41 | 42 | }; |
---|
42 | 43 | |
---|
43 | 44 | #define NFS4_MAXLABELLEN 2048 |
---|
.. | .. |
---|
149 | 150 | OP_WRITE_SAME = 70, |
---|
150 | 151 | OP_CLONE = 71, |
---|
151 | 152 | |
---|
| 153 | + /* xattr support (RFC8726) */ |
---|
| 154 | + OP_GETXATTR = 72, |
---|
| 155 | + OP_SETXATTR = 73, |
---|
| 156 | + OP_LISTXATTRS = 74, |
---|
| 157 | + OP_REMOVEXATTR = 75, |
---|
| 158 | + |
---|
152 | 159 | OP_ILLEGAL = 10044, |
---|
153 | 160 | }; |
---|
154 | 161 | |
---|
.. | .. |
---|
158 | 165 | #define FIRST_NFS4_OP OP_ACCESS |
---|
159 | 166 | #define LAST_NFS40_OP OP_RELEASE_LOCKOWNER |
---|
160 | 167 | #define LAST_NFS41_OP OP_RECLAIM_COMPLETE |
---|
161 | | -#define LAST_NFS42_OP OP_CLONE |
---|
| 168 | +#define LAST_NFS42_OP OP_REMOVEXATTR |
---|
162 | 169 | #define LAST_NFS4_OP LAST_NFS42_OP |
---|
163 | 170 | |
---|
164 | 171 | enum nfsstat4 { |
---|
.. | .. |
---|
279 | 286 | NFS4ERR_WRONG_LFS = 10092, |
---|
280 | 287 | NFS4ERR_BADLABEL = 10093, |
---|
281 | 288 | NFS4ERR_OFFLOAD_NO_REQS = 10094, |
---|
| 289 | + |
---|
| 290 | + /* xattr (RFC8276) */ |
---|
| 291 | + NFS4ERR_NOXATTR = 10095, |
---|
| 292 | + NFS4ERR_XATTR2BIG = 10096, |
---|
282 | 293 | }; |
---|
283 | 294 | |
---|
284 | 295 | static inline bool seqid_mutating_err(u32 err) |
---|
.. | .. |
---|
294 | 305 | case NFS4ERR_NOFILEHANDLE: |
---|
295 | 306 | case NFS4ERR_MOVED: |
---|
296 | 307 | return false; |
---|
297 | | - }; |
---|
| 308 | + } |
---|
298 | 309 | return true; |
---|
299 | 310 | } |
---|
300 | 311 | |
---|
.. | .. |
---|
451 | 462 | #define FATTR4_WORD2_CHANGE_ATTR_TYPE (1UL << 15) |
---|
452 | 463 | #define FATTR4_WORD2_SECURITY_LABEL (1UL << 16) |
---|
453 | 464 | #define FATTR4_WORD2_MODE_UMASK (1UL << 17) |
---|
| 465 | +#define FATTR4_WORD2_XATTR_SUPPORT (1UL << 18) |
---|
454 | 466 | |
---|
455 | 467 | /* MDS threshold bitmap bits */ |
---|
456 | 468 | #define THRESHOLD_RD (1UL << 0) |
---|
.. | .. |
---|
538 | 550 | NFSPROC4_CLNT_OFFLOAD_CANCEL, |
---|
539 | 551 | |
---|
540 | 552 | NFSPROC4_CLNT_LOOKUPP, |
---|
| 553 | + NFSPROC4_CLNT_LAYOUTERROR, |
---|
| 554 | + NFSPROC4_CLNT_COPY_NOTIFY, |
---|
| 555 | + |
---|
| 556 | + NFSPROC4_CLNT_GETXATTR, |
---|
| 557 | + NFSPROC4_CLNT_SETXATTR, |
---|
| 558 | + NFSPROC4_CLNT_LISTXATTRS, |
---|
| 559 | + NFSPROC4_CLNT_REMOVEXATTR, |
---|
| 560 | + NFSPROC4_CLNT_READ_PLUS, |
---|
541 | 561 | }; |
---|
542 | 562 | |
---|
543 | 563 | /* nfs41 types */ |
---|
.. | .. |
---|
659 | 679 | PNFS_UPDATE_LAYOUT_BLOCKED, |
---|
660 | 680 | PNFS_UPDATE_LAYOUT_INVALID_OPEN, |
---|
661 | 681 | PNFS_UPDATE_LAYOUT_SEND_LAYOUTGET, |
---|
| 682 | + PNFS_UPDATE_LAYOUT_EXIT, |
---|
662 | 683 | }; |
---|
663 | 684 | |
---|
664 | 685 | #define NFS4_OP_MAP_NUM_LONGS \ |
---|
.. | .. |
---|
672 | 693 | } u; |
---|
673 | 694 | }; |
---|
674 | 695 | |
---|
| 696 | +struct nfs42_netaddr { |
---|
| 697 | + char netid[RPCBIND_MAXNETIDLEN]; |
---|
| 698 | + char addr[RPCBIND_MAXUADDRLEN + 1]; |
---|
| 699 | + u32 netid_len; |
---|
| 700 | + u32 addr_len; |
---|
| 701 | +}; |
---|
| 702 | + |
---|
| 703 | +enum netloc_type4 { |
---|
| 704 | + NL4_NAME = 1, |
---|
| 705 | + NL4_URL = 2, |
---|
| 706 | + NL4_NETADDR = 3, |
---|
| 707 | +}; |
---|
| 708 | + |
---|
| 709 | +struct nl4_server { |
---|
| 710 | + enum netloc_type4 nl4_type; |
---|
| 711 | + union { |
---|
| 712 | + struct { /* NL4_NAME, NL4_URL */ |
---|
| 713 | + int nl4_str_sz; |
---|
| 714 | + char nl4_str[NFS4_OPAQUE_LIMIT + 1]; |
---|
| 715 | + }; |
---|
| 716 | + struct nfs42_netaddr nl4_addr; /* NL4_NETADDR */ |
---|
| 717 | + } u; |
---|
| 718 | +}; |
---|
| 719 | + |
---|
| 720 | +/* |
---|
| 721 | + * Options for setxattr. These match the flags for setxattr(2). |
---|
| 722 | + */ |
---|
| 723 | +enum nfs4_setxattr_options { |
---|
| 724 | + SETXATTR4_EITHER = 0, |
---|
| 725 | + SETXATTR4_CREATE = 1, |
---|
| 726 | + SETXATTR4_REPLACE = 2, |
---|
| 727 | +}; |
---|
675 | 728 | #endif |
---|