From mboxrd@z Thu Jan 1 00:00:00 1970 From: Al Viro Subject: Re: [lustre mess] is mgc_fs_setup() reachable at all? Date: Fri, 19 Jul 2013 09:12:58 +0100 Message-ID: <20130719081258.GE4165@ZenIV.linux.org.uk> References: <20130718090835.GZ4165@ZenIV.linux.org.uk> <5DD1CAAA-2008-47F9-B3B6-8D342B28D08C@xyratex.com> <20130718190703.GB4165@ZenIV.linux.org.uk> <3F4C226D-9D3B-46FA-9C8C-55268B2F904F@dilger.ca> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Nathan Rutman , Peng Tao , "Dilger, Andreas" , Linux Kernel Mailing List , "linux-fsdevel@vger.kernel.org" To: Andreas Dilger Return-path: Content-Disposition: inline In-Reply-To: <3F4C226D-9D3B-46FA-9C8C-55268B2F904F@dilger.ca> Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org On Thu, Jul 18, 2013 at 02:57:11PM -0600, Andreas Dilger wrote: > > _THAT_ was going to be a remotely supplied data? I really hope I've > > misparsed what you said above... > > > > And that still leaves the question about the code path that could > > lead to execution of mgc_fs_setup(). > > The KEY_SET_FS is only used in the server code, not on the client. > The MGC code is shared between client and server to mount the > filesystem and fetch the cluster configuration from the management > server. In the case of a server mount, it also has to mount the > underlying block device, which isn't true on the client, so this > code is indeed unused. Wait a minute... So we have client side of things in staging, with parts shared with the server, which is *not* in tree at all? That sounds painful - any changes done to the client code either risk to break the server, or have the copies of the shared stuff diverge... I honestly have no idea about your plans wrt merging; are you going to put the server side of things there as well? Another thing: is your ll_statfs_internal() safe to call right up to the moment when client_common_put_super calls lprocfs_unregister_mountpoint? Because procfs IO *can* come right until the procfs entry removal; said removal will act as a barrier, so it won't leak past the return from remove_proc_entry(), but that's it. While we are at procfs side of thing, looks like you need exclusion between ll_..._seq_write() that clear/set bits in ->ll_flags; at least I haven't found anything that would prevent the races among those.