MFC r284309: zfs clone should not mount the clone if canmount == noauto
This commit is contained in:
parent
22520d35de
commit
77286cbd99
@ -592,6 +592,17 @@ finish_progress(char *done)
|
||||
pt_header = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check if the dataset is mountable and should be automatically mounted.
|
||||
*/
|
||||
static boolean_t
|
||||
should_auto_mount(zfs_handle_t *zhp)
|
||||
{
|
||||
if (!zfs_prop_valid_for_type(ZFS_PROP_CANMOUNT, zfs_get_type(zhp)))
|
||||
return (B_FALSE);
|
||||
return (zfs_prop_get_int(zhp, ZFS_PROP_CANMOUNT) == ZFS_CANMOUNT_ON);
|
||||
}
|
||||
|
||||
/*
|
||||
* zfs clone [-p] [-o prop=value] ... <snap> <fs | vol>
|
||||
*
|
||||
@ -677,9 +688,22 @@ zfs_do_clone(int argc, char **argv)
|
||||
|
||||
clone = zfs_open(g_zfs, argv[1], ZFS_TYPE_DATASET);
|
||||
if (clone != NULL) {
|
||||
if (zfs_get_type(clone) != ZFS_TYPE_VOLUME)
|
||||
if ((ret = zfs_mount(clone, NULL, 0)) == 0)
|
||||
ret = zfs_share(clone);
|
||||
/*
|
||||
* If the user doesn't want the dataset
|
||||
* automatically mounted, then skip the mount/share
|
||||
* step.
|
||||
*/
|
||||
if (should_auto_mount(clone)) {
|
||||
if ((ret = zfs_mount(clone, NULL, 0)) != 0) {
|
||||
(void) fprintf(stderr, gettext("clone "
|
||||
"successfully created, "
|
||||
"but not mounted\n"));
|
||||
} else if ((ret = zfs_share(clone)) != 0) {
|
||||
(void) fprintf(stderr, gettext("clone "
|
||||
"successfully created, "
|
||||
"but not shared\n"));
|
||||
}
|
||||
}
|
||||
zfs_close(clone);
|
||||
}
|
||||
}
|
||||
@ -728,7 +752,6 @@ zfs_do_create(int argc, char **argv)
|
||||
int ret = 1;
|
||||
nvlist_t *props;
|
||||
uint64_t intval;
|
||||
int canmount = ZFS_CANMOUNT_OFF;
|
||||
|
||||
if (nvlist_alloc(&props, NV_UNIQUE_NAME, 0) != 0)
|
||||
nomem();
|
||||
@ -868,19 +891,15 @@ zfs_do_create(int argc, char **argv)
|
||||
goto error;
|
||||
|
||||
ret = 0;
|
||||
/*
|
||||
* if the user doesn't want the dataset automatically mounted,
|
||||
* then skip the mount/share step
|
||||
*/
|
||||
if (zfs_prop_valid_for_type(ZFS_PROP_CANMOUNT, type))
|
||||
canmount = zfs_prop_get_int(zhp, ZFS_PROP_CANMOUNT);
|
||||
|
||||
/*
|
||||
* Mount and/or share the new filesystem as appropriate. We provide a
|
||||
* verbose error message to let the user know that their filesystem was
|
||||
* in fact created, even if we failed to mount or share it.
|
||||
* If the user doesn't want the dataset automatically mounted,
|
||||
* then skip the mount/share step altogether.
|
||||
*/
|
||||
if (!nomount && canmount == ZFS_CANMOUNT_ON) {
|
||||
if (!nomount && should_auto_mount(zhp)) {
|
||||
if (zfs_mount(zhp, NULL, 0) != 0) {
|
||||
(void) fprintf(stderr, gettext("filesystem "
|
||||
"successfully created, but not mounted\n"));
|
||||
|
Loading…
x
Reference in New Issue
Block a user