xfs
[Top] [All Lists]

Re: [help] xfs quotacheck problem when xfs filesystem mount

To: "Guk-Bong, Kwon" <gbkwon@xxxxxxxxx>
Subject: Re: [help] xfs quotacheck problem when xfs filesystem mount
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Tue, 21 Feb 2012 09:29:38 +1100
Cc: xfs@xxxxxxxxxxx
In-reply-to: <CAJ-WH_ydP-_k5zhcUh5QptkDkjvFQRNGUihgU1=yb8VX0Qp4Cg@xxxxxxxxxxxxxx>
References: <CAJ-WH_ydP-_k5zhcUh5QptkDkjvFQRNGUihgU1=yb8VX0Qp4Cg@xxxxxxxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
On Mon, Feb 20, 2012 at 03:06:48PM +0900, Guk-Bong, Kwon wrote:
> [help] xfs quotacheck problem when xfs filesystem mount
> 
> hi all..
> 
> i test xfs project quota with various version vanilla kernel
> 
> 
> Test Scenario
> 
> 1. mkfs.xfs -i size=512 -l lazy-count=1 /dev/ld/lv1
> 2. xfs filesystem mount with project quota. and setting project quota
> 3. make many file into xfs filesystem (eg. 1K~1M size, number 300 million 
> over)
> 4. xfs filesystem umount
> 5. xfs filesystem mount without project quota
> 6. make some file
> 7. umount xfs filesystem
> 8. again mount with project quota
> 
> 
> some kernel is ok when mount with project quota
> 
> some kernel is occurs oom-killer when mount with project quota
> 
> i tested kernel version 2.6.27.59, 2.6.32.46, 3.1.10.
> 
> only 2.6.27.59 kernel is not occurs oom-killer.

Hmmm. I thought we fixed that problem. Indeed:

$ glo -n 1 704b290
704b290 xfs: register the inode cache shrinker before quotachecks
$ git describe --contains 704b290
v2.6.39-rc1~15^2~1

So it was fixed in 2.6.39. Why is 3.1 seeing this problem? Oh:

$ glo -n 1 8daaa83
8daaa83 xfs: make use of new shrinker callout for the inode cache

Which makes XFS use the superblock shrinker infrastructure seems to
be causing the problem. quotacheck is called during
xfs_fs_fill_super(), which is called with the sb->s_umount locked in
exclusive mode, and the shrinker (prune_super()) needs to get the
lock in shared mode to run. Hence the shrinker doesn't run while
quotacheck is in progress.

I'll have to think about this one for a bit - I'm not sure what the
best way to solve it is yet.

Cheers,

Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx

<Prev in Thread] Current Thread [Next in Thread>