[PATCH 12/17] [LogFS] readwrite.c
Pekka Enberg
penberg at cs.helsinki.fi
Mon Nov 23 07:33:15 EST 2009
Hi Joern,
(Dunno who to CC, really, so lets see if I can trick Andrew or Hugh
into looking at the issue.)
On Fri, Nov 20, 2009 at 9:38 PM, Joern Engel <joern at logfs.org> wrote:
> +static void logfs_lock_write_page(struct page *page)
> +{
> + int loop = 0;
> +
> + while (unlikely(!trylock_page(page))) {
> + if (loop++ > 0x1000) {
> + /* Has been observed once so far... */
> + printk(KERN_ERR "stack at %p\n", &loop);
> + BUG();
> + }
> + if (PagePreLocked(page)) {
> + /* Holder of page lock is waiting for us, it
> + * is safe to use this page. */
> + break;
> + }
> + /* Some other process has this page locked and has
> + * nothing to do with us. Wait for it to finish.
> + */
> + schedule();
> + }
> + BUG_ON(!PageLocked(page));
> +}
What's the purpose of PagePreLocked()? The above function looks pretty
fragile for a filesystem to me.
Pekka
More information about the linux-mtd
mailing list