Originally written by
- The 'BIO' is a structure containing an I/O request (read or write) for
a block device.
- During traversal of the device-mapper tree, a single I/O might have to
be split (e.g. for a stripe, or on the boundary of a physical extent),
cloned (e.g. for mirroring), etc.
- The device-mapper has an internal I/O request struct, which manages the
mapping of the BIOs in this manner. It has one original BIO, and one or
more internally-generated BIOs.
- The original BIO is only being completed when all the BIOs generated for
it were completed.
- Note: to avoid copying the data fields, a BIO points to memory
pages - several BIO-s may point to the same (or different) pages. Thus,
we only need to copy the page lists, not the actually data of the pages.