Please enable JavaScript.
Coggle requires JavaScript to display documents.
DM-bio-flush-sts_ioerr - Coggle Diagram
DM-bio-flush-sts_ioerr
observation
lvm over lvm
the ll dm is over raid
raid is over two sata disks
each disk has different capacity
btrfs
flush with data or wo?
empty
__send_empty_flush
facts
btrfs
data-less flush req
write_dev_flush
this case
flush with data(REQ_FUA)
write_dev_supers
device mapper
flags
DM_MAPIO_KILL
convert to BLK_STS_IOERR
DM_MAPIO_REQUEUE
used by mpath & dm-raid
dm-raid
why DM_MAPIO_REQUEUE is used?
used by dm-zoned
how dm core handles requeue
added for dealing with noflush
dm_suspend
what is DMF_NOFLUSH_SUSPENDING
DM_NOFLUSH_FLAG
Set this to suspend without flushing queued ios
introduced for mpath
commit 2e93ccc1933d08d32d9b
fast fail for DMF_BLOCK_IO_FOR_SUSPEND,
dm_submit_bio()
dm_io_set_error
dm bio splitting
FS bio may be splitted to several dm bios
each bio is dealt with single dm_io(tio)
tio->orig_bio points to FS bio
bio_inc_remaining() done in dio_submit_bio()
all dm dm bios are chained together
so FS bio can be completed after all dm bios are done
dm's own split
__split_and_process_bio
max_io_len
build clone and send clone via __map_bio()
dm-raid
may return REQUEUE
how does bio_end_sector() > 0?
linear_map()