Re: disk revalidation updates and OOM
From: He Zhe <hidden>
Date: 2020-03-17 08:50:27
Also in:
linux-fsdevel, lkml
On 3/16/20 7:37 PM, Christoph Hellwig wrote:
On Mon, Mar 16, 2020 at 07:01:09PM +0800, He Zhe wrote:quoted
quoted
Do 142fe8f and 979c690d work with the build fix applied? (f0b870d shouldn't be interesting for this case).Sorry for slow reply. With my build fix applied, the issue is triggered since 142fe8f. And I can see the endless loop of invalidate and revalidate...Thanks. Can you test the patch below that restores the previous rather odd behavior of not clearing the capacity to 0 if partition scanning is not enabled?
This fixes the issue. I also validated it on v5.6-rc6. Thank you very much. Zhe
quoted hunk ↗ jump to hunk
diff --git a/fs/block_dev.c b/fs/block_dev.c index 69bf2fb6f7cd..daac27f4b821 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c@@ -1520,10 +1520,13 @@ int bdev_disk_changed(struct block_device *bdev, bool invalidate) if (ret) return ret; - if (invalidate) - set_capacity(disk, 0); - else if (disk->fops->revalidate_disk) - disk->fops->revalidate_disk(disk); + if (invalidate) { + if (disk_part_scan_enabled(disk)) + set_capacity(disk, 0); + } else { + if (disk->fops->revalidate_disk) + disk->fops->revalidate_disk(disk); + } check_disk_size_change(disk, bdev, !invalidate);