On Fri, Feb 02, 2001 at 03:51:53PM +0000, Alan Cox wrote:
> Does this fix the ramfs problem in -ac ?
> 
> --- fs/ramfs/inode.c~ Wed Jan 31 22:02:16 2001
> +++ fs/ramfs/inode.c  Fri Feb  2 14:51:47 2001
> @@ -174,7 +174,6 @@
>               inode->i_blocks += IBLOCKS_PER_PAGE;
>               rsb->free_pages--;
>               SetPageDirty(page);
> -             UnlockPage(page);
>       } else {
>               ClearPageUptodate(page);
>               ret = 0;
> @@ -264,6 +263,7 @@
>  
>       if (! ramfs_alloc_page(inode, page))
>               return -ENOSPC;
> +     UnlockPage(page);
>       return 0;
>  }

No, so have to unlock it also, if you return -ENOSPC.

So the correct fix seems to be:

--- linux/fs/ramfs/inode.c~     Wed Jan 31 22:02:16 2001
+++ linux/fs/ramfs/inode.c      Fri Feb  2 14:51:47 2001
@@ -174,7 +174,6 @@
                inode->i_blocks += IBLOCKS_PER_PAGE;
                rsb->free_pages--;
                SetPageDirty(page);
-               UnlockPage(page);
        } else {
                ClearPageUptodate(page);
                ret = 0;
@@ -264,6 +263,9 @@
 
-       if (! ramfs_alloc_page(inode, page))
+       if (! ramfs_alloc_page(inode, page)) {
+               UnlockPage(page);
                return -ENOSPC;
+       }
+       UnlockPage(page);
        return 0;
 }

This currently works for me (but using 2.4.0 + dwg-ramfs.patch + this patch)

Regards

Ingo Oeser
-- 
10.+11.03.2001 - 3. Chemnitzer LinuxTag <http://www.tu-chemnitz.de/linux/tag>
         <<<<<<<<<<<<       come and join the fun       >>>>>>>>>>>>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to