[Top] [All Lists]

[xfs-masters] Re: 2.6.22-rc1-mm1

To: David Chinner <dgc@xxxxxxx>
Subject: [xfs-masters] Re: 2.6.22-rc1-mm1
From: Christoph Hellwig <hch@xxxxxx>
Date: Mon, 21 May 2007 12:23:21 +0200
Cc: Michal Piotrowski <michal.k.k.piotrowski@xxxxxxxxx>, Christoph Hellwig <hch@xxxxxx>, xfs-masters@xxxxxxxxxxx, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx
In-reply-to: <20070521101141.GX86004887@xxxxxxx>
References: <20070515201914.16944e04.akpm@xxxxxxxxxxxxxxxxxxxx> <464B304C.5040104@xxxxxxxxxxxxxx> <20070516094133.bec04e65.akpm@xxxxxxxxxxxxxxxxxxxx> <20070517020600.GS85884050@xxxxxxx> <20070517084135.GA8510@xxxxxx> <464CB577.5080106@xxxxxxxxxxxxxx> <20070518021114.GV86004887@xxxxxxx> <20070521101141.GX86004887@xxxxxxx>
Reply-to: xfs-masters@xxxxxxxxxxx
Sender: xfs-masters-bounce@xxxxxxxxxxx
User-agent: Mutt/1.3.28i
On Mon, May 21, 2007 at 08:11:42PM +1000, David Chinner wrote:
> Christoph - this is an interaction with xfs_buf_associate_memory();
> I'm not sure what it is doing is at all safe now that it never gets
> passed kmem_alloc()d memory - it works for the log recovery case
> because we use it in pairs - once to shorten the buffer and then once
> to put it back the way it was.
> But that doesn't work for the log buffers (we never return them to their
> original state) and the log wrap case looks to work mostly by accident
> now (and could posibly lead to double freeing pages)....
> It seems that what we really need with the new code is a xfs_buf_clone()
> operation followed by trimming the range to what the secondary I/O needs
> to span. This would work for the log buffer case as well. Your thoughts?

xfs_buf_associate_memory is a mess.  My original plan was to get rid of
it, but I kept that out to keep that patchset small and easily reviable,
but it seems like that was a mistake.  My plan is the following:

 - xlog_bread and thus the whole buffer I/O path grows an iooffset
   paramater that specifies at which offset into the buffer we start
   the actual I/O.  That gets rid of all the xfs_buf_associate_memory
   memory uses in the log recovery code
 - add a buffer clone operation as suggested by you above, and use
   the offset in xlog_sync aswell.

until then you patch below looks fine.

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