xfs
[Top] [All Lists]

Re: [Fwd: [PATCH] Fix race in xfs_write() between direct and buffered I/

To: Niv Sardi <xaiki@xxxxxxxxxxxxx>
Subject: Re: [Fwd: [PATCH] Fix race in xfs_write() between direct and buffered I/O with DMAPI]
From: Lachlan McIlroy <lachlan@xxxxxxx>
Date: Wed, 24 Dec 2008 13:23:20 +1100
Cc: Christoph Hellwig <hch@xxxxxxxxxxxxx>, xfs-oss <xfs@xxxxxxxxxxx>
In-reply-to: <87wsdq727n.fsf@xxxxxxxxxxxxx>
Organization: SGI
References: <493779B1.3010703@xxxxxxx> <20081208225125.GA15647@xxxxxxxxxxxxx> <493DFDBD.7060909@xxxxxxx> <20081209092240.GA23915@xxxxxxxxxxxxx> <20081222085311.GB24795@xxxxxxxxxxxxx> <49503378.2080508@xxxxxxx> <20081223084013.GA7604@xxxxxxxxxxxxx> <49518BF2.2020709@xxxxxxx> <87wsdq727n.fsf@xxxxxxxxxxxxx>
Reply-to: lachlan@xxxxxxx
User-agent: Thunderbird 2.0.0.18 (X11/20081105)
Niv Sardi wrote:
Lachlan McIlroy <lachlan@xxxxxxx> writes:

Christoph Hellwig wrote:

On Tue, Dec 23, 2008 at 11:40:24AM +1100, Lachlan McIlroy wrote:
Christoph Hellwig wrote:
Do you need more input on this one?
Actually I just might.  Based on your last reponse I wasn't sure if
you wanted me to make further changes.
Well, my reponse was that I think we could do it more effecient, but the
patch still looks correct to me.
Okay great.  I'll check it in and we can improve it later when I understand
what you meant!

Then I got side-tracked wondering
why we even have the 'goto retry' in the dmapi post event - why retry the
write if we get ENOSPC when we don't if dmapi is not enabled?  Could the
write get stuck in an infinite loop?
We only retry on ENOSPC if the dmapi nospace even is enabled, or am I
missing something?
I don't think you're missing anything here.  I don't understand how the
DMAPI stuff works but I imagined the event was there to indicate that the
write failed but what I don't understand is why that justifies a retry.
Is there something about DMAPI that needs the write to succeed?

yes

http://www.opengroup.org/onlinepubs/9657099/chap3.htm#tagcjh_04_02_04
Oh no, not the DMAPI spec - I don't want to go there!  Sounds like the
XFS_SEND_NAMESP() event can choose to fail and that will prevent an
infinite loop.  Thanks Niv.

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