Messages in this thread | | | Subject | Re: disk revalidation updates and OOM | From | He Zhe <> | Date | Tue, 17 Mar 2020 16:50:11 +0800 |
| |
On 3/16/20 7:37 PM, Christoph Hellwig wrote: > On Mon, Mar 16, 2020 at 07:01:09PM +0800, He Zhe wrote: >>> 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
> > > 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); >
| |