Re: partial reiser4 review comments

From: Alexander Zarochentsev
Date: Thu Aug 03 2006 - 16:08:40 EST


> I'm only partway through this, but let me unload my observations thus
> far. I still need to find a chunk of time for a file-by-file
> walkthrough and it's unobvious where that chunk will come from at
> present :(
>
>
> reiser4 as found in 2.6.18-rc2-mm1.
>
> - set_page_dirty_internal() pokes around in VFS internals. Use
> __set_page_dirty_no_buffers() or create a new library function in
> mm/page-writeback.c.
>
> In particular, it gets the radix-tree dirty tagging out of sync.
>
> - running igrab() in the writepage() path is really going to hammer
> inode_lock. Something else will need to be done here.
>
> - The preferred way of solving the above would be to mark the page as
> PageWriteback() with set_page_writeback() prior to unlocking it.
> That'll pin the page and the inode. It does require that the page
> actually get written later on. If we cannot do that then more
> thought is needed.
>
> - wbq.sem should be using a completion for the "wait until entd
> finishes", not a semaphore. Because there's a teeny theoretical race
> when using semaphores this way which completions were designed to
> avoid. (The waker can still be playing with the semaphore when it
> has gone out of scope on the wakee's stack).
>
> - write_page_by_ent(): the "spin until entd thread" thing is gross.

that spinlock is especially against the "teeny theoretical race...".
good if completion will allow us to remove it.

>
> This function is really lock-intensive.


Thanks,
Alex.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/