From patchwork Tue Feb 8 18:41:56 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Kirill A. Shutemov" X-Patchwork-Id: 541591 X-Patchwork-Delegate: Trond.Myklebust@netapp.com Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p18IkuK9022756 for ; Tue, 8 Feb 2011 18:46:56 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755506Ab1BHSqJ (ORCPT ); Tue, 8 Feb 2011 13:46:09 -0500 Received: from shutemov.name ([188.40.19.243]:48867 "EHLO shutemov.name" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755473Ab1BHSmL (ORCPT ); Tue, 8 Feb 2011 13:42:11 -0500 Received: by shutemov.name (Postfix, from userid 500) id E6F39D4218; Tue, 8 Feb 2011 20:42:08 +0200 (EET) From: "Kirill A. Shutemov" To: Trond Myklebust , "J. Bruce Fields" , Neil Brown Cc: Pavel Emelyanov , linux-nfs@vger.kernel.org, "David S. Miller" , Rob Landley , Al Viro , containers@lists.linux-foundation.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, "Kirill A. Shutemov" Subject: [PATCH v3, RESEND 05/16] sunrpc: get rpc_pipefs mount point for svc_serv from callers Date: Tue, 8 Feb 2011 20:41:56 +0200 Message-Id: <1297190527-19925-6-git-send-email-kas@openvz.org> X-Mailer: git-send-email 1.7.2.3 In-Reply-To: <1297190527-19925-1-git-send-email-kas@openvz.org> References: <1297190527-19925-1-git-send-email-kas@openvz.org> Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Tue, 08 Feb 2011 18:46:57 +0000 (UTC) diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c index abfff9d..32310b1 100644 --- a/fs/lockd/svc.c +++ b/fs/lockd/svc.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -269,7 +270,8 @@ int lockd_up(void) "lockd_up: no pid, %d users??\n", nlmsvc_users); error = -ENOMEM; - serv = svc_create(&nlmsvc_program, LOCKD_BUFSIZE, NULL); + serv = svc_create(&nlmsvc_program, init_rpc_pipefs, LOCKD_BUFSIZE, + NULL); if (!serv) { printk(KERN_WARNING "lockd_up: create service failed\n"); goto out; diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c index e3d2942..c9b98ad 100644 --- a/fs/nfs/callback.c +++ b/fs/nfs/callback.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -259,7 +260,8 @@ int nfs_callback_up(u32 minorversion, struct rpc_xprt *xprt) nfs_callback_bc_serv(minorversion, xprt, cb_info); goto out; } - serv = svc_create(&nfs4_callback_program, NFS4_CALLBACK_BUFSIZE, NULL); + serv = svc_create(&nfs4_callback_program, init_rpc_pipefs, + NFS4_CALLBACK_BUFSIZE, NULL); if (!serv) { ret = -ENOMEM; goto out_err; diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c index 18743c4..e4fc85d 100644 --- a/fs/nfsd/nfssvc.c +++ b/fs/nfsd/nfssvc.c @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -331,8 +332,9 @@ int nfsd_create_serv(void) } nfsd_reset_versions(); - nfsd_serv = svc_create_pooled(&nfsd_program, nfsd_max_blksize, - nfsd_last_thread, nfsd, THIS_MODULE); + nfsd_serv = svc_create_pooled(&nfsd_program, init_rpc_pipefs, + nfsd_max_blksize, nfsd_last_thread, nfsd, + THIS_MODULE); if (nfsd_serv == NULL) return -ENOMEM; diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h index 0cfd8e8..be15862 100644 --- a/include/linux/sunrpc/svc.h +++ b/include/linux/sunrpc/svc.h @@ -401,13 +401,13 @@ struct svc_procedure { /* * Function prototypes. */ -struct svc_serv *svc_create(struct svc_program *, unsigned int, - void (*shutdown)(struct svc_serv *)); +struct svc_serv *svc_create(struct svc_program *, struct vfsmount *, + unsigned int, void (*shutdown)(struct svc_serv *)); struct svc_rqst *svc_prepare_thread(struct svc_serv *serv, struct svc_pool *pool); void svc_exit_thread(struct svc_rqst *); -struct svc_serv * svc_create_pooled(struct svc_program *, unsigned int, - void (*shutdown)(struct svc_serv *), +struct svc_serv * svc_create_pooled(struct svc_program *, struct vfsmount *, + unsigned int, void (*shutdown)(struct svc_serv *), svc_thread_fn, struct module *); int svc_set_num_threads(struct svc_serv *, struct svc_pool *, int); int svc_pool_stats_open(struct svc_serv *serv, struct file *file); diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c index 370bc46..63abe2b 100644 --- a/net/sunrpc/svc.c +++ b/net/sunrpc/svc.c @@ -28,7 +28,6 @@ #include #include #include -#include #define RPCDBG_FACILITY RPCDBG_SVCDSP @@ -361,7 +360,8 @@ svc_pool_for_cpu(struct svc_serv *serv, int cpu) * Create an RPC service */ static struct svc_serv * -__svc_create(struct svc_program *prog, unsigned int bufsize, int npools, +__svc_create(struct svc_program *prog, struct vfsmount *rpcmount, + unsigned int bufsize, int npools, void (*shutdown)(struct svc_serv *serv)) { struct svc_serv *serv; @@ -373,7 +373,7 @@ __svc_create(struct svc_program *prog, unsigned int bufsize, int npools, return NULL; serv->sv_name = prog->pg_name; serv->sv_program = prog; - serv->sv_rpcmount = mntget(init_rpc_pipefs); + serv->sv_rpcmount = mntget(rpcmount); serv->sv_nrthreads = 1; serv->sv_stats = prog->pg_stats; if (bufsize > RPCSVC_MAXPAYLOAD) @@ -429,22 +429,22 @@ __svc_create(struct svc_program *prog, unsigned int bufsize, int npools, } struct svc_serv * -svc_create(struct svc_program *prog, unsigned int bufsize, - void (*shutdown)(struct svc_serv *serv)) +svc_create(struct svc_program *prog, struct vfsmount *rpcmount, + unsigned int bufsize, void (*shutdown)(struct svc_serv *serv)) { - return __svc_create(prog, bufsize, /*npools*/1, shutdown); + return __svc_create(prog, rpcmount, bufsize, /*npools*/1, shutdown); } EXPORT_SYMBOL_GPL(svc_create); struct svc_serv * -svc_create_pooled(struct svc_program *prog, unsigned int bufsize, - void (*shutdown)(struct svc_serv *serv), +svc_create_pooled(struct svc_program *prog, struct vfsmount *rpcmount, + unsigned int bufsize, void (*shutdown)(struct svc_serv *serv), svc_thread_fn func, struct module *mod) { struct svc_serv *serv; unsigned int npools = svc_pool_map_get(); - serv = __svc_create(prog, bufsize, npools, shutdown); + serv = __svc_create(prog, rpcmount, bufsize, npools, shutdown); if (serv != NULL) { serv->sv_function = func;