We don't export individual snapshots, so mnt_export field in snapshot's
mount point is NULL. That's why when we try to access snapshots over NFS use mnt_export field from the parent file system. MFC after: 1 week
This commit is contained in:
parent
d77fa17750
commit
d6b8039292
@ -97,6 +97,8 @@ static int zfs_root(vfs_t *vfsp, int flags, vnode_t **vpp);
|
||||
static int zfs_statfs(vfs_t *vfsp, struct statfs *statp);
|
||||
static int zfs_vget(vfs_t *vfsp, ino_t ino, int flags, vnode_t **vpp);
|
||||
static int zfs_sync(vfs_t *vfsp, int waitfor);
|
||||
static int zfs_checkexp(vfs_t *vfsp, struct sockaddr *nam, int *extflagsp,
|
||||
struct ucred **credanonp, int *numsecflavors, int **secflavors);
|
||||
static int zfs_fhtovp(vfs_t *vfsp, fid_t *fidp, vnode_t **vpp);
|
||||
static void zfs_objset_close(zfsvfs_t *zfsvfs);
|
||||
static void zfs_freevfs(vfs_t *vfsp);
|
||||
@ -108,6 +110,7 @@ static struct vfsops zfs_vfsops = {
|
||||
.vfs_statfs = zfs_statfs,
|
||||
.vfs_vget = zfs_vget,
|
||||
.vfs_sync = zfs_sync,
|
||||
.vfs_checkexp = zfs_checkexp,
|
||||
.vfs_fhtovp = zfs_fhtovp,
|
||||
};
|
||||
|
||||
@ -1115,6 +1118,26 @@ zfs_vget(vfs_t *vfsp, ino_t ino, int flags, vnode_t **vpp)
|
||||
return (err);
|
||||
}
|
||||
|
||||
static int
|
||||
zfs_checkexp(vfs_t *vfsp, struct sockaddr *nam, int *extflagsp,
|
||||
struct ucred **credanonp, int *numsecflavors, int **secflavors)
|
||||
{
|
||||
zfsvfs_t *zfsvfs = vfsp->vfs_data;
|
||||
|
||||
/*
|
||||
* If this is regular file system vfsp is the same as
|
||||
* zfsvfs->z_parent->z_vfs, but if it is snapshot,
|
||||
* zfsvfs->z_parent->z_vfs represents parent file system
|
||||
* which we have to use here, because only this file system
|
||||
* has mnt_export configured.
|
||||
*/
|
||||
vfsp = zfsvfs->z_parent->z_vfs;
|
||||
|
||||
return (vfs_stdcheckexp(zfsvfs->z_parent->z_vfs, nam, extflagsp,
|
||||
credanonp, numsecflavors, secflavors));
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
zfs_fhtovp(vfs_t *vfsp, fid_t *fidp, vnode_t **vpp)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user