Loading fs/nfs/callback.h +4 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,9 @@ struct cb_sequenceres { uint32_t csr_target_highestslotid; }; extern unsigned nfs4_callback_sequence(struct cb_sequenceargs *args, struct cb_sequenceres *res); #endif /* CONFIG_NFS_V4_1 */ extern __be32 nfs4_callback_getattr(struct cb_getattrargs *args, struct cb_getattrres *res); Loading @@ -119,6 +122,7 @@ extern void nfs_callback_down(int minorversion); * of slots for the backchannel. */ #define NFS41_BC_MIN_CALLBACKS 1 #define NFS41_BC_MAX_CALLBACKS 1 extern unsigned int nfs_callback_set_tcpport; extern unsigned short nfs_callback_tcpport; Loading fs/nfs/callback_proc.c +28 −0 Original line number Diff line number Diff line Loading @@ -101,3 +101,31 @@ __be32 nfs4_callback_recall(struct cb_recallargs *args, void *dummy) dprintk("%s: exit with status = %d\n", __func__, ntohl(res)); return res; } #if defined(CONFIG_NFS_V4_1) /* FIXME: validate args->cbs_{sequence,slot}id */ /* FIXME: referring calls should be processed */ unsigned nfs4_callback_sequence(struct cb_sequenceargs *args, struct cb_sequenceres *res) { int i; unsigned status = 0; for (i = 0; i < args->csa_nrclists; i++) kfree(args->csa_rclists[i].rcl_refcalls); kfree(args->csa_rclists); memcpy(&res->csr_sessionid, &args->csa_sessionid, sizeof(res->csr_sessionid)); res->csr_sequenceid = args->csa_sequenceid; res->csr_slotid = args->csa_slotid; res->csr_highestslotid = NFS41_BC_MAX_CALLBACKS - 1; res->csr_target_highestslotid = NFS41_BC_MAX_CALLBACKS - 1; dprintk("%s: exit with status = %d\n", __func__, ntohl(status)); res->csr_status = status; return status; } #endif /* CONFIG_NFS_V4_1 */ Loading
fs/nfs/callback.h +4 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,9 @@ struct cb_sequenceres { uint32_t csr_target_highestslotid; }; extern unsigned nfs4_callback_sequence(struct cb_sequenceargs *args, struct cb_sequenceres *res); #endif /* CONFIG_NFS_V4_1 */ extern __be32 nfs4_callback_getattr(struct cb_getattrargs *args, struct cb_getattrres *res); Loading @@ -119,6 +122,7 @@ extern void nfs_callback_down(int minorversion); * of slots for the backchannel. */ #define NFS41_BC_MIN_CALLBACKS 1 #define NFS41_BC_MAX_CALLBACKS 1 extern unsigned int nfs_callback_set_tcpport; extern unsigned short nfs_callback_tcpport; Loading
fs/nfs/callback_proc.c +28 −0 Original line number Diff line number Diff line Loading @@ -101,3 +101,31 @@ __be32 nfs4_callback_recall(struct cb_recallargs *args, void *dummy) dprintk("%s: exit with status = %d\n", __func__, ntohl(res)); return res; } #if defined(CONFIG_NFS_V4_1) /* FIXME: validate args->cbs_{sequence,slot}id */ /* FIXME: referring calls should be processed */ unsigned nfs4_callback_sequence(struct cb_sequenceargs *args, struct cb_sequenceres *res) { int i; unsigned status = 0; for (i = 0; i < args->csa_nrclists; i++) kfree(args->csa_rclists[i].rcl_refcalls); kfree(args->csa_rclists); memcpy(&res->csr_sessionid, &args->csa_sessionid, sizeof(res->csr_sessionid)); res->csr_sequenceid = args->csa_sequenceid; res->csr_slotid = args->csa_slotid; res->csr_highestslotid = NFS41_BC_MAX_CALLBACKS - 1; res->csr_target_highestslotid = NFS41_BC_MAX_CALLBACKS - 1; dprintk("%s: exit with status = %d\n", __func__, ntohl(status)); res->csr_status = status; return status; } #endif /* CONFIG_NFS_V4_1 */