Fixes usages of lock_page()
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 18 Oct 2010 06:04:35 +0000 (23:04 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:35:55 +0000 (17:35 -0700)
We had a bunch of extra unlock_page()s floating around ever since we
pushed the unlocking into readpage().  Don't expect it to stay around
much longer either.

kern/src/blockdev.c
kern/src/ext2fs.c
kern/src/kfs.c

index 6e231b0..5702b52 100644 (file)
@@ -156,7 +156,6 @@ void sleep_on_breq(struct block_request *breq)
 int block_readpage(struct page_map *pm, struct page *page)
 {
        page->pg_flags |= PG_UPTODATE;
-       unlock_page(page);
        return 0;
 }
 
index f89eafb..8211e05 100644 (file)
@@ -706,16 +706,12 @@ int ext2_readpage(struct page_map *pm, struct page *page)
 
        assert(page->pg_flags & PG_BUFFER);
        retval = ext2_mappage(pm, page);
-       if (retval) {
-               unlock_page(page);
+       if (retval)
                return retval;
-       }
        /* Build and submit the request */
        breq = kmem_cache_alloc(breq_kcache, 0);
-       if (!breq) {
-               unlock_page(page);
+       if (!breq)
                return -ENOMEM;
-       }
        breq->flags = BREQ_READ;
        breq->callback = generic_breq_done;
        breq->data = 0;
index 1e65310..d2a5fe3 100644 (file)
@@ -137,10 +137,8 @@ int kfs_readpage(struct page_map *pm, struct page *page)
                memset(page2kva(page) + copy_amt, 0, PGSIZE - copy_amt);
        }
        struct buffer_head *bh = kmem_cache_alloc(bh_kcache, 0);
-       if (!bh) {
-               unlock_page(page);
+       if (!bh)
                return -1;                      /* untested, un-thought-through */
-       }
        /* KFS does a 1:1 BH to page mapping */
        bh->bh_page = page;                                                             /* weak ref */
        bh->bh_buffer = page2kva(page);
@@ -154,7 +152,6 @@ int kfs_readpage(struct page_map *pm, struct page *page)
         * complete.  Since we aren't doing a real IO request, and it is already
         * done, we can do it here. */
        page->pg_flags |= PG_UPTODATE;
-       unlock_page(page);
        return 0;
 }