Remove dependency on linear ABD

Wherever possible it's best to avoid depending on a linear ABD.
Update the code accordingly in the following areas.

- vdev_raidz
- zio, zio_checksum
- zfs_fm
- change abd_alloc_for_io() to use abd_alloc()

Reviewed-by: David Quigley <david.quigley@intel.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Gvozden Neskovic <neskovic@gmail.com>
Closes #5668
This commit is contained in:
Gvozden Neskovic
2017-01-05 14:10:07 -05:00
committed by Brian Behlendorf
parent 2035575fd6
commit 84c07adadb
8 changed files with 147 additions and 118 deletions
+7 -2
View File
@@ -3736,6 +3736,7 @@ zdb_read_block(char *thing, spa_t *spa)
void *lbuf, *buf;
char *s, *p, *dup, *vdev, *flagstr;
int i, error;
boolean_t borrowed = B_FALSE;
dup = strdup(thing);
s = strtok(dup, ":");
@@ -3806,7 +3807,7 @@ zdb_read_block(char *thing, spa_t *spa)
psize = size;
lsize = size;
pabd = abd_alloc_linear(SPA_MAXBLOCKSIZE, B_FALSE);
pabd = abd_alloc_for_io(SPA_MAXBLOCKSIZE, B_FALSE);
lbuf = umem_alloc(SPA_MAXBLOCKSIZE, UMEM_NOFAIL);
BP_ZERO(bp);
@@ -3907,8 +3908,9 @@ zdb_read_block(char *thing, spa_t *spa)
buf = lbuf;
size = lsize;
} else {
buf = abd_to_buf(pabd);
size = psize;
buf = abd_borrow_buf_copy(pabd, size);
borrowed = B_TRUE;
}
if (flags & ZDB_FLAG_PRINT_BLKPTR)
@@ -3924,6 +3926,9 @@ zdb_read_block(char *thing, spa_t *spa)
else
zdb_dump_block(thing, buf, size, flags);
if (borrowed)
abd_return_buf_copy(pabd, buf, size);
out:
abd_free(pabd);
umem_free(lbuf, SPA_MAXBLOCKSIZE);