| To: | Dave Chinner <david@xxxxxxxxxxxxx> |
|---|---|
| Subject: | Re: [PATCH 4/8] xfs: Move ilock before transaction start in xfs_setattr_size() |
| From: | Jan Kara <jack@xxxxxxx> |
| Date: | Tue, 24 Jan 2012 12:52:34 +0100 |
| Cc: | Jan Kara <jack@xxxxxxx>, linux-fsdevel@xxxxxxxxxxxxxxx, Eric Sandeen <sandeen@xxxxxxxxxxx>, Dave Chinner <dchinner@xxxxxxxxxx>, Surbhi Palande <csurbhi@xxxxxxxxx>, Kamal Mostafa <kamal@xxxxxxxxxxxxx>, Christoph Hellwig <hch@xxxxxxxxxxxxx>, LKML <linux-kernel@xxxxxxxxxxxxxxx>, xfs@xxxxxxxxxxx, linux-ext4@xxxxxxxxxxxxxxx, Ben Myers <bpm@xxxxxxx>, Alex Elder <elder@xxxxxxxxxx> |
| In-reply-to: | <20120124065945.GL15102@dastard> |
| References: | <1327091686-23177-1-git-send-email-jack@xxxxxxx> <1327091686-23177-5-git-send-email-jack@xxxxxxx> <20120124065945.GL15102@dastard> |
| User-agent: | Mutt/1.5.20 (2009-06-14) |
On Tue 24-01-12 17:59:45, Dave Chinner wrote:
> On Fri, Jan 20, 2012 at 09:34:42PM +0100, Jan Kara wrote:
> > In xfs we first take ilock and start transaction afterwards.
>
> The correct order is to allocate the transaction, reserve the space
> for it and then take the ilock. We cannot hold the ilock over the
> transaction reservation because that can deadlock the journal.
>
> That is, to make space for the new transaction reservation, we may
> need to take the ilock to flush the inode and allow the journal tail
> to move forwards to make space for the new transaction. If we
> already hold the ilock, then it can't be flushed, we can't make
> space available in the journal and hence deadlock.
Thanks for clarification!
> Maybe you confused the ilock vs the iolock. We can hold the iolock
> over the trans alloc/reserve because that lock is not required to
> move the tail of the journal, so the deadlock doesn't exist.
Ups! I now had a look at what xfs_rw_ilock() does. I always thought it's
just a plain rw semaphore and now I see it takes several locks depending on
the argument. Ugh, a bit surprising for XFS newcomer as me ;) But now
things become clearer so I fix my patches with this new knowledge in mind.
So just disregard my locking comments. They were likely bogus.
Honza
--
Jan Kara <jack@xxxxxxx>
SUSE Labs, CR
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Re: [PATCH 2/8] vfs: Protect write paths by sb_start_write - sb_end_write, Jan Kara |
|---|---|
| Next by Date: | Re: XFS problem, Jan Kara |
| Previous by Thread: | Re: [PATCH 4/8] xfs: Move ilock before transaction start in xfs_setattr_size(), Dave Chinner |
| Next by Thread: | [PATCH 2/8] vfs: Protect write paths by sb_start_write - sb_end_write, Jan Kara |
| Indexes: | [Date] [Thread] [Top] [All Lists] |