Correct ABD size for split block ZIOs
Currently when layering the ABD buffer of each split block on top of an indirect vdev's ZIO ABD we don't specify the split block's ABD. This results in those ABDs being incorrectly sized by inheriting the size of their parent ABD which is larger than what each split block needs. The above behavior isn't causing any bugs currently but can lead to unexpected ABD sizes for people analyzing and/or working on the ZIO codepath. This patch fixes this behavior by properly setting the ABD size for split block ZIOs. Reviewed-by: Matthew Ahrens <mahrens@delphix.com> Reviewed-by: Igor Kozhukhov <igor@dilos.org> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Mark Maybee <mark.maybee@delphix.com> Reviewed-by: Brian Atkinson <batkinson@lanl.gov> Signed-off-by: Serapheim Dimitropoulos <serapheim@delphix.com> Closes #14804
This commit is contained in:
parent
5a83f761c7
commit
0c93d86f01
|
@ -1370,9 +1370,10 @@ vdev_indirect_io_start(zio_t *zio)
|
||||||
is != NULL; is = list_next(&iv->iv_splits, is)) {
|
is != NULL; is = list_next(&iv->iv_splits, is)) {
|
||||||
zio_nowait(zio_vdev_child_io(zio, NULL,
|
zio_nowait(zio_vdev_child_io(zio, NULL,
|
||||||
is->is_vdev, is->is_target_offset,
|
is->is_vdev, is->is_target_offset,
|
||||||
abd_get_offset(zio->io_abd,
|
abd_get_offset_size(zio->io_abd,
|
||||||
is->is_split_offset), is->is_size,
|
is->is_split_offset, is->is_size),
|
||||||
zio->io_type, zio->io_priority, 0,
|
is->is_size, zio->io_type,
|
||||||
|
zio->io_priority, 0,
|
||||||
vdev_indirect_child_io_done, zio));
|
vdev_indirect_child_io_done, zio));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue