git://git.camperquake.de
/
zfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Disable zfs /etc/mtab updates
[zfs.git]
/
module
/
zfs
/
zfs_ioctl.c
diff --git
a/module/zfs/zfs_ioctl.c
b/module/zfs/zfs_ioctl.c
index
efb6bf5
..
088c64b
100644
(file)
--- a/
module/zfs/zfs_ioctl.c
+++ b/
module/zfs/zfs_ioctl.c
@@
-591,7
+591,7
@@
zfs_secpolicy_send(zfs_cmd_t *zc, cred_t *cr)
return (error);
}
return (error);
}
-#ifdef HAVE_SHARE
+#ifdef HAVE_S
MB_S
HARE
static int
zfs_secpolicy_deleg_share(zfs_cmd_t *zc, cred_t *cr)
{
static int
zfs_secpolicy_deleg_share(zfs_cmd_t *zc, cred_t *cr)
{
@@
-615,12
+615,12
@@
zfs_secpolicy_deleg_share(zfs_cmd_t *zc, cred_t *cr)
return (dsl_deleg_access(zc->zc_name,
ZFS_DELEG_PERM_SHARE, cr));
}
return (dsl_deleg_access(zc->zc_name,
ZFS_DELEG_PERM_SHARE, cr));
}
-#endif /* HAVE_SHARE */
+#endif /* HAVE_S
MB_S
HARE */
int
zfs_secpolicy_share(zfs_cmd_t *zc, cred_t *cr)
{
int
zfs_secpolicy_share(zfs_cmd_t *zc, cred_t *cr)
{
-#ifdef HAVE_SHARE
+#ifdef HAVE_S
MB_S
HARE
if (!INGLOBALZONE(curproc))
return (EPERM);
if (!INGLOBALZONE(curproc))
return (EPERM);
@@
-631,13
+631,13
@@
zfs_secpolicy_share(zfs_cmd_t *zc, cred_t *cr)
}
#else
return (ENOTSUP);
}
#else
return (ENOTSUP);
-#endif /* HAVE_SHARE */
+#endif /* HAVE_S
MB_S
HARE */
}
int
zfs_secpolicy_smb_acl(zfs_cmd_t *zc, cred_t *cr)
{
}
int
zfs_secpolicy_smb_acl(zfs_cmd_t *zc, cred_t *cr)
{
-#ifdef HAVE_SHARE
+#ifdef HAVE_S
MB_S
HARE
if (!INGLOBALZONE(curproc))
return (EPERM);
if (!INGLOBALZONE(curproc))
return (EPERM);
@@
-648,7
+648,7
@@
zfs_secpolicy_smb_acl(zfs_cmd_t *zc, cred_t *cr)
}
#else
return (ENOTSUP);
}
#else
return (ENOTSUP);
-#endif /* HAVE_SHARE */
+#endif /* HAVE_S
MB_S
HARE */
}
static int
}
static int
@@
-701,6
+701,9
@@
zfs_secpolicy_destroy(zfs_cmd_t *zc, cred_t *cr)
* and destroying snapshots requires descendent permissions, a successfull
* check of the top level snapshot applies to snapshots of all descendent
* datasets as well.
* and destroying snapshots requires descendent permissions, a successfull
* check of the top level snapshot applies to snapshots of all descendent
* datasets as well.
+ *
+ * The target snapshot may not exist when doing a recursive destroy.
+ * In this case fallback to permissions of the parent dataset.
*/
static int
zfs_secpolicy_destroy_snaps(zfs_cmd_t *zc, cred_t *cr)
*/
static int
zfs_secpolicy_destroy_snaps(zfs_cmd_t *zc, cred_t *cr)
@@
-711,6
+714,8
@@
zfs_secpolicy_destroy_snaps(zfs_cmd_t *zc, cred_t *cr)
dsname = kmem_asprintf("%s@%s", zc->zc_name, zc->zc_value);
error = zfs_secpolicy_destroy_perms(dsname, cr);
dsname = kmem_asprintf("%s@%s", zc->zc_name, zc->zc_value);
error = zfs_secpolicy_destroy_perms(dsname, cr);
+ if (error == ENOENT)
+ error = zfs_secpolicy_destroy_perms(zc->zc_name, cr);
strfree(dsname);
return (error);
strfree(dsname);
return (error);
@@
-1108,8
+1113,7
@@
get_zfs_sb(const char *dsname, zfs_sb_t **zsbp)
mutex_enter(&os->os_user_ptr_lock);
*zsbp = dmu_objset_get_user(os);
if (*zsbp && (*zsbp)->z_sb) {
mutex_enter(&os->os_user_ptr_lock);
*zsbp = dmu_objset_get_user(os);
if (*zsbp && (*zsbp)->z_sb) {
- if (atomic_inc_not_zero(&((*zsbp)->z_sb->s_active)))
- error = ESRCH;
+ atomic_inc(&((*zsbp)->z_sb->s_active));
} else {
error = ESRCH;
}
} else {
error = ESRCH;
}
@@
-4272,7
+4276,7
@@
zfs_ioc_diff(zfs_cmd_t *zc)
/*
* Remove all ACL files in shares dir
*/
/*
* Remove all ACL files in shares dir
*/
-#ifdef HAVE_SHARE
+#ifdef HAVE_S
MB_S
HARE
static int
zfs_smb_acl_purge(znode_t *dzp)
{
static int
zfs_smb_acl_purge(znode_t *dzp)
{
@@
-4291,12
+4295,12
@@
zfs_smb_acl_purge(znode_t *dzp)
zap_cursor_fini(&zc);
return (error);
}
zap_cursor_fini(&zc);
return (error);
}
-#endif /* HAVE
SHARE */
+#endif /* HAVE
_SMB_
SHARE */
static int
zfs_ioc_smb_acl(zfs_cmd_t *zc)
{
static int
zfs_ioc_smb_acl(zfs_cmd_t *zc)
{
-#ifdef HAVE_SHARE
+#ifdef HAVE_S
MB_S
HARE
vnode_t *vp;
znode_t *dzp;
vnode_t *resourcevp = NULL;
vnode_t *vp;
znode_t *dzp;
vnode_t *resourcevp = NULL;
@@
-4420,7
+4424,7
@@
zfs_ioc_smb_acl(zfs_cmd_t *zc)
return (error);
#else
return (ENOTSUP);
return (error);
#else
return (ENOTSUP);
-#endif /* HAVE_SHARE */
+#endif /* HAVE_S
MB_S
HARE */
}
/*
}
/*