open_by_handle on a file ?

DENIEL Philippe
2010-05-12T15:37:34Z

Hi,

I start using libhandle.so from xfsprogs-3.0.3 package. I meet an issue
here : I can get a handle from files or directory.
When used on diretories, open_by_handle works fine : I can read entries
in it by using getdents, create stuff / removing stuff by using the
ATFILE_FUNCTION (mkdirat, renameat, ...)

Trouble start when I want to open a file with open_by_handle. I have a
small test program that does this :

rc = path_to_fshandle( path_dir, (void **)(&fshandle),
&fshandlelen) ;
if( rc < 0 ) exit( -1)

rc = path_to_handle( path_dir, (void **)(&filehandle), &handlelen) ;
if( rc < 0 ) exit( -1 )

fd = open_by_handle( filehandle, handlelen, O_RDONLY ) ;
printf( "open_by_handle: fd=%d \n", fd ) ;
if( fd < 0 )
printf( "----> Error=%d | %s\n", errno, strerror( errno ) ) ;

The open_by_handle failed with errno=20 aka ENOTDIR, which is true, this
is a file and no directory.
Question is : Can I use open_by_handle to open a regular file ? If yes,
how should I proceed. If no, how should I do to open a file knowing its
handle ?

Thanks in advance for your time and answer.

Regards

Philippe