• Dave Chinner's avatar
    xfs: register the inode cache shrinker before quotachecks · 704b2907
    Dave Chinner authored
    During mount, we can do a quotacheck that involves a bulkstat pass
    on all inodes. If there are more inodes in the filesystem than can
    be held in memory, we require the inode cache shrinker to run to
    ensure that we don't run out of memory.
    
    Unfortunately, the inode cache shrinker is not registered until we
    get to the end of the superblock setup process, which is after a
    quotacheck is run if it is needed. Hence we need to register the
    inode cache shrinker earlier in the mount process so that we don't
    OOM during mount. This requires that we also initialise the syncd
    work before we register the shrinker, so we nee dto juggle that
    around as well.
    
    While there, make sure that we have set up the block sizes in the
    VFS superblock correctly before the quotacheck is run so that any
    inodes that are cached as a result of the quotacheck have their
    block size fields set up correctly.
    
    Cc: stable@kernel.org
    Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
    Reviewed-by: default avatarAlex Elder <aelder@sgi.com>
    704b2907
xfs_super.c 48.8 KB