+1
−1
Loading
An empty flush bio can have arbitrary bi_sector. The commit 2b1c6d7a introduced a regression that device mapper would fail an empty flush bio with -EIO if the sector pointed beyond the end of the device. The commit introduced an optimization, that optimization would pass flushes to __split_and_process_bio and __split_and_process_bio is not prepared to handle empty bios. Fix this bug by passing only non-empty flushes to __split_and_process_bio - non-empty flushes must have valid bi_sector. Empty bios will go through __send_empty_flush, as they did before the optimization. This problem can be reproduced by running the lvm2 test: make check_local T=lvconvert-thin.sh LVM_TEST_PREFER_BRD=0 Signed-off-by:Mikulas Patocka <mpatocka@redhat.com> Fixes: 2b1c6d7a ("dm: optimize REQ_PREFLUSH with data when using the linear target") Reported-by:
Zdenek Kabelac <zkabelac@redhat.com> Reviewed-by:
Bart Van Assche <bvanassche@acm.org>