From: "Aneesh Kumar K. V" <aneesh.kumar@linux.vnet.ibm.com>
To: Andreas Dilger <adilger@sun.com>
Cc: hch@infradead.org, viro@zeniv.linux.org.uk, corbet@lwn.net,
linux-fsdevel@vger.kernel.org, sfrench@us.ibm.com
Subject: Re: [PATCH -V3 3/5] vfs: Add open by file handle support
Date: Fri, 23 Apr 2010 17:10:20 +0530 [thread overview]
Message-ID: <87mxwujt23.fsf@linux.vnet.ibm.com> (raw)
In-Reply-To: <45C46CC8-0877-43F9-8A59-E0C94A0CF5AF@sun.com>
On Thu, 22 Apr 2010 13:22:32 -0600, Andreas Dilger <adilger@sun.com> wrote:
> On 2010-04-22, at 12:15, Aneesh Kumar K.V wrote:
> > +long do_sys_open_by_handle(struct file_handle *fh, int flags)
> > +{
>
> Note this is inconsistent with the patch description that says that
> the syscall is open_by_handle_at(). While the syscall is still using
> the "_at()" suffix, it is no longer passing any directory.
Fixed.
>
> > + sb = fs_get_sb(&fh->fsid);
> > + if (!sb)
> > + return -ESTALE;
>
> I was going to say that it would be nice to allow a fallback to the "_at" directory of the filesystem, but since the handle is specific to the exact filesystem it was created on anyway (inode number+generation, not even an rsync would be enough) the only way the handle is useful on another node is if the filesystem was cloned at the block device level (or is a shared filesystem identical on all nodes) so the UUID should be identical too.
>
> > + * Find the vfsmount for this superblock in the
> > + * current namespace
> > + */
> > + mnt = fs_get_vfsmount(current, sb);
> > + if (!mnt) {
> > + deactivate_super(sb);
> > + return -ESTALE;
> > + }
> > +
> > + dentry = handle_to_dentry(mnt, fh);
> > + if (IS_ERR(dentry)) {
> > + mntput(mnt);
> > + deactivate_super(sb);
> > + return PTR_ERR(dentry);
> > + }
>
> Why is this code doing "manual" cleanup instead of setting retval and
> goto out_sb: or out_mnt: type labels that only do partial cleanup?
Fixed
>
> > + fsnotify_open(filp->f_path.dentry);
> > + fd_install(fd, filp);
> > + mntput(mnt);
> > + deactivate_super(sb);
> > + return fd;
>
> This could set retval = fd and goto out_mnt: (skipping dput(dentry)) in conjunction with the change proposed below.
>
> > +err_out:
> > + mntput(mnt);
> > + deactivate_super(sb);
> > + dput(dentry);
> > + return retval;
> > +}
>
> I think it makes sense to do the dput(dentry) first, since it will be holding a reference on the sb and vfsmnt, and it also allows code simplification:
>
> out_err:
> dput(dentry);
> out_mnt:
> mntput(mnt);
> out_sb:
> deactivate_super(sb);
>
> return retval;
> }
>
Fixed
I sent a V4 version of the patch with compat syscall support.
-aneesh
next prev parent reply other threads:[~2010-04-23 11:40 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-22 18:15 [PATCH -V3] Generic name to handle and open by handle syscalls Aneesh Kumar K.V
2010-04-22 18:15 ` [PATCH -V3 1/5] exportfs: Return the minimum required handle size Aneesh Kumar K.V
2010-04-22 18:15 ` [PATCH -V3 2/5] vfs: Add name to file handle conversion support Aneesh Kumar K.V
2010-04-22 18:15 ` [PATCH -V3 3/5] vfs: Add open by file handle support Aneesh Kumar K.V
2010-04-22 19:22 ` Andreas Dilger
2010-04-23 11:40 ` Aneesh Kumar K. V [this message]
2010-04-22 18:15 ` [PATCH -V3 4/5] x86: Add new syscalls for x86_32 Aneesh Kumar K.V
2010-04-22 18:15 ` [PATCH -V3 5/5] ext4: Add get_fsid callback Aneesh Kumar K.V
2010-04-22 19:07 ` [PATCH -V3] Generic name to handle and open by handle syscalls Andreas Dilger
2010-04-22 22:49 ` Serge E. Hallyn
2010-04-23 11:45 ` Aneesh Kumar K. V
2010-04-23 13:49 ` Serge E. Hallyn
2010-04-23 13:23 ` Theodore Tso
2010-04-24 0:19 ` Andreas Dilger
2010-04-24 1:08 ` Neil Brown
2010-04-25 18:21 ` Aneesh Kumar K. V
2010-04-26 9:56 ` Christoph Hellwig
2010-04-26 10:16 ` Neil Brown
2010-04-26 10:28 ` Christoph Hellwig
2010-04-26 11:16 ` Neil Brown
2010-04-26 14:53 ` Theodore Tso
2010-04-26 14:56 ` Christoph Hellwig
2010-04-25 18:07 ` 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=87mxwujt23.fsf@linux.vnet.ibm.com \
--to=aneesh.kumar@linux.vnet.ibm.com \
--cc=adilger@sun.com \
--cc=corbet@lwn.net \
--cc=hch@infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--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).