mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 18:40:43 +03:00
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:
committed by
Brian Behlendorf
parent
2035575fd6
commit
84c07adadb
+7
-2
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user