linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Aneesh Kumar K. V" <aneesh.kumar@linux.vnet.ibm.com>
To: Neil Brown <neilb@suse.de>
Cc: Andreas Dilger <andreas.dilger@oracle.com>,
	Al Viro <viro@ZenIV.linux.org.uk>,
	Christoph Hellwig <hch@infradead.org>,
	"adilger\@sun.com" <adilger@sun.com>,
	"corbet\@lwn.net" <corbet@lwn.net>,
	"npiggin\@kernel.dk" <npiggin@kernel.dk>,
	"hooanon05\@yahoo.co.jp" <hooanon05@yahoo.co.jp>,
	"bfields\@fieldses.org" <bfields@fieldses.org>,
	"miklos\@szeredi.hu" <miklos@szeredi.hu>,
	"linux-fsdevel\@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
	"sfrench\@us.ibm.com" <sfrench@us.ibm.com>,
	"philippe.deniel\@CEA.FR" <philippe.deniel@CEA.FR>,
	"linux-kernel\@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH -V18 04/13] vfs: Allow handle based open on symlinks
Date: Tue, 24 Aug 2010 16:10:42 +0530	[thread overview]
Message-ID: <m3iq30jnth.fsf@linux.vnet.ibm.com> (raw)
In-Reply-To: <20100823115247.1f38c154@notabene>

On Mon, 23 Aug 2010 11:52:47 +1000, Neil Brown <neilb@suse.de> wrote:
> On Mon, 23 Aug 2010 06:54:03 +0530
> "Aneesh Kumar K. V" <aneesh.kumar@linux.vnet.ibm.com> wrote:
> 
> > On Mon, 23 Aug 2010 09:06:04 +1000, Neil Brown <neilb@suse.de> wrote:
> > > On Sat, 21 Aug 2010 01:13:52 -0600
> > > Andreas Dilger <andreas.dilger@oracle.com> wrote:
> > > 
> > > > On 2010-08-20, at 18:09, Neil Brown <neilb@suse.de> wrote:
> > > > > How about a new AT flag:  AT_FILE_HANDLE
> > > > > 
> > > > > Meaning is that the 'dirfd' is used only to identify a filesystem (vfsmnt) and
> > > > > the 'name' pointer actually points to a filehandle fragment interpreted in
> > > > > that filesystem.
> > > > > 
> > > > > One problem is that there is no way to pass the length...
> > > > > Options:
> > > > >   fragment is at most 64 bytes nul padded at the end
> > > > >   fragment is hex encoded and nul terminated
> > > > >   ??
> > > > > 
> > > > > I think I prefer the hex encoding, but I'm hoping someone else has a better
> > > > > idea.
> > > > 
> > > > That makes it ugly for the kernel to stringify and parse the file handles. 
> > > 
> > > We already parse filenames into components separated by '/'.  Is HEX decoding
> > > that much more ugly.
> > > 
> > > Filehandles are currently passed between the kernel and mountd as HEX
> > > strings, so at least there is some precedent.
> > > 
> > > > 
> > > > How about for AT_FILE_HANDLE THE FIRST __u32 (maybe with an extra __u32 for alignment) is the length and the rest of the binary file handle follows this?  In fact, doesn't the handle itself already encode the length in the header?
> > > 
> > > That part of a filehandle that nfsd gives to the filesystem is one byte out
> > > of a 4-byte header, plus the tail of the filehandle after the part that
> > > identifies the filesystem.
> > > This 'one byte' does imply the length, but it doesn't necessarily encode it.
> > > Rather it is a 'type'.  So it cannot really be used to determine the length
> > > at the point when the filehandle would need to be copied from userspace into
> > > the kernel.
> > > 
> > > 
> > > I don't think there is any precedent for passing a 4-byte length followed by
> > > a binary string, while there is plenty of precedent for passing a
> > > nul-terminated ASCII string.
> > > 
> > > [[ Following this approach I would like to avoid any filehandle-specific
> > > syscalls altogether.
> > > Just use a *at syscall with AT_FILE_HANDLE for filehandle lookup, and use
> > > getxattr('system:linux.file_handle') to get the filehandle for a given path.
> > > 
> > > Ofcourse we would need to at *at versions of the *xattr syscalls, but that is
> > > probably a good idea anyway.
> > > ]]
> > 
> > There are at* syscalls that doesn't take the additional flags as the
> > argument, like openat, readlinkat. How will handle based open and
> > readlink work with the above interface ?
> >
> 
> Bother... you are right.
> 
> I had remembered that at the time that all that *at calls were added there was
> discussion about how you always need some flags, particularly in the context
> of adding O_CLOEXEC and (I thought) a flag to allow non-sequential allocation
> of fds.
> I had thought that they all got 'flags' arguments as a result, but it seems
> not.
> For openat you could squeeze something into the current 'flags' arg
> (O_FILE_HANDLE), but for readlinkat, symlinkat at least there is no such
> option.  Sad really.
> 

