On Thu, Mar 04, 2010 at 08:50:50AM -0500, Christoph Hellwig wrote:
> On Thu, Mar 04, 2010 at 12:46:23PM +1100, Dave Chinner wrote:
> > xfssyncd processes a queue of work by detaching the queue and
> > then iterating over all the work items. It then sleeps for a
> > time period or until new work comes in. If new work is queued
> > while xfssyncd is actively processing the detached work queue,
> > it will not process that new work until after a sleep timeout
> > or the next work event queued wakes it.
> > Fix this by checking the work queue again before going to sleep.
> Looks good, as does the list_splice cleanup not mentioned in the
> changelog. But I really wonder if we shouldn't just call the
> flushing routine directly instead of going through xfssyncd.
> The xfssyncd queueing infrastructure is quite a lot of hairy code
> just to save a bit of stack space in two places rather high
> up in the callchain.
Yeah, there is a lot cruft in that code. A good amount of cleanup
could be done here, but I'm not going to tackle that today.