mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-26 04:07:45 +03:00
Illumos 4951 - ZFS administrative commands should use reserved space
4951 ZFS administrative commands should use reserved space, not with ENOSPC Reviewed by: John Kennedy <john.kennedy@delphix.com> Reviewed by: George Wilson <george.wilson@delphix.com> Reviewed by: Christopher Siden <christopher.siden@delphix.com> Reviewed by: Dan McDonald <danmcd@omniti.com> Approved by: Garrett D'Amore <garrett@damore.org> References: https://www.illumos.org/issues/4373 https://github.com/illumos/illumos-gate/commit/7d46dc6 Ported by: Brian Behlendorf <behlendorf1@llnl.gov>
This commit is contained in:
committed by
Brian Behlendorf
parent
cfec5b17b3
commit
3d45fdd6c0
@@ -1406,7 +1406,7 @@ dsl_dataset_snapshot(nvlist_t *snaps, nvlist_t *props, nvlist_t *errors)
|
||||
if (error == 0) {
|
||||
error = dsl_sync_task(firstname, dsl_dataset_snapshot_check,
|
||||
dsl_dataset_snapshot_sync, &ddsa,
|
||||
fnvlist_num_pairs(snaps) * 3);
|
||||
fnvlist_num_pairs(snaps) * 3, ZFS_SPACE_CHECK_NORMAL);
|
||||
}
|
||||
|
||||
if (suspended != NULL) {
|
||||
@@ -1518,7 +1518,7 @@ dsl_dataset_snapshot_tmp(const char *fsname, const char *snapname,
|
||||
}
|
||||
|
||||
error = dsl_sync_task(fsname, dsl_dataset_snapshot_tmp_check,
|
||||
dsl_dataset_snapshot_tmp_sync, &ddsta, 3);
|
||||
dsl_dataset_snapshot_tmp_sync, &ddsta, 3, ZFS_SPACE_CHECK_RESERVED);
|
||||
|
||||
if (needsuspend)
|
||||
zil_resume(cookie);
|
||||
@@ -1874,7 +1874,8 @@ dsl_dataset_rename_snapshot(const char *fsname,
|
||||
ddrsa.ddrsa_recursive = recursive;
|
||||
|
||||
error = dsl_sync_task(fsname, dsl_dataset_rename_snapshot_check,
|
||||
dsl_dataset_rename_snapshot_sync, &ddrsa, 1);
|
||||
dsl_dataset_rename_snapshot_sync, &ddrsa,
|
||||
1, ZFS_SPACE_CHECK_RESERVED);
|
||||
|
||||
if (error)
|
||||
return (SET_ERROR(error));
|
||||
@@ -2064,7 +2065,8 @@ dsl_dataset_rollback(const char *fsname, void *owner, nvlist_t *result)
|
||||
ddra.ddra_result = result;
|
||||
|
||||
return (dsl_sync_task(fsname, dsl_dataset_rollback_check,
|
||||
dsl_dataset_rollback_sync, &ddra, 1));
|
||||
dsl_dataset_rollback_sync, &ddra,
|
||||
1, ZFS_SPACE_CHECK_RESERVED));
|
||||
}
|
||||
|
||||
struct promotenode {
|
||||
@@ -2595,7 +2597,8 @@ dsl_dataset_promote(const char *name, char *conflsnap)
|
||||
ddpa.cr = CRED();
|
||||
|
||||
return (dsl_sync_task(name, dsl_dataset_promote_check,
|
||||
dsl_dataset_promote_sync, &ddpa, 2 + numsnaps));
|
||||
dsl_dataset_promote_sync, &ddpa,
|
||||
2 + numsnaps, ZFS_SPACE_CHECK_RESERVED));
|
||||
}
|
||||
|
||||
int
|
||||
@@ -2949,7 +2952,7 @@ dsl_dataset_set_refquota(const char *dsname, zprop_source_t source,
|
||||
ddsqra.ddsqra_value = refquota;
|
||||
|
||||
return (dsl_sync_task(dsname, dsl_dataset_set_refquota_check,
|
||||
dsl_dataset_set_refquota_sync, &ddsqra, 0));
|
||||
dsl_dataset_set_refquota_sync, &ddsqra, 0, ZFS_SPACE_CHECK_NONE));
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -3064,7 +3067,8 @@ dsl_dataset_set_refreservation(const char *dsname, zprop_source_t source,
|
||||
ddsqra.ddsqra_value = refreservation;
|
||||
|
||||
return (dsl_sync_task(dsname, dsl_dataset_set_refreservation_check,
|
||||
dsl_dataset_set_refreservation_sync, &ddsqra, 0));
|
||||
dsl_dataset_set_refreservation_sync, &ddsqra,
|
||||
0, ZFS_SPACE_CHECK_NONE));
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user