From aa9b27080b3411cddf93391bef3090a1a3fcaccc Mon Sep 17 00:00:00 2001 From: Andrey Vesnovaty Date: Tue, 30 Jul 2013 12:59:34 +0300 Subject: [PATCH] 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 --- module/zfs/zfs_vnops.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/module/zfs/zfs_vnops.c b/module/zfs/zfs_vnops.c index 53d02a3aa5..944f0ad3dd 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);