From: Andrey Vesnovaty Date: Tue, 30 Jul 2013 09:59:34 +0000 (+0300) Subject: Fix invalid fileid for snapshot root dentry X-Git-Tag: zfs-0.6.5~7 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=aa9b27080b3411cddf93391bef3090a1a3fcaccc;p=zfs Fix invalid fileid for snapshot root dentry Prevents NFS client from detection of different fileids of snapshot root dentry before & after snapshot mount. Signed-off-by: Andrey Vesnovaty Signed-off-by: Brian Behlendorf --- diff --git a/module/zfs/zfs_vnops.c b/module/zfs/zfs_vnops.c index 53d02a3aa..944f0ad3d 100644 --- a/module/zfs/zfs_vnops.c +++ b/module/zfs/zfs_vnops.c @@ -2415,6 +2415,16 @@ zfs_getattr_fast(struct inode *ip, struct kstat *sp) mutex_exit(&zp->z_lock); + /* + * Required to prevent NFS client from detecting different inode + * numbers of snapshot root dentry before and after snapshot mount. + */ + if (zsb->z_issnap) { + if (ip->i_sb->s_root->d_inode == ip) + sp->ino = ZFSCTL_INO_SNAPDIRS - + dmu_objset_id(zsb->z_os); + } + ZFS_EXIT(zsb); return (0);