From patchwork Mon Dec 20 11:54:31 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Kirill A. Shutemov" X-Patchwork-Id: 420511 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 oBKBwuFg007745 for ; Mon, 20 Dec 2010 11:58:57 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757565Ab0LTL6L (ORCPT ); Mon, 20 Dec 2010 06:58:11 -0500 Received: from shutemov.name ([188.40.19.243]:38457 "EHLO shutemov.name" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757334Ab0LTLyn (ORCPT ); Mon, 20 Dec 2010 06:54:43 -0500 Received: by shutemov.name (Postfix, from userid 500) id 1BAC8D4217; Mon, 20 Dec 2010 13:54:41 +0200 (EET) From: "Kirill A. Shutsemov" To: Trond Myklebust , "J. Bruce Fields" , Neil Brown Cc: Pavel Emelyanov , linux-nfs@vger.kernel.org, "David S. Miller" , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, "Kirill A. Shutemov" Subject: [PATCH 05/12] sunrpc: get rpc_pipefs mount point for svc_serv from callers Date: Mon, 20 Dec 2010 13:54:31 +0200 Message-Id: <1292846078-31793-6-git-send-email-kirill@shutemov.name> X-Mailer: git-send-email 1.7.2.3 In-Reply-To: <1292846078-31793-1-git-send-email-kirill@shutemov.name> References: <1292846078-31793-1-git-send-email-kirill@shutemov.name> 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.3 (demeter1.kernel.org [140.211.167.41]); Mon, 20 Dec 2010 11:58: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 93a8b3b..bef6abd 100644 --- a/fs/nfs/callback.c +++ b/fs/nfs/callback.c @@ -16,6 +16,7 @@ #include #include #include +#include #if defined(CONFIG_NFS_V4_1) #include #endif @@ -253,7 +254,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 2bae1d8..d96c32b 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 3b6b26c..7f09411 100644 --- a/include/linux/sunrpc/svc.h +++ b/include/linux/sunrpc/svc.h @@ -400,13 +400,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 d2f7c03..0bd6088 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;