On 4/3/20 8:43 AM, Andrzej Pietrasiewicz wrote: > The series is a v8 with small issues eliminated (see changelog below) > and more Reviewed-by tags - from Christoph. > > This series addresses some errors seen when using the loop > device directly backed by a block device. The first change plumbs > out the correct error message, and the second change prevents the > error from occurring in many cases. > > The errors look like this: > [ 90.880875] print_req_error: I/O error, dev loop5, sector 0 > > The errors occur when trying to do a discard or write zeroes operation > on a loop device backed by a block device that does not support write zeroes. > Firstly, the error itself is incorrectly reported as I/O error, but is > actually EOPNOTSUPP. The first patch plumbs out EOPNOTSUPP to properly > report the error. > > The second patch prevents these errors from occurring by mirroring the > zeroing capabilities of the underlying block device into the loop device. > Before this change, discard was always reported as being supported, and > the loop device simply turns around and does an fallocate operation on the > backing device. After this change, backing block devices that do support > zeroing will continue to work as before, and continue to get all the > benefits of doing that. Backing devices that do not support zeroing will > fail earlier, avoiding hitting the loop device at all and ultimately > avoiding this error in the logs. > > I can also confirm that this fixes test block/003 in the blktests, when > running blktests on a loop device backed by a block device. Applied, thanks. -- Jens Axboe