diff usr/src/uts/common/fs/zfs/dsl_dataset.c @ 10799:395576ddfea9

6881321 zfs test rsend_012_pos panics when running daily.0807 archives
author Chris Kirby <Chris.Kirby@sun.com>
date Thu, 15 Oct 2009 07:09:05 -0600
parents dc03f981ea18
children e0bf032e8673
line wrap: on
line diff
--- a/usr/src/uts/common/fs/zfs/dsl_dataset.c	Wed Oct 14 17:18:49 2009 -0600
+++ b/usr/src/uts/common/fs/zfs/dsl_dataset.c	Thu Oct 15 07:09:05 2009 -0600
@@ -2824,6 +2824,10 @@
 	    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_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);