From: DENIEL Philippe <philippe.deniel@CEA.FR>
To: Dave Chinner <david@fromorbit.com>
Cc: xfs@oss.sgi.com
Subject: Re: xfsprogs/libhandle : How to get the handle for a symbolic link ?
Date: Wed, 02 Jun 2010 09:20:31 +0200 [thread overview]
Message-ID: <4C06063F.1000609@cea.fr> (raw)
In-Reply-To: <20100601232917.GG1395@dastard>
Hi Dave,
In fact, path_to_handle does not do the work correctly. Its code is this
(extract from xfsprogs-3.0.3 sources) :
int
path_to_handle(
char *path, /* input, path to convert */
void **hanp, /* output, pointer to data */
size_t *hlen) /* output, size of returned
data */
{
int fd;
int result;
comarg_t obj;
fd = open(path, O_RDONLY);
if (fd < 0)
return -1;
obj.path = path;
result = obj_to_handle(path, fd, XFS_IOC_PATH_TO_HANDLE,
obj, hanp, hlen);
close(fd);
return result;
}
As you see, it performs a open at the beginning, which will results in
opening the file pointed by the symlink or returns ENOENT if the path
"inside" the symlink does not exist. I tried using open with O_NOFOLLOW
option, but it changed nothing, I got ELOOP when opening the file (which
is a regular behavior so far).
Any other ideas ?
Philippe
Dave Chinner a écrit :
> On Tue, Jun 01, 2010 at 01:48:22PM +0200, DENIEL Philippe wrote:
>
>> Hi,
>>
>> I am currently developing a user space nfs server with various
>> backends. One of this backend module use xfsprogss's libhandle to
>> implement XFS support. I could do almost everything with
>> open_by_handle and fd_to_handle, used jointly with ATFILE_SOURCE
>> functions, but I do have a problem with symbolic links. To build an
>> xfs object's handle, I get its parent handle (now problem to this)
>> then I call "openat" to get the fd to the object before calling
>> fd_to_handle. This works ok, but not for symbolic link : the openat
>> with follow the link. I added the O_NOFOLLOW flag to openat, but now
>> openat return ELOOP instead.
>> I know there is a readlink_by_handle function in libhandle. How
>> could I build the related handle to be used as argument to it (I
>> mean, how to build a handle that refers to the symlink itself, not
>> the object it points to).
>>
>
> Doesn't path_to_handle() do what you want? From the man page:
>
> "... If the final component of the path name is a symbolic
> link, the handle returned is that of the link itself."
>
> Cheers,
>
> Dave.
>
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2010-06-02 7:18 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-01 11:48 xfsprogs/libhandle : How to get the handle for a symbolic link ? DENIEL Philippe
2010-06-01 23:29 ` Dave Chinner
2010-06-02 7:20 ` DENIEL Philippe [this message]
2010-06-02 10:06 ` Christoph Hellwig
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=4C06063F.1000609@cea.fr \
--to=philippe.deniel@cea.fr \
--cc=david@fromorbit.com \
--cc=xfs@oss.sgi.com \
/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