From: "Kirill A. Shutemov" <kas@openvz.org> To: Trond Myklebust <Trond.Myklebust@netapp.com>, "J. Bruce Fields" <bfields@fieldses.org>, Neil Brown <neilb@suse.de> Cc: Pavel Emelyanov <xemul@parallels.com>, linux-nfs@vger.kernel.org, "David S. Miller" <davem@davemloft.net>, Rob Landley <rlandley@parallels.com>, Al Viro <viro@ZenIV.linux.org.uk>, containers@lists.linux-foundation.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, "Kirill A. Shutemov" <kas@openvz.org> Subject: [PATCH v3, RESEND 01/16] sunrpc: mount rpc_pipefs on initialization Date: Tue, 8 Feb 2011 20:41:52 +0200 [thread overview] Message-ID: <1297190527-19925-2-git-send-email-kas@openvz.org> (raw) In-Reply-To: <1297190527-19925-1-git-send-email-kas@openvz.org> Mount rpc_pipefs on register_rpc_pipefs() and replace rpc_get_mount()/rpc_put_mount() implementation with mntget()/mntput(). This commit introduces temprorary regression: there is no way to remove the module. It will be fixed at the end of the patchset. Signed-off-by: Kirill A. Shutemov <kas@openvz.org> Reviewed-by: Rob Landley <rlandley@parallels.com> --- net/sunrpc/rpc_pipe.c | 26 +++++++++++++++----------- 1 files changed, 15 insertions(+), 11 deletions(-) diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c index 72bc536..9ab9355 100644 --- a/net/sunrpc/rpc_pipe.c +++ b/net/sunrpc/rpc_pipe.c @@ -29,7 +29,6 @@ #include <linux/sunrpc/cache.h> static struct vfsmount *rpc_mnt __read_mostly; -static int rpc_mount_count; static struct file_system_type rpc_pipe_fs_type; @@ -423,18 +422,13 @@ struct rpc_filelist { struct vfsmount *rpc_get_mount(void) { - int err; - - err = simple_pin_fs(&rpc_pipe_fs_type, &rpc_mnt, &rpc_mount_count); - if (err != 0) - return ERR_PTR(err); - return rpc_mnt; + return mntget(rpc_mnt); } EXPORT_SYMBOL_GPL(rpc_get_mount); void rpc_put_mount(void) { - simple_release_fs(&rpc_mnt, &rpc_mount_count); + mntput(rpc_mnt); } EXPORT_SYMBOL_GPL(rpc_put_mount); @@ -1071,12 +1065,22 @@ int register_rpc_pipefs(void) if (!rpc_inode_cachep) return -ENOMEM; err = register_filesystem(&rpc_pipe_fs_type); - if (err) { - kmem_cache_destroy(rpc_inode_cachep); - return err; + if (err) + goto destroy_cache; + + rpc_mnt = kern_mount(&rpc_pipe_fs_type); + if (IS_ERR(rpc_mnt)) { + err = PTR_ERR(rpc_mnt); + goto unregister_fs; } return 0; + +unregister_fs: + unregister_filesystem(&rpc_pipe_fs_type); +destroy_cache: + kmem_cache_destroy(rpc_inode_cachep); + return err; } void unregister_rpc_pipefs(void) -- 1.7.4
WARNING: multiple messages have this Message-ID (diff)
From: "Kirill A. Shutemov" <kas-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org> To: Trond Myklebust <Trond.Myklebust-HgOvQuBEEgTQT0dZR+AlfA@public.gmane.org>, "J. Bruce Fields" <bfields-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>, Neil Brown <neilb-l3A5Bk7waGM@public.gmane.org> Cc: Pavel Emelyanov <xemul-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>, linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, "David S. Miller" <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>, Rob Landley <rlandley-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>, Al Viro <viro-3bDd1+5oDREiFSDQTTA3OLVCufUGDwFn@public.gmane.org>, containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, "Kirill A. Shutemov" <kas-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org> Subject: [PATCH v3, RESEND 01/16] sunrpc: mount rpc_pipefs on initialization Date: Tue, 8 Feb 2011 20:41:52 +0200 [thread overview] Message-ID: <1297190527-19925-2-git-send-email-kas@openvz.org> (raw) In-Reply-To: <1297190527-19925-1-git-send-email-kas-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org> Mount rpc_pipefs on register_rpc_pipefs() and replace rpc_get_mount()/rpc_put_mount() implementation with mntget()/mntput(). This commit introduces temprorary regression: there is no way to remove the module. It will be fixed at the end of the patchset. Signed-off-by: Kirill A. Shutemov <kas-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org> Reviewed-by: Rob Landley <rlandley-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org> --- net/sunrpc/rpc_pipe.c | 26 +++++++++++++++----------- 1 files changed, 15 insertions(+), 11 deletions(-) diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c index 72bc536..9ab9355 100644 --- a/net/sunrpc/rpc_pipe.c +++ b/net/sunrpc/rpc_pipe.c @@ -29,7 +29,6 @@ #include <linux/sunrpc/cache.h> static struct vfsmount *rpc_mnt __read_mostly; -static int rpc_mount_count; static struct file_system_type rpc_pipe_fs_type; @@ -423,18 +422,13 @@ struct rpc_filelist { struct vfsmount *rpc_get_mount(void) { - int err; - - err = simple_pin_fs(&rpc_pipe_fs_type, &rpc_mnt, &rpc_mount_count); - if (err != 0) - return ERR_PTR(err); - return rpc_mnt; + return mntget(rpc_mnt); } EXPORT_SYMBOL_GPL(rpc_get_mount); void rpc_put_mount(void) { - simple_release_fs(&rpc_mnt, &rpc_mount_count); + mntput(rpc_mnt); } EXPORT_SYMBOL_GPL(rpc_put_mount); @@ -1071,12 +1065,22 @@ int register_rpc_pipefs(void) if (!rpc_inode_cachep) return -ENOMEM; err = register_filesystem(&rpc_pipe_fs_type); - if (err) { - kmem_cache_destroy(rpc_inode_cachep); - return err; + if (err) + goto destroy_cache; + + rpc_mnt = kern_mount(&rpc_pipe_fs_type); + if (IS_ERR(rpc_mnt)) { + err = PTR_ERR(rpc_mnt); + goto unregister_fs; } return 0; + +unregister_fs: + unregister_filesystem(&rpc_pipe_fs_type); +destroy_cache: + kmem_cache_destroy(rpc_inode_cachep); + return err; } void unregister_rpc_pipefs(void) -- 1.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2011-02-08 18:42 UTC|newest] Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-02-08 18:41 [PATCH v3, RESEND 00/16] make rpc_pipefs be mountable multiple time Kirill A. Shutemov 2011-02-08 18:41 ` Kirill A. Shutemov [this message] 2011-02-08 18:41 ` [PATCH v3, RESEND 01/16] sunrpc: mount rpc_pipefs on initialization Kirill A. Shutemov [not found] ` <1297190527-19925-1-git-send-email-kas-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org> 2011-02-08 18:41 ` Kirill A. Shutemov 2011-02-08 18:41 ` [PATCH v3, RESEND 02/16] sunrpc: introduce init_rpc_pipefs Kirill A. Shutemov 2011-02-08 18:41 ` [PATCH v3, RESEND 03/16] sunrpc: push init_rpc_pipefs up to rpc_create() callers Kirill A. Shutemov 2011-02-08 18:41 ` [PATCH v3, RESEND 04/16] sunrpc: tag svc_serv with rpc_pipefs mount point Kirill A. Shutemov 2011-02-08 18:41 ` [PATCH v3, RESEND 05/16] sunrpc: get rpc_pipefs mount point for svc_serv from callers Kirill A. Shutemov 2011-02-08 18:41 ` [PATCH v3, RESEND 06/16] lockd: get rpc_pipefs mount point " Kirill A. Shutemov 2011-02-08 18:41 ` [PATCH v3, RESEND 07/16] sunrpc: get rpc_pipefs mount point for rpcb_create[_local] " Kirill A. Shutemov 2011-02-08 18:41 ` [PATCH v3, RESEND 08/16] sunrpc: tag pipefs field of cache_detail with rpc_pipefs mount point Kirill A. Shutemov 2011-02-08 18:42 ` [PATCH v3, RESEND 09/16] sunrpc: introduce rpc_pipefs_add_destroy_cb() Kirill A. Shutemov 2011-02-08 18:42 ` [PATCH v3, RESEND 10/16] nfs: per-rpc_pipefs dns cache Kirill A. Shutemov 2011-02-08 18:42 ` [PATCH v3, RESEND 11/16] Export iterate_mounts symbol to be able to use from sunrpc module Kirill A. Shutemov 2011-02-08 18:42 ` [PATCH v3, RESEND 12/16] sunrpc: introduce get_rpc_pipefs() Kirill A. Shutemov 2011-02-08 18:42 ` [PATCH v3, RESEND 13/16] nfs: introduce mount option 'rpcmount' Kirill A. Shutemov 2011-02-08 18:42 ` [PATCH v3, RESEND 14/16] sunrpc: make rpc_pipefs be mountable multiple times Kirill A. Shutemov 2011-02-08 18:42 ` [PATCH v3, RESEND 15/16] sunrpc: remove global init_rpc_pipefs Kirill A. Shutemov 2011-02-08 18:42 ` [PATCH v3, RESEND 16/16] Rework get_rpc_pipefs() and introduce put_rpc_pipefs() Kirill A. Shutemov 2011-03-02 17:06 ` [PATCH v3, RESEND 00/16] make rpc_pipefs be mountable multiple time Kirill A. Shutemov 2011-02-08 18:41 ` [PATCH v3, RESEND 02/16] sunrpc: introduce init_rpc_pipefs Kirill A. Shutemov 2011-02-08 18:41 ` [PATCH v3, RESEND 03/16] sunrpc: push init_rpc_pipefs up to rpc_create() callers Kirill A. Shutemov 2011-02-08 18:41 ` Kirill A. Shutemov 2011-02-08 18:41 ` [PATCH v3, RESEND 04/16] sunrpc: tag svc_serv with rpc_pipefs mount point Kirill A. Shutemov 2011-02-08 18:41 ` [PATCH v3, RESEND 05/16] sunrpc: get rpc_pipefs mount point for svc_serv from callers Kirill A. Shutemov 2011-02-08 18:41 ` [PATCH v3, RESEND 06/16] lockd: get rpc_pipefs mount point " Kirill A. Shutemov 2011-02-08 18:41 ` [PATCH v3, RESEND 07/16] sunrpc: get rpc_pipefs mount point for rpcb_create[_local] " Kirill A. Shutemov 2011-02-08 18:41 ` [PATCH v3, RESEND 08/16] sunrpc: tag pipefs field of cache_detail with rpc_pipefs mount point Kirill A. Shutemov 2011-02-08 18:42 ` [PATCH v3, RESEND 09/16] sunrpc: introduce rpc_pipefs_add_destroy_cb() Kirill A. Shutemov 2011-02-08 18:42 ` [PATCH v3, RESEND 10/16] nfs: per-rpc_pipefs dns cache Kirill A. Shutemov 2011-02-08 18:42 ` [PATCH v3, RESEND 11/16] Export iterate_mounts symbol to be able to use from sunrpc module Kirill A. Shutemov 2011-02-08 18:42 ` Kirill A. Shutemov 2011-02-08 18:42 ` [PATCH v3, RESEND 12/16] sunrpc: introduce get_rpc_pipefs() Kirill A. Shutemov 2011-02-08 18:42 ` Kirill A. Shutemov 2011-02-08 18:42 ` [PATCH v3, RESEND 13/16] nfs: introduce mount option 'rpcmount' Kirill A. Shutemov 2011-02-08 18:42 ` [PATCH v3, RESEND 14/16] sunrpc: make rpc_pipefs be mountable multiple times Kirill A. Shutemov 2011-02-08 18:42 ` Kirill A. Shutemov 2011-02-08 18:42 ` [PATCH v3, RESEND 15/16] sunrpc: remove global init_rpc_pipefs Kirill A. Shutemov 2011-02-08 18:42 ` [PATCH v3, RESEND 16/16] Rework get_rpc_pipefs() and introduce put_rpc_pipefs() Kirill A. Shutemov 2011-03-02 17:06 ` [PATCH v3, RESEND 00/16] make rpc_pipefs be mountable multiple time Kirill A. Shutemov 2011-03-02 17:06 ` Kirill A. Shutemov 2011-04-06 0:55 ` Kirill A. Shutemov 2011-04-06 0:55 ` Kirill A. Shutemov [not found] ` <20110302170622.GA4143-oKw7cIdHH8eLwutG50LtGA@public.gmane.org> 2011-04-06 0:55 ` Kirill A. Shutemov 2011-04-06 0:55 ` Kirill A. Shutemov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1297190527-19925-2-git-send-email-kas@openvz.org \ --to=kas@openvz.org \ --cc=Trond.Myklebust@netapp.com \ --cc=bfields@fieldses.org \ --cc=containers@lists.linux-foundation.org \ --cc=davem@davemloft.net \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-nfs@vger.kernel.org \ --cc=neilb@suse.de \ --cc=netdev@vger.kernel.org \ --cc=rlandley@parallels.com \ --cc=viro@ZenIV.linux.org.uk \ --cc=xemul@parallels.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.