From: Arkadiusz Miskiewicz <arekm@maven.pl>
To: xfs@oss.sgi.com
Cc: aelder@sgi.com
Subject: Re: [PATCH 5/6] xfs: register the inode cache shrinker before quotachecks
Date: Wed, 23 Mar 2011 22:24:03 +0100 [thread overview]
Message-ID: <201103232224.03501.arekm@maven.pl> (raw)
In-Reply-To: <1300860870-15471-6-git-send-email-david@fromorbit.com>
On Wednesday 23 of March 2011, Dave Chinner wrote:
> From: Dave Chinner <dchinner@redhat.com>
Thanks a lot for this patch. I was able to mount my two ~800GB filesystems
with quota enabled without out of memory/machine reboot suprises (which were
happening without this patch every time I tried mount with quota).
So
Tested-by: Arkadiusz Miśkiewicz <arekm@maven.pl>
and hope to see it in 2.6.39 . Test was done on patched 2.6.37.
>
> 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: Dave Chinner <dchinner@redhat.com>
> ---
> fs/xfs/linux-2.6/xfs_super.c | 34 ++++++++++++++++++++++++----------
> 1 files changed, 24 insertions(+), 10 deletions(-)
>
> diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c
> index 8a70b2a..1ba5c45 100644
> --- a/fs/xfs/linux-2.6/xfs_super.c
> +++ b/fs/xfs/linux-2.6/xfs_super.c
> @@ -1539,10 +1539,14 @@ xfs_fs_fill_super(
> if (error)
> goto out_free_sb;
>
> - error = xfs_mountfs(mp);
> - if (error)
> - goto out_filestream_unmount;
> -
> + /*
> + * we must configure the block size in the superblock before we run the
> + * full mount process as the mount process can lookup and cache inodes.
> + * For the same reason we must also initialise the syncd and register
> + * the inode cache shrinker so that inodes can be reclaimed during
> + * operations like a quotacheck that iterate all inodes in the
> + * filesystem.
> + */
> sb->s_magic = XFS_SB_MAGIC;
> sb->s_blocksize = mp->m_sb.sb_blocksize;
> sb->s_blocksize_bits = ffs(sb->s_blocksize) - 1;
> @@ -1550,6 +1554,16 @@ xfs_fs_fill_super(
> sb->s_time_gran = 1;
> set_posix_acl_flag(sb);
>
> + error = xfs_syncd_init(mp);
> + if (error)
> + goto out_filestream_unmount;
> +
> + xfs_inode_shrinker_register(mp);
> +
> + error = xfs_mountfs(mp);
> + if (error)
> + goto out_syncd_stop;
> +
> root = igrab(VFS_I(mp->m_rootip));
> if (!root) {
> error = ENOENT;
> @@ -1565,14 +1579,11 @@ xfs_fs_fill_super(
> goto fail_vnrele;
> }
>
> - error = xfs_syncd_init(mp);
> - if (error)
> - goto fail_vnrele;
> -
> - xfs_inode_shrinker_register(mp);
> -
> return 0;
>
> + out_syncd_stop:
> + xfs_inode_shrinker_unregister(mp);
> + xfs_syncd_stop(mp);
> out_filestream_unmount:
> xfs_filestream_unmount(mp);
> out_free_sb:
> @@ -1596,6 +1607,9 @@ xfs_fs_fill_super(
> }
>
> fail_unmount:
> + xfs_inode_shrinker_unregister(mp);
> + xfs_syncd_stop(mp);
> +
> /*
> * Blow away any referenced inode in the filestreams cache.
> * This can and will cause log traffic as inodes go inactive
--
Arkadiusz Miśkiewicz PLD/Linux Team
arekm / maven.pl http://ftp.pld-linux.org/
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2011-03-23 21:21 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-23 6:14 xfs: outstanding patches for 2.6.39 Dave Chinner
2011-03-23 6:14 ` [PATCH 1/6] xfs: preallocation transactions do not need to be synchronous Dave Chinner
2011-03-24 17:18 ` brian.foster
2011-03-24 22:53 ` [PATCH V2] " Dave Chinner
2011-03-25 21:00 ` [PATCH 1/6] " Alex Elder
2011-03-25 22:02 ` Dave Chinner
2011-03-23 6:14 ` [PATCH 2/6] vmap: flush vmap aliases when mapping fails Dave Chinner
2011-03-25 21:00 ` Alex Elder
2011-03-23 6:14 ` [PATCH 3/6] xfs: introduce inode cluster buffer trylocks for xfs_iflush Dave Chinner
2011-03-25 21:00 ` Alex Elder
2011-03-23 6:14 ` [PATCH 4/6] xfs: xfs_trans_read_buf() should return an error on failure Dave Chinner
2011-03-23 11:53 ` Christoph Hellwig
2011-03-25 21:01 ` Alex Elder
2011-03-23 6:14 ` [PATCH 5/6] xfs: register the inode cache shrinker before quotachecks Dave Chinner
2011-03-23 21:24 ` Arkadiusz Miskiewicz [this message]
2011-03-25 12:56 ` Michael Weissenbacher
2011-03-25 23:08 ` Dave Chinner
2011-03-25 21:01 ` Alex Elder
2011-03-23 6:14 ` [PATCH 6/6] xfs: stop using the page cache to back the buffer cache Dave Chinner
2011-03-25 21:02 ` Alex Elder
2011-03-25 22:04 ` Dave Chinner
2011-03-23 7:01 ` xfs: outstanding patches for 2.6.39 Andi Kleen
2011-03-23 11:38 ` Dave Chinner
2011-03-23 16:05 ` Andi Kleen
2011-03-23 22:48 ` Dave Chinner
2011-03-23 11:18 ` Christoph Hellwig
2011-03-23 11:38 ` Dave Chinner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201103232224.03501.arekm@maven.pl \
--to=arekm@maven.pl \
--cc=aelder@sgi.com \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox