Messages in this thread | | | Date | Mon, 29 Feb 2016 15:58:37 -0500 | From | Tejun Heo <> | Subject | Re: [PATCH block/for-linus] writeback: flush inode cgroup wb switches instead of pinning super_block |
| |
On Mon, Feb 29, 2016 at 08:54:28PM +0000, Al Viro wrote: > > This patch removes the problematic super_block pinning and instead > > makes generic_shutdown_super() flush in-flight wb switches. wb > > switches are now executed on a dedicated isw_wq so that they can be > > flushed and isw_nr_in_flight keeps track of the number of in-flight wb > > switches so that flushing can be avoided in most cases. > > Wait a bloody minute. What's to prevent shrink_dcache_for_umount() from > dirtying more inodes, triggering more of the same?
Hmmm? The flushing is done after shrink_dcache_for_umount() and sync_filesystems(). Aren't inodes supposed to stay clean after that?
> > - if (!atomic_inc_not_zero(&inode->i_sb->s_active)) > > - goto out_unlock; > > This would've failed for inodes on superblock in the middle of shutdown; > what's to do the same for the new variant?
I don't follow. As long as no new writeback operations are initiated after flushing, none can be in flight for the super_block. Isn't that enough?
Thanks.
-- tejun
| |