Re: fusefs_fhtovp() falsely rejects root file handle

2016-02-21 Thread Stefan Kempf
Martin Natano wrote:
> The fusefs_fhtovp() function makes use of the ROOTINO ((ufsino_t)2)
> define instead of using FUSE_ROOTINO ((ino_t)1), which is used
> everywhere else in the fuse filesystem. This causes a file handle for
> the filesystem root to be falsely rejected with ESTALE.
> 
> Comments?

As discussed, yes this looks good.
 
> Index: miscfs/fuse/fuse_vfsops.c
> ===
> RCS file: /cvs/src/sys/miscfs/fuse/fuse_vfsops.c,v
> retrieving revision 1.16
> diff -u -p -r1.16 fuse_vfsops.c
> --- miscfs/fuse/fuse_vfsops.c 19 Jul 2015 14:21:14 -  1.16
> +++ miscfs/fuse/fuse_vfsops.c 16 Feb 2016 09:12:29 -
> @@ -304,7 +304,7 @@ fusefs_fhtovp(struct mount *mp, struct f
>  
>   ufhp = (struct ufid *)fhp;
>   if (ufhp->ufid_len != sizeof(struct ufid) ||
> - ufhp->ufid_ino < ROOTINO)
> + ufhp->ufid_ino < FUSE_ROOTINO)
>   return (ESTALE);
>  
>   return (VFS_VGET(mp, ufhp->ufid_ino, vpp));
> 



fusefs_fhtovp() falsely rejects root file handle

2016-02-16 Thread Martin Natano
The fusefs_fhtovp() function makes use of the ROOTINO ((ufsino_t)2)
define instead of using FUSE_ROOTINO ((ino_t)1), which is used
everywhere else in the fuse filesystem. This causes a file handle for
the filesystem root to be falsely rejected with ESTALE.

Comments?

Index: miscfs/fuse/fuse_vfsops.c
===
RCS file: /cvs/src/sys/miscfs/fuse/fuse_vfsops.c,v
retrieving revision 1.16
diff -u -p -r1.16 fuse_vfsops.c
--- miscfs/fuse/fuse_vfsops.c   19 Jul 2015 14:21:14 -  1.16
+++ miscfs/fuse/fuse_vfsops.c   16 Feb 2016 09:12:29 -
@@ -304,7 +304,7 @@ fusefs_fhtovp(struct mount *mp, struct f
 
ufhp = (struct ufid *)fhp;
if (ufhp->ufid_len != sizeof(struct ufid) ||
-   ufhp->ufid_ino < ROOTINO)
+   ufhp->ufid_ino < FUSE_ROOTINO)
return (ESTALE);
 
return (VFS_VGET(mp, ufhp->ufid_ino, vpp));