Message ID | 20201111153913.41840-2-mlevitsk@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | RFC: Issue with discards on raw block device without O_DIRECT | expand |
Am 11.11.2020 um 16:39 hat Maxim Levitsky geschrieben: > On Linux, fallocate(fd, FALLOC_FL_PUNCH_HOLE) when it is used on a block device, > without O_DIRECT can return -EBUSY if it races with another write to the same page. > > Since this is rare and discard is not a critical operation, ignore this error > > Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com> I'm applying this one for 5.2, it certainly shouldn't hurt and makes things work at least, even if possibly not in the optimal way. Patch 2 seems to be a bit less obvious and discussion is ongoing, so that's probably more 6.0 material. Kevin
On Mon, 2020-11-16 at 15:48 +0100, Kevin Wolf wrote: > Am 11.11.2020 um 16:39 hat Maxim Levitsky geschrieben: > > On Linux, fallocate(fd, FALLOC_FL_PUNCH_HOLE) when it is used on a block device, > > without O_DIRECT can return -EBUSY if it races with another write to the same page. > > > > Since this is rare and discard is not a critical operation, ignore this error > > > > Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com> > > I'm applying this one for 5.2, it certainly shouldn't hurt and makes > things work at least, even if possibly not in the optimal way. > > Patch 2 seems to be a bit less obvious and discussion is ongoing, so > that's probably more 6.0 material. > > Kevin Any feedback on patch 2? Best regards, Maxim Levitsky
diff --git a/block/file-posix.c b/block/file-posix.c index c63926d592..d5fd1dbcd2 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -1698,6 +1698,7 @@ static int handle_aiocb_write_zeroes_unmap(void *opaque) switch (ret) { case -ENOTSUP: case -EINVAL: + case -EBUSY: break; default: return ret;
On Linux, fallocate(fd, FALLOC_FL_PUNCH_HOLE) when it is used on a block device, without O_DIRECT can return -EBUSY if it races with another write to the same page. Since this is rare and discard is not a critical operation, ignore this error Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com> --- block/file-posix.c | 1 + 1 file changed, 1 insertion(+)