Re: [PATCH 0/2] Fix race between do_invalidatepage and init_page_buffers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu 19-11-20 22:36:00, Theodore Y. Ts'o wrote:
> On Tue, Aug 25, 2020 at 10:41:37AM +0200, Jan Kara wrote:
> > On Tue 25-08-20 10:11:29, yebin wrote:
> > > Your patch certainly can fix the problem with my testcases, but I don't
> > > think it's a good way. There are other paths that can call
> > > do_invalidatepage , for instance block ioctl to discard and zero_range.
> > 
> > OK, good point! So my patch is a cleanup that stands on its own and we
> > should do it regardless. But I agree we need more to completely fix this.
> > I don't quite like the callback you've added just for this special case
> > (furthermore it grows size of every buffer_head and there can be lots of
> > those). But I agree with the general idea that we shouldn't discard buffers
> > that the filesystem is working with.
> > 
> > In fact I believe that fallocate(2) and zeroout/discard ioctls should
> > return EBUSY if they are run against a mounted device because with 99%
> > probability something went wrong and you're accidentally discarding the
> > wrong device. But maybe I'm wrong. I'll run this idea through other fs
> > developers.
> 
> I'm going through old patches, and I'm trying to figure out where did
> we end up on this issue?   Did we come to a conclusion on this?

Yes, it is fixed by 384d87ef2c95 ("block: Do not discard buffers under a
mounted filesystem"). Also the block_write_full_page() got fixed up by
6dbf7bb555981 ("fs: Don't invalidate page buffers in
block_write_full_page()"). So we should be all set.

> One other thing which I noticed when looking at the original patch was
> shouldn't lvreduce not be allowed to run on a LV which has a mounted
> file system on its block device?

No, that is IMO working by design. The expectation is you can online-shrink
the fs and then lvreduce the device...

								Honza

-- 
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR



[Index of Archives]     [Reiser Filesystem Development]     [Ceph FS]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite National Park]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Media]

  Powered by Linux