From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from bedivere.hansenpartnership.com ([66.63.167.143]:44828 "EHLO bedivere.hansenpartnership.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934136AbdBQReR (ORCPT ); Fri, 17 Feb 2017 12:34:17 -0500 Message-ID: <1487352847.4351.23.camel@HansenPartnership.com> Subject: Re: [RFC 1/1] shiftfs: uid/gid shifting bind mount From: James Bottomley To: Al Viro Cc: Vivek Goyal , Djalal Harouni , Chris Mason , Theodore Tso , Josh Triplett , "Eric W. Biederman" , Andy Lutomirski , Seth Forshee , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-security-module@vger.kernel.org, Dongsu Park , David Herrmann , Miklos Szeredi , Alban Crequy , "Serge E. Hallyn" , Phil Estes Date: Fri, 17 Feb 2017 09:34:07 -0800 In-Reply-To: <20170217025516.GD29622@ZenIV.linux.org.uk> References: <1486235880.2484.17.camel@HansenPartnership.com> <1486235972.2484.19.camel@HansenPartnership.com> <20170215203441.GA22585@redhat.com> <1487260590.2944.21.camel@HansenPartnership.com> <20170217025516.GD29622@ZenIV.linux.org.uk> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Fri, 2017-02-17 at 02:55 +0000, Al Viro wrote: > On Thu, Feb 16, 2017 at 07:56:30AM -0800, James Bottomley wrote: > > > > Hi James, > > > > > > Should it be "return d_splice_alias()" so that if we find an > > > alias it is returned back to caller and passed in dentry can be > > > freed. Though I don't know in what cases alias can be found. And > > > if alias is found how do we make sure alias_dentry->d_fsdata is > > > pointing to new (real dentry). > > > > It probably should be for the sake of the pattern. In our case I > > don't think we can have any root aliases because the root dentry is > > always pinned in the cache, so cache lookup should always find it. > > What does that have to do with root dentry? The real reason why that > code works (FVerySVO) is that the damn thing allocates a new inode > every time. Including the hardlinks, BTW. Yes, this is a known characteristic of stacked filesystems. Is there some magic I don't know about that would make it easier to reflect hard links as aliases? > So d_splice_alias() will always return NULL - there's no way for > any dentries to be pointing to in-core struct inode you've > just allocated. Short of a use-after-free, that is... > > Unless I'm missing something subtle, the whole thing is fucked > in head wrt cache coherency - its dentries are blindly assumed to be > forever valid, no matter what's happening with the underlying > filesystem. Hopefully the patch in the previous email fixes this. James