[Midnightbsd-cvs] src [8173] trunk/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c: zfs: correctly calculate dn_bonuslen for saving SAs to disk

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Fri Sep 16 22:41:07 EDT 2016


Revision: 8173
          http://svnweb.midnightbsd.org/src/?rev=8173
Author:   laffer1
Date:     2016-09-16 22:41:07 -0400 (Fri, 16 Sep 2016)
Log Message:
-----------
zfs: correctly calculate dn_bonuslen for saving SAs to disk

Modified Paths:
--------------
    trunk/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c

Modified: trunk/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c
===================================================================
--- trunk/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c	2016-09-17 02:39:24 UTC (rev 8172)
+++ trunk/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c	2016-09-17 02:41:07 UTC (rev 8173)
@@ -577,7 +577,7 @@
 	for (i = 0; i != attr_count; i++) {
 		boolean_t is_var_sz;
 
-		*total += attr_desc[i].sa_length;
+		*total += P2ROUNDUP(attr_desc[i].sa_length, 8);
 		if (done)
 			goto next;
 
@@ -712,6 +712,8 @@
 		length = SA_REGISTERED_LEN(sa, attrs[i]);
 		if (length == 0)
 			length = attr_desc[i].sa_length;
+		else
+			VERIFY(length == attr_desc[i].sa_length);
 
 		if (buf_space < length) {  /* switch to spill buffer */
 			VERIFY(bonustype == DMU_OT_SA);
@@ -741,6 +743,7 @@
 		if (sa->sa_attr_table[attrs[i]].sa_length == 0) {
 			sahdr->sa_lengths[len_idx++] = length;
 		}
+		VERIFY((uintptr_t)data_start % 8 == 0);
 		data_start = (void *)P2ROUNDUP(((uintptr_t)data_start +
 		    length), 8);
 		buf_space -= P2ROUNDUP(length, 8);



More information about the Midnightbsd-cvs mailing list