Errors from basic open_by_handle operations
Roger Willcocks
roger at filmlight.ltd.uk
Thu Apr 9 09:09:18 CDT 2015
The code below works here on a CentOS 6.4 box ('test' is a file at the
root of the volume):
$ ./a.out
hlen = 24
fd = -1
$ sudo ./a.out
hlen = 24
fd = 4
/* g++ handle_test.cpp -lhandle */
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <xfs/handle.h>
int main(int argc, char *argv[])
{
void *xfs_handle = 0;
size_t hlen = 0;
if (path_to_fshandle("/mnt/disk1", &xfs_handle, &hlen) < 0)
exit(4);
if (path_to_handle("/mnt/disk1/test", &xfs_handle, &hlen) < 0)
exit(5);
printf("hlen = %d\n", (int)hlen);
int fd = open_by_handle(xfs_handle, hlen, O_RDWR);
printf("fd = %d\n", fd);
return 0;
}
On Thu, 2015-04-09 at 13:53 +0100, Mark Hills wrote:
> I am having troubles with elementary file handle functions in libhandle.
>
> A basic open_by_handle is giving "Bad file descriptor".
>
> But I am suspicious of a side effect; using path_to_fshandle earlier in
> the program changes these errors to "Operation not permitted".
>
> Is there a basic mistake in my use of these calls, or a bug/unmaintained
> code?
>
> I am on an XFS filesystem (otherwise the first call fails with
> 'inappropriate ioctl'). The only documentation I can find is the man page;
> no mention about initialising the library, and I wasn't able to find any
> examples.
>
> I'm on Scientific Linux 6.6 (like RedHat 6, kernel 2.6.32-504.1.3), and
> also tried updating to the latest xfsprogs from Git, with the same
> results.
>
> Many thanks
>
--
Roger Willcocks <roger at filmlight.ltd.uk>
More information about the xfs
mailing list