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 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.