On 23/11/2017 18:05, Andriy Gapon wrote: > > I've done a little experimentation with a version of abd_alloc_for_io() that > returns a chunked abd. zio_checksum_compute() couldn't cope with that in the > ZCHECKSUM_FLAG_EMBEDDED case. > At present the function uses abd_to_buf() and that requires a linear abd. > The use of abd_to_buf() can be replaced with some calls to > abd_copy_to_buf_off() > and abd_copy_from_buf_off(). But the code would become a bit "heavier" and > uglier. > > Are there any other ways to get a small buffer view into a chunked abd? > Size of zio_eck_t is just 40 bytes. It's located either near the begnning of > a > block or at the end of it. I think that it is not likely to ever cross chunk > boundaries unless an insane chunk size is used.
Another detail that's not directly related to the above is that even now we do not always send linear abd-s down to the leaf vdev layer. For example, raid-z creates chunked sub-ordinate abd-s. -- Andriy Gapon ------------------------------------------ openzfs-developer Archives: https://openzfs.topicbox.com/groups/developer/discussions/Tdc55c3947a3b78d0-Mb00150324637b931da2383a1 Powered by Topicbox: https://topicbox.com
