int bitmap_daemon_work(struct bitmap *bitmap)
 {
-       unsigned long bit, j;
+       unsigned long j;
        unsigned long flags;
        struct page *page = NULL, *lastpage = NULL;
        int err = 0;
                }
 
                page = filemap_get_page(bitmap, j);
-               /* skip this page unless it's marked as needing cleaning */
-               if (!((attr=get_page_attr(bitmap, page)) & BITMAP_PAGE_CLEAN)) {
-                       if (attr & BITMAP_PAGE_NEEDWRITE) {
-                               page_cache_get(page);
-                               clear_page_attr(bitmap, page, BITMAP_PAGE_NEEDWRITE);
-                       }
-                       spin_unlock_irqrestore(&bitmap->lock, flags);
-                       if (attr & BITMAP_PAGE_NEEDWRITE) {
-                               if (write_page(bitmap, page, 0))
-                                       bitmap_file_kick(bitmap);
-                               page_cache_release(page);
-                       }
-                       continue;
-               }
-
-               bit = file_page_offset(j);
 
                if (page != lastpage) {
+                       /* skip this page unless it's marked as needing cleaning */
+                       if (!((attr=get_page_attr(bitmap, page)) & BITMAP_PAGE_CLEAN)) {
+                               if (attr & BITMAP_PAGE_NEEDWRITE) {
+                                       page_cache_get(page);
+                                       clear_page_attr(bitmap, page, BITMAP_PAGE_NEEDWRITE);
+                               }
+                               spin_unlock_irqrestore(&bitmap->lock, flags);
+                               if (attr & BITMAP_PAGE_NEEDWRITE) {
+                                       if (write_page(bitmap, page, 0))
+                                               bitmap_file_kick(bitmap);
+                                       page_cache_release(page);
+                               }
+                               continue;
+                       }
+
                        /* grab the new page, sync and release the old */
                        page_cache_get(page);
                        if (lastpage != NULL) {
                                                  -1);
 
                                /* clear the bit */
-                               clear_bit(bit, page_address(page));
+                               clear_bit(file_page_offset(j), page_address(page));
                        }
                }
                spin_unlock_irqrestore(&bitmap->lock, flags);