Re: [PATCH] generic: test swap activation on file that used to have clones

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



On Wed, Dec 18, 2024 at 09:07:26AM +1030, Qu Wenruo wrote:
> 
> 
> 在 2024/12/18 03:52, Darrick J. Wong 写道:
> > On Tue, Dec 17, 2024 at 08:26:33AM +0000, Filipe Manana wrote:
> > > On Tue, Dec 17, 2024 at 8:14 AM Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote:
> > > > 
> > > > On Wed, Dec 11, 2024 at 03:09:40PM +0000, fdmanana@xxxxxxxxxx wrote:
> > > > > The test also fails sporadically on xfs and the bug was already reported
> > > > > to the xfs mailing list:
> > > > > 
> > > > >     https://lore.kernel.org/linux-xfs/CAL3q7H7cURmnkJfUUx44HM3q=xKmqHb80eRdisErD_x8rU4+0Q@xxxxxxxxxxxxxx/
> > > > > 
> > > > 
> > > > This version still doesn't seem to have the fs freeze/unfreeze that Darrick
> > > > asked for in that thread.
> > > 
> > > I don't get it, what's the freeze/unfreeze for? Where should they be placed?
> > > Is it some way to get around the bug on xfs?
> > 
> > freeze kicks the background inode gc thread so that the unlinked clones
> > actually get freed before the swapon call.  A less bighammer idea might
> > be to call XFS_IOC_FREE_EOFBLOCKS which also kicks the garbage
> > collectors.
> 
> I'm wondering why this GC things can not be done inside XFS' swapon call?
> 
> So that we don't need some per-fs workaround in a generic test case.

I suppose one could call xfs_inodegc_flush from within swapon with the
swap file's i_rwsem held, but now we're blocking swapon while we wait
for some unbounded number of probably unrelated unlinked inodes to be
freed on the off chance that one of them shared blocks.

A better answer might be to run FALLOC_FL_UNSHARE on the file, but now
we're making swapon more complex and potentially issuing a lot of IO to
make that happen.  If you can convince the fsdevel/mm folks that swapon
is supposed to try to correct things it doesn't like in the file mapping
(instead of returning EINVAL or whatever it does now) then we could add
that to the syscall definition.

--D

> Thanks,
> Qu
> > 
> > --D
> > 
> 
> 




[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux