diff options
author | Brian Behlendorf <[email protected]> | 2015-08-28 14:54:32 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2015-09-04 13:23:53 -0700 |
commit | 0500e835af3ea1f3abe27a572f7b2328b4cde386 (patch) | |
tree | a04792d8c5ad4d17ea4c7f80fe837b4e2caf11ec /module/zfs/zfs_vfsops.c | |
parent | aa9b27080b3411cddf93391bef3090a1a3fcaccc (diff) |
Support accessing .zfs/snapshot via NFS
This patch is based on the previous work done by @andrey-ve and
@yshui. It triggers the automount by using kern_path() to traverse
to the known snapshout mount point. Once the snapshot is mounted
NFS can access the contents of the snapshot.
Allowing NFS clients to access to the .zfs/snapshot directory would
normally mean that a root user on a client mounting an export with
'no_root_squash' would be able to use mkdir/rmdir/mv to manipulate
snapshots on the server. To prevent configuration mistakes a
zfs_admin_snapshot module option was added which disables the
mkdir/rmdir/mv functionally. System administators desiring this
functionally must explicitly enable it.
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #2797
Closes #1655
Closes #616
Diffstat (limited to 'module/zfs/zfs_vfsops.c')
-rw-r--r-- | module/zfs/zfs_vfsops.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/module/zfs/zfs_vfsops.c b/module/zfs/zfs_vfsops.c index 9ee7b2e8a..f105d9aed 100644 --- a/module/zfs/zfs_vfsops.c +++ b/module/zfs/zfs_vfsops.c @@ -1600,6 +1600,8 @@ zfs_vget(struct super_block *sb, struct inode **ipp, fid_t *fidp) zp_gen = zp_gen & gen_mask; if (zp_gen == 0) zp_gen = 1; + if ((fid_gen == 0) && (zsb->z_root == object)) + fid_gen = zp_gen; if (zp->z_unlinked || zp_gen != fid_gen) { dprintf("znode gen (%llu) != fid gen (%llu)\n", zp_gen, fid_gen); |