From: Lachlan McIlroy <lachlan@sgi.com>
To: Lachlan McIlroy <lachlan@sgi.com>, xfs-dev <xfs-dev@sgi.com>,
xfs-oss <xfs@oss.sgi.com>
Subject: Re: [PATCH] Allocate inode tracing buffers before locking inode cluster
Date: Tue, 19 Aug 2008 13:52:59 +1000 [thread overview]
Message-ID: <48AA439B.6080907@sgi.com> (raw)
In-Reply-To: <20080818081403.GJ19760@disturbed>
Dave Chinner wrote:
> On Mon, Aug 18, 2008 at 05:59:02PM +1000, Lachlan McIlroy wrote:
>> Trying to allocate memory while holding the inode cluster locked can cause
>> deadlocks; a thread creating an inode will have the inode cluster locked
>> and is stuck allocating memory, pdflush/kswapd are both trying to push out
>> dirty pages and convert delayed allocations which need space in the log and
>> xfsaild is trying to push on the tail of the log but is stuck trying to
>> acquire the inode cluster lock.
>>
>> I tried fixing this with KM_NOFS but turned a two-way deadlock into a
>> three-way deadlock. This patch moves the allocation of the inode tracing
>> buffers before we lock the inode cluster. We can also leak memory because
>> we don't free these allocations if we return from this function early so
>> use xfs_idestroy() to fully clean up the inode first.
>
> Seems sane, but I think it should be wrapped up in the
> xfs_inode_alloc() code added as part of the 'Make use of the
> init-once slab optimisation' patch I posted recently. This
> moves the initialisation of all things inode related into a
> separate function - xfs_inode_alloc() - instead of doing all
> these intialisations around the place....
>
Okay, sounds like a good idea. I'll pull that patch in first.
prev parent reply other threads:[~2008-08-19 3:44 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-18 7:59 [PATCH] Allocate inode tracing buffers before locking inode cluster Lachlan McIlroy
2008-08-18 8:14 ` Dave Chinner
2008-08-19 3:52 ` Lachlan McIlroy [this message]
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=48AA439B.6080907@sgi.com \
--to=lachlan@sgi.com \
--cc=xfs-dev@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.