diff options
author | Chris Kirby <Chris.Kirby@sun.com> | 2009-10-15 07:09:05 -0600 |
---|---|---|
committer | Chris Kirby <Chris.Kirby@sun.com> | 2009-10-15 07:09:05 -0600 |
commit | c4cbca4f3a766d8c662ce2e0e36a6f1e41ff0a80 (patch) | |
tree | fa442160f49f3df75537c8566960b24810f5062a /usr/src/uts/common/fs | |
parent | d4c50ab7dcb92d18d675302718e6b95d9ef2e291 (diff) | |
download | illumos-gate-c4cbca4f3a766d8c662ce2e0e36a6f1e41ff0a80.tar.gz |
6881321 zfs test rsend_012_pos panics when running daily.0807 archives
Diffstat (limited to 'usr/src/uts/common/fs')
-rw-r--r-- | usr/src/uts/common/fs/zfs/dsl_dataset.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/usr/src/uts/common/fs/zfs/dsl_dataset.c b/usr/src/uts/common/fs/zfs/dsl_dataset.c index d3a423bb40..aadf4cb051 100644 --- a/usr/src/uts/common/fs/zfs/dsl_dataset.c +++ b/usr/src/uts/common/fs/zfs/dsl_dataset.c @@ -2824,6 +2824,10 @@ dsl_dataset_clone_swap_check(void *arg1, void *arg2, dmu_tx_t *tx) dsl_dir_space_available(csa->ohds->ds_dir, NULL, 0, TRUE)) return (ENOSPC); + if (csa->ohds->ds_quota != 0 && + csa->cds->ds_phys->ds_unique_bytes > csa->ohds->ds_quota) + return (EDQUOT); + return (0); } @@ -2835,7 +2839,8 @@ dsl_dataset_clone_swap_sync(void *arg1, void *arg2, cred_t *cr, dmu_tx_t *tx) dsl_pool_t *dp = csa->cds->ds_dir->dd_pool; ASSERT(csa->cds->ds_reserved == 0); - ASSERT(csa->cds->ds_quota == csa->ohds->ds_quota); + ASSERT(csa->ohds->ds_quota == 0 || + csa->cds->ds_phys->ds_unique_bytes <= csa->ohds->ds_quota); dmu_buf_will_dirty(csa->cds->ds_dbuf, tx); dmu_buf_will_dirty(csa->ohds->ds_dbuf, tx); |