]> granicus.if.org Git - zfs/commitdiff
ABD style cleanups
authorIsaac Huang <he.huang@intel.com>
Fri, 24 Feb 2017 20:05:42 +0000 (13:05 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 24 Feb 2017 20:05:42 +0000 (12:05 -0800)
The commit a6255b7fce400d485a0e87cbe369aa0ed7dc5dc4 removed a few
assertions which help catch errors and improve code readability. It also
duplicated two conditionals, which was unnecessary and made the code
confusing to read. This patch cleans it up.

Reviewed-by: David Quigley <david.quigley@intel.com>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Isaac Huang <he.huang@intel.com>
Closes #5802

module/zfs/vdev_raidz.c

index a92d3cbaad3b107bfe76057ef5101a6ba8c6d3d0..82e56305487fd6c21fc86c5961d3f10301b4ac20 100644 (file)
@@ -591,20 +591,20 @@ vdev_raidz_generate_parity_pq(raidz_map_t *rm)
                ccnt = rm->rm_col[c].rc_size / sizeof (p[0]);
 
                if (c == rm->rm_firstdatacol) {
+                       ASSERT(ccnt == pcnt || ccnt == 0);
                        abd_copy_to_buf(p, src, rm->rm_col[c].rc_size);
                        (void) memcpy(q, p, rm->rm_col[c].rc_size);
-               } else {
-                       struct pqr_struct pqr = { p, q, NULL };
-                       (void) abd_iterate_func(src, 0, rm->rm_col[c].rc_size,
-                           vdev_raidz_pq_func, &pqr);
-               }
 
-               if (c == rm->rm_firstdatacol) {
                        for (i = ccnt; i < pcnt; i++) {
                                p[i] = 0;
                                q[i] = 0;
                        }
                } else {
+                       struct pqr_struct pqr = { p, q, NULL };
+
+                       ASSERT(ccnt <= pcnt);
+                       (void) abd_iterate_func(src, 0, rm->rm_col[c].rc_size,
+                           vdev_raidz_pq_func, &pqr);
 
                        /*
                         * Treat short columns as though they are full of 0s.
@@ -639,22 +639,23 @@ vdev_raidz_generate_parity_pqr(raidz_map_t *rm)
                ccnt = rm->rm_col[c].rc_size / sizeof (p[0]);
 
                if (c == rm->rm_firstdatacol) {
+                       ASSERT(ccnt == pcnt || ccnt == 0);
                        abd_copy_to_buf(p, src, rm->rm_col[c].rc_size);
                        (void) memcpy(q, p, rm->rm_col[c].rc_size);
                        (void) memcpy(r, p, rm->rm_col[c].rc_size);
-               } else {
-                       struct pqr_struct pqr = { p, q, r };
-                       (void) abd_iterate_func(src, 0, rm->rm_col[c].rc_size,
-                           vdev_raidz_pqr_func, &pqr);
-               }
 
-               if (c == rm->rm_firstdatacol) {
                        for (i = ccnt; i < pcnt; i++) {
                                p[i] = 0;
                                q[i] = 0;
                                r[i] = 0;
                        }
                } else {
+                       struct pqr_struct pqr = { p, q, r };
+
+                       ASSERT(ccnt <= pcnt);
+                       (void) abd_iterate_func(src, 0, rm->rm_col[c].rc_size,
+                           vdev_raidz_pqr_func, &pqr);
+
                        /*
                         * Treat short columns as though they are full of 0s.
                         * Note that there's therefore nothing needed for P.