Merge branch 'linux-have-zpl' into refs/top-bases/linux-zfs-branch
This commit is contained in:
commit
2f1ba85948
|
@ -491,6 +491,8 @@ typedef struct vdev_stat {
|
||||||
#define ZVOL_DRIVER "zvol"
|
#define ZVOL_DRIVER "zvol"
|
||||||
#define ZFS_DRIVER "zfs"
|
#define ZFS_DRIVER "zfs"
|
||||||
#define ZFS_DEV "/dev/zfs"
|
#define ZFS_DEV "/dev/zfs"
|
||||||
|
#define ZFS_MAJOR 230 /* XXX: Arbitrary */
|
||||||
|
#define ZFS_MINORS 16 /* XXX: Arbitrary */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* zvol paths. Irritatingly, the devfsadm interfaces want all these
|
* zvol paths. Irritatingly, the devfsadm interfaces want all these
|
||||||
|
|
|
@ -394,6 +394,7 @@ zfs_secpolicy_send(zfs_cmd_t *zc, cred_t *cr)
|
||||||
int
|
int
|
||||||
zfs_secpolicy_share(zfs_cmd_t *zc, cred_t *cr)
|
zfs_secpolicy_share(zfs_cmd_t *zc, cred_t *cr)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
if (!INGLOBALZONE(curproc))
|
if (!INGLOBALZONE(curproc))
|
||||||
return (EPERM);
|
return (EPERM);
|
||||||
|
|
||||||
|
@ -420,6 +421,9 @@ zfs_secpolicy_share(zfs_cmd_t *zc, cred_t *cr)
|
||||||
return (dsl_deleg_access(zc->zc_name,
|
return (dsl_deleg_access(zc->zc_name,
|
||||||
ZFS_DELEG_PERM_SHARE, cr));
|
ZFS_DELEG_PERM_SHARE, cr));
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
return (ENOTSUP);
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -1688,6 +1692,7 @@ zfs_ioc_pool_get_props(zfs_cmd_t *zc)
|
||||||
static int
|
static int
|
||||||
zfs_ioc_iscsi_perm_check(zfs_cmd_t *zc)
|
zfs_ioc_iscsi_perm_check(zfs_cmd_t *zc)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
nvlist_t *nvp;
|
nvlist_t *nvp;
|
||||||
int error;
|
int error;
|
||||||
uint32_t uid;
|
uint32_t uid;
|
||||||
|
@ -1730,6 +1735,9 @@ zfs_ioc_iscsi_perm_check(zfs_cmd_t *zc)
|
||||||
zfs_prop_to_name(ZFS_PROP_SHAREISCSI), usercred);
|
zfs_prop_to_name(ZFS_PROP_SHAREISCSI), usercred);
|
||||||
crfree(usercred);
|
crfree(usercred);
|
||||||
return (error);
|
return (error);
|
||||||
|
#else
|
||||||
|
return (ENOTSUP);
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1843,6 +1851,7 @@ zfs_ioc_remove_minor(zfs_cmd_t *zc)
|
||||||
static vfs_t *
|
static vfs_t *
|
||||||
zfs_get_vfs(const char *resource)
|
zfs_get_vfs(const char *resource)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
struct vfs *vfsp;
|
struct vfs *vfsp;
|
||||||
struct vfs *vfs_found = NULL;
|
struct vfs *vfs_found = NULL;
|
||||||
|
|
||||||
|
@ -1858,6 +1867,9 @@ zfs_get_vfs(const char *resource)
|
||||||
} while (vfsp != rootvfs);
|
} while (vfsp != rootvfs);
|
||||||
vfs_list_unlock();
|
vfs_list_unlock();
|
||||||
return (vfs_found);
|
return (vfs_found);
|
||||||
|
#else
|
||||||
|
return NULL;
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ARGSUSED */
|
/* ARGSUSED */
|
||||||
|
@ -2238,6 +2250,7 @@ zfs_ioc_snapshot(zfs_cmd_t *zc)
|
||||||
int
|
int
|
||||||
zfs_unmount_snap(char *name, void *arg)
|
zfs_unmount_snap(char *name, void *arg)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
vfs_t *vfsp = NULL;
|
vfs_t *vfsp = NULL;
|
||||||
|
|
||||||
if (arg) {
|
if (arg) {
|
||||||
|
@ -2269,6 +2282,7 @@ zfs_unmount_snap(char *name, void *arg)
|
||||||
if ((err = dounmount(vfsp, flag, kcred)) != 0)
|
if ((err = dounmount(vfsp, flag, kcred)) != 0)
|
||||||
return (err);
|
return (err);
|
||||||
}
|
}
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2321,6 +2335,7 @@ zfs_ioc_destroy(zfs_cmd_t *zc)
|
||||||
static int
|
static int
|
||||||
zfs_ioc_rollback(zfs_cmd_t *zc)
|
zfs_ioc_rollback(zfs_cmd_t *zc)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
objset_t *os;
|
objset_t *os;
|
||||||
int error;
|
int error;
|
||||||
zfsvfs_t *zfsvfs = NULL;
|
zfsvfs_t *zfsvfs = NULL;
|
||||||
|
@ -2366,6 +2381,9 @@ zfs_ioc_rollback(zfs_cmd_t *zc)
|
||||||
/* Note, the dmu_objset_rollback() releases the objset for us. */
|
/* Note, the dmu_objset_rollback() releases the objset for us. */
|
||||||
|
|
||||||
return (error);
|
return (error);
|
||||||
|
#else
|
||||||
|
return (ENOTSUP);
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2436,7 +2454,9 @@ static int
|
||||||
zfs_ioc_recv(zfs_cmd_t *zc)
|
zfs_ioc_recv(zfs_cmd_t *zc)
|
||||||
{
|
{
|
||||||
file_t *fp;
|
file_t *fp;
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
objset_t *os;
|
objset_t *os;
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
dmu_recv_cookie_t drc;
|
dmu_recv_cookie_t drc;
|
||||||
zfsvfs_t *zfsvfs = NULL;
|
zfsvfs_t *zfsvfs = NULL;
|
||||||
boolean_t force = (boolean_t)zc->zc_guid;
|
boolean_t force = (boolean_t)zc->zc_guid;
|
||||||
|
@ -2470,6 +2490,7 @@ zfs_ioc_recv(zfs_cmd_t *zc)
|
||||||
return (EBADF);
|
return (EBADF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
if (dmu_objset_open(tofs, DMU_OST_ANY,
|
if (dmu_objset_open(tofs, DMU_OST_ANY,
|
||||||
DS_MODE_USER | DS_MODE_READONLY, &os) == 0) {
|
DS_MODE_USER | DS_MODE_READONLY, &os) == 0) {
|
||||||
/*
|
/*
|
||||||
|
@ -2499,6 +2520,7 @@ zfs_ioc_recv(zfs_cmd_t *zc)
|
||||||
|
|
||||||
dmu_objset_close(os);
|
dmu_objset_close(os);
|
||||||
}
|
}
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
|
|
||||||
if (zc->zc_string[0]) {
|
if (zc->zc_string[0]) {
|
||||||
error = dmu_objset_open(zc->zc_string, DMU_OST_ANY,
|
error = dmu_objset_open(zc->zc_string, DMU_OST_ANY,
|
||||||
|
@ -2564,7 +2586,9 @@ zfs_ioc_recv(zfs_cmd_t *zc)
|
||||||
out:
|
out:
|
||||||
if (zfsvfs) {
|
if (zfsvfs) {
|
||||||
mutex_exit(&zfsvfs->z_online_recv_lock);
|
mutex_exit(&zfsvfs->z_online_recv_lock);
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
VFS_RELE(zfsvfs->z_vfs);
|
VFS_RELE(zfsvfs->z_vfs);
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
}
|
}
|
||||||
nvlist_free(props);
|
nvlist_free(props);
|
||||||
nvlist_free(origprops);
|
nvlist_free(origprops);
|
||||||
|
@ -2773,6 +2797,7 @@ zfs_ioc_promote(zfs_cmd_t *zc)
|
||||||
* the first file system is shared.
|
* the first file system is shared.
|
||||||
* Neither sharefs, nfs or smbsrv are unloadable modules.
|
* Neither sharefs, nfs or smbsrv are unloadable modules.
|
||||||
*/
|
*/
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
int (*znfsexport_fs)(void *arg);
|
int (*znfsexport_fs)(void *arg);
|
||||||
int (*zshare_fs)(enum sharefs_sys_op, share_t *, uint32_t);
|
int (*zshare_fs)(enum sharefs_sys_op, share_t *, uint32_t);
|
||||||
int (*zsmbexport_fs)(void *arg, boolean_t add_share);
|
int (*zsmbexport_fs)(void *arg, boolean_t add_share);
|
||||||
|
@ -2804,10 +2829,12 @@ zfs_init_sharefs()
|
||||||
}
|
}
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
zfs_ioc_share(zfs_cmd_t *zc)
|
zfs_ioc_share(zfs_cmd_t *zc)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
int error;
|
int error;
|
||||||
int opcode;
|
int opcode;
|
||||||
|
|
||||||
|
@ -2897,9 +2924,12 @@ zfs_ioc_share(zfs_cmd_t *zc)
|
||||||
zc->zc_share.z_sharemax);
|
zc->zc_share.z_sharemax);
|
||||||
|
|
||||||
return (error);
|
return (error);
|
||||||
|
#else
|
||||||
|
return (ENOTSUP);
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* pool create, destroy, and export don't log the history as part of
|
* pool create, destroy, and export don't log the history as part of
|
||||||
* zfsdev_ioctl, but rather zfs_ioc_pool_create, and zfs_ioc_pool_export
|
* zfsdev_ioctl, but rather zfs_ioc_pool_create, and zfs_ioc_pool_export
|
||||||
|
@ -3163,7 +3193,9 @@ _init(void)
|
||||||
|
|
||||||
error = ldi_ident_from_mod(&modlinkage, &zfs_li);
|
error = ldi_ident_from_mod(&modlinkage, &zfs_li);
|
||||||
ASSERT(error == 0);
|
ASSERT(error == 0);
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
mutex_init(&zfs_share_lock, NULL, MUTEX_DEFAULT, NULL);
|
mutex_init(&zfs_share_lock, NULL, MUTEX_DEFAULT, NULL);
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
@ -3182,6 +3214,7 @@ _fini(void)
|
||||||
zvol_fini();
|
zvol_fini();
|
||||||
zfs_fini();
|
zfs_fini();
|
||||||
spa_fini();
|
spa_fini();
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
if (zfs_nfsshare_inited)
|
if (zfs_nfsshare_inited)
|
||||||
(void) ddi_modclose(nfs_mod);
|
(void) ddi_modclose(nfs_mod);
|
||||||
if (zfs_smbshare_inited)
|
if (zfs_smbshare_inited)
|
||||||
|
@ -3189,10 +3222,12 @@ _fini(void)
|
||||||
if (zfs_nfsshare_inited || zfs_smbshare_inited)
|
if (zfs_nfsshare_inited || zfs_smbshare_inited)
|
||||||
(void) ddi_modclose(sharefs_mod);
|
(void) ddi_modclose(sharefs_mod);
|
||||||
|
|
||||||
|
mutex_destroy(&zfs_share_lock);
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
|
|
||||||
tsd_destroy(&zfs_fsyncer_key);
|
tsd_destroy(&zfs_fsyncer_key);
|
||||||
ldi_ident_release(zfs_li);
|
ldi_ident_release(zfs_li);
|
||||||
zfs_li = NULL;
|
zfs_li = NULL;
|
||||||
mutex_destroy(&zfs_share_lock);
|
|
||||||
|
|
||||||
return (error);
|
return (error);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1521,6 +1521,7 @@ zfs_vfsinit(int fstype, char *name)
|
||||||
void
|
void
|
||||||
zfs_init(void)
|
zfs_init(void)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
/*
|
/*
|
||||||
* Initialize .zfs directory structures
|
* Initialize .zfs directory structures
|
||||||
*/
|
*/
|
||||||
|
@ -1530,19 +1531,26 @@ zfs_init(void)
|
||||||
* Initialize znode cache, vnode ops, etc...
|
* Initialize znode cache, vnode ops, etc...
|
||||||
*/
|
*/
|
||||||
zfs_znode_init();
|
zfs_znode_init();
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
zfs_fini(void)
|
zfs_fini(void)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
zfsctl_fini();
|
zfsctl_fini();
|
||||||
zfs_znode_fini();
|
zfs_znode_fini();
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
zfs_busy(void)
|
zfs_busy(void)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
return (zfs_active_fs_count != 0);
|
return (zfs_active_fs_count != 0);
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
Loading…
Reference in New Issue