/* add to list to be waited for */
                struct page_list *item = mempool_alloc(bitmap->write_pool, GFP_NOIO);
                item->page = page;
-               get_page(page);
                spin_lock(&bitmap->write_lock);
                list_add(&item->list, &bitmap->complete_pages);
                spin_unlock(&bitmap->write_lock);
                spin_unlock_irqrestore(&bitmap->lock, flags);
                return;
        }
-       get_page(bitmap->sb_page);
        spin_unlock_irqrestore(&bitmap->lock, flags);
        sb = (bitmap_super_t *)kmap_atomic(bitmap->sb_page, KM_USER0);
        switch (op) {
                default: BUG();
        }
        kunmap_atomic(sb, KM_USER0);
-       put_page(bitmap->sb_page);
 }
 
 /*
 
        while ((item = dequeue_page(bitmap))) {
                /* don't bother to wait */
-               put_page(item->page);
                mempool_free(item, bitmap->write_pool);
        }
 }
        page = filemap_get_page(bitmap, chunk);
        bit = file_page_offset(chunk);
 
-
-       /* make sure the page stays cached until it gets written out */
-       if (! test_page_attr(bitmap, page, BITMAP_PAGE_DIRTY))
-               get_page(page);
-
        /* set the bit */
        kaddr = kmap_atomic(page, KM_USER0);
        if (bitmap->flags & BITMAP_HOSTENDIAN)
                        if (!test_page_attr(bitmap, page, BITMAP_PAGE_CLEAN)) {
                                int need_write = test_page_attr(bitmap, page,
                                                                BITMAP_PAGE_NEEDWRITE);
-                               if (need_write) {
-                                       get_page(page);
+                               if (need_write)
                                        clear_page_attr(bitmap, page, BITMAP_PAGE_NEEDWRITE);
-                               }
+
                                spin_unlock_irqrestore(&bitmap->lock, flags);
                                if (need_write) {
                                        switch (write_page(bitmap, page, 0)) {
                                        default:
                                                bitmap_file_kick(bitmap);
                                        }
-                                       put_page(page);
                                }
                                continue;
                        }
 
                        /* grab the new page, sync and release the old */
-                       get_page(page);
                        if (lastpage != NULL) {
                                if (test_page_attr(bitmap, lastpage, BITMAP_PAGE_NEEDWRITE)) {
                                        clear_page_attr(bitmap, lastpage, BITMAP_PAGE_NEEDWRITE);
                                        set_page_attr(bitmap, lastpage, BITMAP_PAGE_NEEDWRITE);
                                        spin_unlock_irqrestore(&bitmap->lock, flags);
                                }
-                               put_page(lastpage);
                                if (err)
                                        bitmap_file_kick(bitmap);
                        } else
                        set_page_attr(bitmap, lastpage, BITMAP_PAGE_NEEDWRITE);
                        spin_unlock_irqrestore(&bitmap->lock, flags);
                }
-
-               put_page(lastpage);
        }
 
        return err;
                PRINTK("finished page writeback: %p\n", page);
 
                err = PageError(page);
-               put_page(page);
                if (err) {
                        printk(KERN_WARNING "%s: bitmap file writeback "
                               "failed (page %lu): %d\n",