diff options
author | Christopher Siden <chris@delphix.com> | 2014-07-10 18:57:59 -0800 |
---|---|---|
committer | Christopher Siden <chris@delphix.com> | 2014-07-10 19:57:59 -0700 |
commit | c39f2c8cacf297ec37acd421f4c4fec127991995 (patch) | |
tree | 5b380c54d7215ce69ee33dd88beaa97419f49335 /usr/src | |
parent | 9c62f9ec8ed42265fb80cb8d6873fabfae3941ab (diff) | |
download | illumos-joyent-c39f2c8cacf297ec37acd421f4c4fec127991995.tar.gz |
4951 ZFS administrative commands should use reserved space, not fail with ENOSPC (fix call)
Approved by: Christopher Siden <christopher.siden@delphix.com>
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/uts/common/fs/zfs/dsl_pool.c | 7 | ||||
-rw-r--r-- | usr/src/uts/common/fs/zfs/sys/spa.h | 1 |
2 files changed, 2 insertions, 6 deletions
diff --git a/usr/src/uts/common/fs/zfs/dsl_pool.c b/usr/src/uts/common/fs/zfs/dsl_pool.c index 76ca96b143..058dc90e25 100644 --- a/usr/src/uts/common/fs/zfs/dsl_pool.c +++ b/usr/src/uts/common/fs/zfs/dsl_pool.c @@ -612,17 +612,12 @@ dsl_pool_adjustedsize(dsl_pool_t *dp, boolean_t netfree) uint64_t space, resv; /* - * Reserve about 1.6% (1/64), or at least 32MB, for allocation - * efficiency. - * XXX The intent log is not accounted for, so it must fit - * within this slop. - * * If we're trying to assess whether it's OK to do a free, * cut the reservation in half to allow forward progress * (e.g. make it possible to rm(1) files from a full pool). */ space = spa_get_dspace(dp->dp_spa); - resv = MAX(space >> 6, SPA_MINDEVSIZE >> 1); + resv = spa_get_slop_space(dp->dp_spa); if (netfree) resv >>= 1; diff --git a/usr/src/uts/common/fs/zfs/sys/spa.h b/usr/src/uts/common/fs/zfs/sys/spa.h index a2f200e493..36b6c93bde 100644 --- a/usr/src/uts/common/fs/zfs/sys/spa.h +++ b/usr/src/uts/common/fs/zfs/sys/spa.h @@ -739,6 +739,7 @@ extern spa_load_state_t spa_load_state(spa_t *spa); extern uint64_t spa_freeze_txg(spa_t *spa); extern uint64_t spa_get_asize(spa_t *spa, uint64_t lsize); extern uint64_t spa_get_dspace(spa_t *spa); +extern uint64_t spa_get_slop_space(spa_t *spa); extern void spa_update_dspace(spa_t *spa); extern uint64_t spa_version(spa_t *spa); extern boolean_t spa_deflate(spa_t *spa); |