Re: [PATCH 3/8] xfs: initialise xfssync work before running quotachecks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 03/22/12 16:07, Dave Chinner wrote:
On Thu, Mar 22, 2012 at 10:15:48AM -0500, Ben Myers wrote:
On Thu, Mar 22, 2012 at 04:15:08PM +1100, Dave Chinner wrote:
From: Dave Chinner<dchinner@xxxxxxxxxx>

Because the mount process can run a quotacheck and consume lots of
inodes, we need to be able to run periodic inode reclaim during the
mount process. This will prevent running the system out of memory
during quota checks.

This essentially reverts 2bcf6e97, but that is safe to do now that
the quota sync code that was causing problems during long quotacheck
executions is now gone.

Dave, I've held off on #s 3 and 4 because they appear to be racy.  Being

What race?

Cheers,

Dave


2 of the sync workers use iterators
 xfs_inode_ag_iterator()
  xfs_perag_get()
   radix_tree_lookup(&mp->m_perag_tree, agno)

The race I was worried about was in xfs_mount() to initialize the
mp->m_perag_lock, and the radix tree initialization:
 INIT_RADIX_TREE(&mp->m_perag_tree, GFP_ATOMIC)).

There is a lock and 2 or 3 unbuffered I/O are performed in xfs_mountfs()
before the mp->m_perag_tree is initialized.

I was also looking at the xfs_perag_t being allocated in mountfs() and being deallocated in umountfs(), but it turns out that is not important, xfs_perag_get() will return NULL if these have not been allocated yet or have been removed for the required ag.

Mark Tinguely.

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs


[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux