On Thu, May 06, 2010 at 03:12:18PM -0400, Christoph Hellwig wrote:
> > Secondly, for delayed logging only, matching by transaction
> > structure address triggers the failure because busy extents
> > have a much longer life than the transaction structure. It is clear
> > why the transaction ID matching didn't trip over - it would have
> > triggered a log force in this situation, and hence blocked until
> > the checkpoint that fs_mark-2742 had triggered was complete before
> > redoing the rbtree insert.
> True, the busy extents get spliced over to the cil context, so they
> outlive the transaction structure.
> > Right now I'm simply going to go back to using the transaction ID
> > for matching transactions, even though the above analysis points out
> > that even that is not as efficient as it could be for delayed
> > logging. That is, we don't even need to force the log or have a
> > synchronous transaction if the extent was first freed in the current
> > checkpoint seqeunce. Doing that, however, requires pinning the
> > checkpoint sequence (i.e. preventing a flush) until the current
> > transaction commits. While that is in the plan for delayed logging,
> > it is future functionality and hence I'm not going to attempt to
> > design and implement it this close to 2.6.35-rc cycle. [*]
> Sounds fine to me. I'm not a fan of exporting the tid, but it
> seems like there's no good way around it for now. Please make the
> tid exporting a separate changeset so that it's easily revertable
> once this is sorted out.
Yeah, that's a good idea.
> And documenting all this in comments in the code so that it's archived
> would be very useful!