Loading fs/nfs/nfs42xdr.c +68 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,9 @@ NFS42_WRITE_RES_SIZE + \ 1 /* cr_consecutive */ + \ 1 /* cr_synchronous */) #define encode_offload_cancel_maxsz (op_encode_hdr_maxsz + \ XDR_QUADLEN(NFS4_STATEID_SIZE)) #define decode_offload_cancel_maxsz (op_decode_hdr_maxsz) #define encode_deallocate_maxsz (op_encode_hdr_maxsz + \ encode_fallocate_maxsz) #define decode_deallocate_maxsz (op_decode_hdr_maxsz) Loading Loading @@ -75,6 +78,12 @@ decode_putfh_maxsz + \ decode_copy_maxsz + \ decode_commit_maxsz) #define NFS4_enc_offload_cancel_sz (compound_encode_hdr_maxsz + \ encode_putfh_maxsz + \ encode_offload_cancel_maxsz) #define NFS4_dec_offload_cancel_sz (compound_decode_hdr_maxsz + \ decode_putfh_maxsz + \ decode_offload_cancel_maxsz) #define NFS4_enc_deallocate_sz (compound_encode_hdr_maxsz + \ encode_putfh_maxsz + \ encode_deallocate_maxsz + \ Loading Loading @@ -145,6 +154,14 @@ static void encode_copy(struct xdr_stream *xdr, encode_uint32(xdr, 0); /* src server list */ } static void encode_offload_cancel(struct xdr_stream *xdr, const struct nfs42_offload_status_args *args, struct compound_hdr *hdr) { encode_op_hdr(xdr, OP_OFFLOAD_CANCEL, decode_offload_cancel_maxsz, hdr); encode_nfs4_stateid(xdr, &args->osa_stateid); } static void encode_deallocate(struct xdr_stream *xdr, const struct nfs42_falloc_args *args, struct compound_hdr *hdr) Loading Loading @@ -260,6 +277,25 @@ static void nfs4_xdr_enc_copy(struct rpc_rqst *req, encode_nops(&hdr); } /* * Encode OFFLOAD_CANEL request */ static void nfs4_xdr_enc_offload_cancel(struct rpc_rqst *req, struct xdr_stream *xdr, const void *data) { const struct nfs42_offload_status_args *args = data; struct compound_hdr hdr = { .minorversion = nfs4_xdr_minorversion(&args->osa_seq_args), }; encode_compound_hdr(xdr, req, &hdr); encode_sequence(xdr, &args->osa_seq_args, &hdr); encode_putfh(xdr, args->osa_src_fh, &hdr); encode_offload_cancel(xdr, args, &hdr); encode_nops(&hdr); } /* * Encode DEALLOCATE request */ Loading Loading @@ -413,6 +449,12 @@ static int decode_copy(struct xdr_stream *xdr, struct nfs42_copy_res *res) return decode_copy_requirements(xdr, res); } static int decode_offload_cancel(struct xdr_stream *xdr, struct nfs42_offload_status_res *res) { return decode_op_hdr(xdr, OP_OFFLOAD_CANCEL); } static int decode_deallocate(struct xdr_stream *xdr, struct nfs42_falloc_res *res) { return decode_op_hdr(xdr, OP_DEALLOCATE); Loading Loading @@ -512,6 +554,32 @@ static int nfs4_xdr_dec_copy(struct rpc_rqst *rqstp, return status; } /* * Decode OFFLOAD_CANCEL response */ static int nfs4_xdr_dec_offload_cancel(struct rpc_rqst *rqstp, struct xdr_stream *xdr, void *data) { struct nfs42_offload_status_res *res = data; struct compound_hdr hdr; int status; status = decode_compound_hdr(xdr, &hdr); if (status) goto out; status = decode_sequence(xdr, &res->osr_seq_res, rqstp); if (status) goto out; status = decode_putfh(xdr); if (status) goto out; status = decode_offload_cancel(xdr, res); out: return status; } /* * Decode DEALLOCATE request */ Loading fs/nfs/nfs4proc.c +1 −0 Original line number Diff line number Diff line Loading @@ -9620,6 +9620,7 @@ static const struct nfs4_minor_version_ops nfs_v4_2_minor_ops = { | NFS_CAP_LGOPEN | NFS_CAP_ALLOCATE | NFS_CAP_COPY | NFS_CAP_OFFLOAD_CANCEL | NFS_CAP_DEALLOCATE | NFS_CAP_SEEK | NFS_CAP_LAYOUTSTATS Loading fs/nfs/nfs4xdr.c +1 −0 Original line number Diff line number Diff line Loading @@ -7789,6 +7789,7 @@ const struct rpc_procinfo nfs4_procedures[] = { PROC42(LAYOUTSTATS, enc_layoutstats, dec_layoutstats), PROC42(CLONE, enc_clone, dec_clone), PROC42(COPY, enc_copy, dec_copy), PROC42(OFFLOAD_CANCEL, enc_offload_cancel, dec_offload_cancel), PROC(LOOKUPP, enc_lookupp, dec_lookupp), }; Loading include/linux/nfs4.h +1 −0 Original line number Diff line number Diff line Loading @@ -527,6 +527,7 @@ enum { NFSPROC4_CLNT_LAYOUTSTATS, NFSPROC4_CLNT_CLONE, NFSPROC4_CLNT_COPY, NFSPROC4_CLNT_OFFLOAD_CANCEL, NFSPROC4_CLNT_LOOKUPP, }; Loading include/linux/nfs_fs_sb.h +1 −0 Original line number Diff line number Diff line Loading @@ -255,5 +255,6 @@ struct nfs_server { #define NFS_CAP_LAYOUTSTATS (1U << 22) #define NFS_CAP_CLONE (1U << 23) #define NFS_CAP_COPY (1U << 24) #define NFS_CAP_OFFLOAD_CANCEL (1U << 25) #endif Loading
fs/nfs/nfs42xdr.c +68 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,9 @@ NFS42_WRITE_RES_SIZE + \ 1 /* cr_consecutive */ + \ 1 /* cr_synchronous */) #define encode_offload_cancel_maxsz (op_encode_hdr_maxsz + \ XDR_QUADLEN(NFS4_STATEID_SIZE)) #define decode_offload_cancel_maxsz (op_decode_hdr_maxsz) #define encode_deallocate_maxsz (op_encode_hdr_maxsz + \ encode_fallocate_maxsz) #define decode_deallocate_maxsz (op_decode_hdr_maxsz) Loading Loading @@ -75,6 +78,12 @@ decode_putfh_maxsz + \ decode_copy_maxsz + \ decode_commit_maxsz) #define NFS4_enc_offload_cancel_sz (compound_encode_hdr_maxsz + \ encode_putfh_maxsz + \ encode_offload_cancel_maxsz) #define NFS4_dec_offload_cancel_sz (compound_decode_hdr_maxsz + \ decode_putfh_maxsz + \ decode_offload_cancel_maxsz) #define NFS4_enc_deallocate_sz (compound_encode_hdr_maxsz + \ encode_putfh_maxsz + \ encode_deallocate_maxsz + \ Loading Loading @@ -145,6 +154,14 @@ static void encode_copy(struct xdr_stream *xdr, encode_uint32(xdr, 0); /* src server list */ } static void encode_offload_cancel(struct xdr_stream *xdr, const struct nfs42_offload_status_args *args, struct compound_hdr *hdr) { encode_op_hdr(xdr, OP_OFFLOAD_CANCEL, decode_offload_cancel_maxsz, hdr); encode_nfs4_stateid(xdr, &args->osa_stateid); } static void encode_deallocate(struct xdr_stream *xdr, const struct nfs42_falloc_args *args, struct compound_hdr *hdr) Loading Loading @@ -260,6 +277,25 @@ static void nfs4_xdr_enc_copy(struct rpc_rqst *req, encode_nops(&hdr); } /* * Encode OFFLOAD_CANEL request */ static void nfs4_xdr_enc_offload_cancel(struct rpc_rqst *req, struct xdr_stream *xdr, const void *data) { const struct nfs42_offload_status_args *args = data; struct compound_hdr hdr = { .minorversion = nfs4_xdr_minorversion(&args->osa_seq_args), }; encode_compound_hdr(xdr, req, &hdr); encode_sequence(xdr, &args->osa_seq_args, &hdr); encode_putfh(xdr, args->osa_src_fh, &hdr); encode_offload_cancel(xdr, args, &hdr); encode_nops(&hdr); } /* * Encode DEALLOCATE request */ Loading Loading @@ -413,6 +449,12 @@ static int decode_copy(struct xdr_stream *xdr, struct nfs42_copy_res *res) return decode_copy_requirements(xdr, res); } static int decode_offload_cancel(struct xdr_stream *xdr, struct nfs42_offload_status_res *res) { return decode_op_hdr(xdr, OP_OFFLOAD_CANCEL); } static int decode_deallocate(struct xdr_stream *xdr, struct nfs42_falloc_res *res) { return decode_op_hdr(xdr, OP_DEALLOCATE); Loading Loading @@ -512,6 +554,32 @@ static int nfs4_xdr_dec_copy(struct rpc_rqst *rqstp, return status; } /* * Decode OFFLOAD_CANCEL response */ static int nfs4_xdr_dec_offload_cancel(struct rpc_rqst *rqstp, struct xdr_stream *xdr, void *data) { struct nfs42_offload_status_res *res = data; struct compound_hdr hdr; int status; status = decode_compound_hdr(xdr, &hdr); if (status) goto out; status = decode_sequence(xdr, &res->osr_seq_res, rqstp); if (status) goto out; status = decode_putfh(xdr); if (status) goto out; status = decode_offload_cancel(xdr, res); out: return status; } /* * Decode DEALLOCATE request */ Loading
fs/nfs/nfs4proc.c +1 −0 Original line number Diff line number Diff line Loading @@ -9620,6 +9620,7 @@ static const struct nfs4_minor_version_ops nfs_v4_2_minor_ops = { | NFS_CAP_LGOPEN | NFS_CAP_ALLOCATE | NFS_CAP_COPY | NFS_CAP_OFFLOAD_CANCEL | NFS_CAP_DEALLOCATE | NFS_CAP_SEEK | NFS_CAP_LAYOUTSTATS Loading
fs/nfs/nfs4xdr.c +1 −0 Original line number Diff line number Diff line Loading @@ -7789,6 +7789,7 @@ const struct rpc_procinfo nfs4_procedures[] = { PROC42(LAYOUTSTATS, enc_layoutstats, dec_layoutstats), PROC42(CLONE, enc_clone, dec_clone), PROC42(COPY, enc_copy, dec_copy), PROC42(OFFLOAD_CANCEL, enc_offload_cancel, dec_offload_cancel), PROC(LOOKUPP, enc_lookupp, dec_lookupp), }; Loading
include/linux/nfs4.h +1 −0 Original line number Diff line number Diff line Loading @@ -527,6 +527,7 @@ enum { NFSPROC4_CLNT_LAYOUTSTATS, NFSPROC4_CLNT_CLONE, NFSPROC4_CLNT_COPY, NFSPROC4_CLNT_OFFLOAD_CANCEL, NFSPROC4_CLNT_LOOKUPP, }; Loading
include/linux/nfs_fs_sb.h +1 −0 Original line number Diff line number Diff line Loading @@ -255,5 +255,6 @@ struct nfs_server { #define NFS_CAP_LAYOUTSTATS (1U << 22) #define NFS_CAP_CLONE (1U << 23) #define NFS_CAP_COPY (1U << 24) #define NFS_CAP_OFFLOAD_CANCEL (1U << 25) #endif