All of lore.kernel.org
 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: 47+ 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  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 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.