IMHO that is really bad overloading of flags value. I also find  hex
encoded handle in pathname argument of *at syscalls confusing. The above
discussion also hint that we would need a new syscall for open,
readlink and setxattr, So how about me posting the new series which
remove open on symlink patch and add a bunch of syscalls to allow
operation on symlinks based on handle ?

-aneesh




  reply	other threads:[~2010-08-24 10:40 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-20  1:51 [PATCH -V18 0/13] Generic name to handle and open by handle syscalls Aneesh Kumar K.V
2010-08-20  1:51 ` [PATCH -V18 01/13] exportfs: Return the minimum required handle size Aneesh Kumar K.V
2010-08-20  1:51 ` [PATCH -V18 02/13] vfs: Add name to file handle conversion support Aneesh Kumar K.V
2010-08-20  1:51 ` [PATCH -V18 03/13] vfs: Add open by file handle support Aneesh Kumar K.V
2010-08-20  1:51 ` [PATCH -V18 04/13] vfs: Allow handle based open on symlinks Aneesh Kumar K.V
2010-08-20  2:13   ` Aneesh Kumar K. V
2010-08-20  6:53     ` Aneesh Kumar K. V
2010-08-20  8:30   ` Christoph Hellwig
2010-08-20  9:53     ` Neil Brown
2010-08-20 11:51       ` Al Viro
2010-08-21  0:09         ` Neil Brown
2010-08-21  7:13           ` Andreas Dilger
2010-08-21  9:32             ` Aneesh Kumar K. V
2010-08-22 23:06             ` Neil Brown
2010-08-23  1:24               ` Aneesh Kumar K. V
2010-08-23  1:52                 ` Neil Brown
2010-08-24 10:40                   ` Aneesh Kumar K. V [this message]
2010-08-23  2:49               ` Aneesh Kumar K. V
2010-08-25  2:06                 ` Neil Brown
2010-08-24  9:41               ` Bastien ROUCARIES
2010-08-25  2:04                 ` Neil Brown
2010-08-25  9:13                   ` Bastien ROUCARIES
2010-08-21  8:30           ` Nick Piggin
2010-08-21  9:42             ` Aneesh Kumar K. V
2010-08-22  2:02               ` Aneesh Kumar K. V
2010-08-24  7:21               ` Nick Piggin
2010-08-24 10:34                 ` Aneesh Kumar K. V
2010-08-24 13:19                 ` J. Bruce Fields
2010-08-22 23:17             ` Neil Brown
2010-08-24  7:29               ` Nick Piggin
2010-08-21  9:31           ` Aneesh Kumar K. V
2010-08-20 13:25       ` Peter Zijlstra
2010-08-20 23:47         ` Neil Brown
2010-08-20 14:38     ` Aneesh Kumar K. V
2010-08-20  1:51 ` [PATCH -V18 05/13] vfs: Support null pathname in readlink Aneesh Kumar K.V
2010-08-20  8:32   ` Christoph Hellwig
2010-08-20 10:04     ` Neil Brown
2010-08-20 14:43     ` Aneesh Kumar K. V
2010-08-20  1:51 ` [PATCH -V18 06/13] vfs: Support null pathname in faccessat Aneesh Kumar K.V
2010-08-20  1:51 ` [PATCH -V18 07/13] vfs: Support null pathname in linkat Aneesh Kumar K.V
2010-08-20  1:51 ` [PATCH -V18 08/13] x86: Add new syscalls for x86_32 Aneesh Kumar K.V
2010-08-20  1:51 ` [PATCH -V18 09/13] x86: Add new syscalls for x86_64 Aneesh Kumar K.V
2010-08-20  1:51 ` [PATCH -V18 10/13] unistd.h: Add new syscalls numbers to asm-generic Aneesh Kumar K.V
2010-08-20  1:51 ` [PATCH -V18 11/13] vfs: Export file system uuid via /proc/<pid>/mountinfo Aneesh Kumar K.V
2010-08-20  1:51 ` [PATCH -V18 12/13] ext3: Copy fs UUID to superblock Aneesh Kumar K.V
2010-08-20  1:51 ` [PATCH -V18 13/13] ext4: " Aneesh Kumar K.V

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=m3iq30jnth.fsf@linux.vnet.ibm.com \
    --to=aneesh.kumar@linux.vnet.ibm.com \
    --cc=adilger@sun.com \
    --cc=andreas.dilger@oracle.com \
    --cc=bfields@fieldses.org \
    --cc=corbet@lwn.net \
    --cc=hch@infradead.org \
    --cc=hooanon05@yahoo.co.jp \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=miklos@szeredi.hu \
    --cc=neilb@suse.de \
    --cc=npiggin@kernel.dk \
    --cc=philippe.deniel@CEA.FR \
    --cc=sfrench@us.ibm.com \
    --cc=viro@ZenIV.linux.org.uk \
    /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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).