From: "Aneesh Kumar K. V" <aneesh.kumar@linux.vnet.ibm.com>
To: "J. R. Okajima" <hooanon05@yahoo.co.jp>
Cc: Dave Chinner <david@fromorbit.com>,
hch@infradead.org, viro@zeniv.linux.org.uk, adilger@sun.com,
corbet@lwn.net, serue@us.ibm.com, neilb@suse.de,
linux-fsdevel@vger.kernel.org, sfrench@us.ibm.com,
philippe.deniel@CEA.FR, linux-kernel@vger.kernel.org
Subject: Re: [PATCH -V8 2/9] vfs: Add name to file handle conversion support
Date: Wed, 19 May 2010 14:56:37 +0530 [thread overview]
Message-ID: <87aarwkzsi.fsf@linux.vnet.ibm.com> (raw)
In-Reply-To: <87d3wsl1dl.fsf@linux.vnet.ibm.com>
On Wed, 19 May 2010 14:22:22 +0530, "Aneesh Kumar K. V" <aneesh.kumar@linux.vnet.ibm.com> wrote:
> On Wed, 19 May 2010 16:15:51 +0900, "J. R. Okajima" <hooanon05@yahoo.co.jp> wrote:
> >
> > "Aneesh Kumar K. V":
> > > Now that we are not doing UUID based vfsmount lookup this make
> > > sense. Will update in the next iteration with UUID to be part of
> > > super_block.
> >
> > Because this UUID is just for some FS's userspace helpers (in other
> > words, returning UUID is FS specific behaviour), I am afraid it is not a
> > good ideat to put the array into generic super_block.
>
> UUID should be looked at as the file system identifier and IMHO struct
> super_block is the right place to hold it. For ex: ext* put then in
> ext*_super_block. File system that doesn't support UUID can leave the
> superblock field zero filled.
>
>
> >
> > About the design or approach, this might have been discussed earlier,
> > but I'd like to suggest to clarify some points here.
> > - While these new systemcalls provide generic features, the
> > implementation depends upon s_export_op, ie. NFS-exporting.
> > It means there are two requirements for these systemcalls, enabling
> > CONFIG_EXPORTFS and FS has to set s_export_op.
> > Is this acceptable?
>
>
> I think exportfs is the right interface we want to depend on for
> generating a handle. We should not be having another parallel interface for file
> handle generation. But agreed that we should return -EOPNOTSUPP in case
> EXPORTFS is disabled.
>
>
> >
> > - exportfs_encode_fh() supports the default encoding
> > export_encode_fh(), but exportfs_decode_fh() doesn't.
> > The latest patch series modifes exportfs_decode_fh() to return ESTALE,
> > but I'd suggest to make the caller of export_encode_fh() to check
> > s_export_op->fh_to_dentry() and return ENOSYS.
>
> I will fix to make the syscall return EOPNOTSUPP in case fh_to_dentry is
> not supported. But i guess we still need to keep the change in
> exportfs_decode_fh to return -ESTALE in case these operations are not definied.
>
>
>
> > Or implement the default decode routine as a contrast of
> > export_encode_fh().
> >
> > - Some FS (or its userspace helper) may want to put UUID into the
> > handle. If those FS already have UUID in their fs private_data, then
> > putting a pointer (instead of an array) is better.
> > Or creating two new operations in s_op to encode/decode handle
> > may be good too (regardless CONFIG_EXPORTFS). The generic
> > implementations should be provided, and when these function pointers
> > in s_op are not set, they should be called as default. These generic
> > implementaions will be able to be used by expfs.c too. And UUID in
> > super_block will be unnecessary.
>
>
> IMHO that would be over design. We can depend on exportfs
> interfaces and if not defined return EOPNOTSUPP.
>
How about the below patch ?
commit 5f421ffbe9dd7bb84c5992b1725c06b511bc76d8
Author: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Date: Wed May 19 14:52:44 2010 +0530
vfs: Return ENOSYS if CONFIG_EXPORTFS is not enabled
Both the syscalls need exportfs support enabled. So if CONFIG_EXPORTFS
is not enabled return ENOSYS. While converting name to handle check
whether the filesystem support handle decode. If not return EOPNOTSUPP.
We don't do a similar check in open by handle because exportfs_decode_fh
will return ESTALE if file system doesn't support fh_to_dentry callback.
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
diff --git a/fs/open.c b/fs/open.c
index 14e6d3c..b5fc067 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -1274,6 +1274,9 @@ SYSCALL_DEFINE4(name_to_handle_at, int, dfd, const char __user *, name,
long ret = -EINVAL;
struct path path;
+#ifndef CONFIG_EXPORTFS
+ return -ENOSYS;
+#endif
if ((flag & ~AT_SYMLINK_FOLLOW) != 0)
goto err_out;
@@ -1281,6 +1284,14 @@ SYSCALL_DEFINE4(name_to_handle_at, int, dfd, const char __user *, name,
ret = user_path_at(dfd, name, follow, &path);
if (ret)
goto err_out;
+ /*
+ * We need t make sure wether the file system
+ * support decoding of the file handle
+ */
+ if (!path.mnt->mnt_sb->s_export_op ||
+ !path.mnt->mnt_sb->s_export_op->fh_to_dentry)
+ return -EOPNOTSUPP;
+
ret = do_sys_name_to_handle(&path, handle);
path_put(&path);
err_out:
@@ -1450,6 +1461,9 @@ SYSCALL_DEFINE3(open_by_handle, int, mountdirfd,
{
long ret;
+#ifndef CONFIG_EXPORTFS
+ return -ENOSYS;
+#endif
if (force_o_largefile())
flags |= O_LARGEFILE;
next prev parent reply other threads:[~2010-05-19 9:26 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-17 5:33 [PATCH -V8 0/9] Generic name to handle and open by handle syscalls Aneesh Kumar K.V
2010-05-17 5:33 ` [PATCH -V8 1/9] exportfs: Return the minimum required handle size Aneesh Kumar K.V
2010-05-17 5:33 ` [PATCH -V8 2/9] vfs: Add name to file handle conversion support Aneesh Kumar K.V
2010-05-18 2:33 ` J. R. Okajima
2010-05-18 5:40 ` Aneesh Kumar K. V
2010-05-18 6:18 ` J. R. Okajima
2010-05-18 6:58 ` Aneesh Kumar K. V
2010-05-18 6:43 ` Dave Chinner
2010-05-18 10:17 ` Aneesh Kumar K. V
2010-05-19 7:15 ` J. R. Okajima
2010-05-19 8:52 ` Aneesh Kumar K. V
2010-05-19 9:26 ` Aneesh Kumar K. V [this message]
2010-05-19 13:50 ` J. R. Okajima
2010-05-17 5:33 ` [PATCH -V8 3/9] vfs: Add open by file handle support Aneesh Kumar K.V
2010-05-17 5:33 ` [PATCH -V8 4/9] vfs: Allow handle based open on symlinks Aneesh Kumar K.V
2010-05-17 5:33 ` [PATCH -V8 5/9] vfs: Support null pathname in readlink Aneesh Kumar K.V
2010-05-17 5:33 ` [PATCH -V8 6/9] ext4: Add get_fsid callback Aneesh Kumar K.V
2010-05-17 5:33 ` [PATCH -V8 7/9] x86: Add new syscalls for x86_32 Aneesh Kumar K.V
2010-05-17 5:33 ` [PATCH -V8 8/9] x86: Add new syscalls for x86_64 Aneesh Kumar K.V
2010-05-17 5:33 ` [PATCH -V8 9/9] ext3: Add get_fsid callback 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=87aarwkzsi.fsf@linux.vnet.ibm.com \
--to=aneesh.kumar@linux.vnet.ibm.com \
--cc=adilger@sun.com \
--cc=corbet@lwn.net \
--cc=david@fromorbit.com \
--cc=hch@infradead.org \
--cc=hooanon05@yahoo.co.jp \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=neilb@suse.de \
--cc=philippe.deniel@CEA.FR \
--cc=serue@us.ibm.com \
--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.