On Fri, Mar 19, 2021 at 09:43:54AM -0700, Darrick J. Wong wrote: > > That being said, the quota inode walk is a little different in that it > > doesn't use any tags, so switching it to a plain list_for_each_entry_safe > > on sb->s_inodes would seems more sensible, something like this untested > > patch: > > Hmm, well, I look forward to hearing the results of your testing. :) I've thrown a whole lot ot of load onto it and it seems to survive just fine. > I /think/ this will work, since quotaoff doesn't touch inodes that can't > be igrabbed (i.e. their VFS state is gone), so walking sb->s_inodes > /should/ be the same. The only thing I'm not sure about is that the vfs > removes the inode from the sb list before clear_inode sets I_FREEING > (to prevent further igrab), which /could/ introduce a behavioral change? inode_sb_list_delinode_sb_list_del( is called from evict(), which has a BUG_ON to assert I_FREEING is already set.