Btrfs: Seed device support
[safe/jmp/linux-2.6] / fs / btrfs / extent_io.c
index bbe3bcf..54d013c 100644 (file)
@@ -30,7 +30,7 @@ static struct kmem_cache *extent_buffer_cache;
 static LIST_HEAD(buffers);
 static LIST_HEAD(states);
 
-#define LEAK_DEBUG 1
+#define LEAK_DEBUG 0
 #ifdef LEAK_DEBUG
 static spinlock_t leak_lock = SPIN_LOCK_UNLOCKED;
 #endif
@@ -1157,7 +1157,8 @@ static noinline int __unlock_for_delalloc(struct inode *inode,
 
        while(nr_pages > 0) {
                ret = find_get_pages_contig(inode->i_mapping, index,
-                                    min(nr_pages, ARRAY_SIZE(pages)), pages);
+                                    min_t(unsigned long, nr_pages,
+                                    ARRAY_SIZE(pages)), pages);
                for (i = 0; i < ret; i++) {
                        if (pages[i] != locked_page)
                                unlock_page(pages[i]);
@@ -1192,7 +1193,8 @@ static noinline int lock_delalloc_pages(struct inode *inode,
        nrpages = end_index - index + 1;
        while(nrpages > 0) {
                ret = find_get_pages_contig(inode->i_mapping, index,
-                                    min(nrpages, ARRAY_SIZE(pages)), pages);
+                                    min_t(unsigned long,
+                                    nrpages, ARRAY_SIZE(pages)), pages);
                if (ret == 0) {
                        ret = -EAGAIN;
                        goto done;
@@ -1205,7 +1207,8 @@ static noinline int lock_delalloc_pages(struct inode *inode,
                         */
                        if (pages[i] != locked_page) {
                                lock_page(pages[i]);
-                               if (pages[i]->mapping != inode->i_mapping) {
+                               if (!PageDirty(pages[i]) ||
+                                   pages[i]->mapping != inode->i_mapping) {
                                        ret = -EAGAIN;
                                        unlock_page(pages[i]);
                                        page_cache_release(pages[i]);
@@ -1345,7 +1348,8 @@ int extent_clear_unlock_delalloc(struct inode *inode,
 
        while(nr_pages > 0) {
                ret = find_get_pages_contig(inode->i_mapping, index,
-                                    min(nr_pages, ARRAY_SIZE(pages)), pages);
+                                    min_t(unsigned long,
+                                    nr_pages, ARRAY_SIZE(pages)), pages);
                for (i = 0; i < ret; i++) {
                        if (pages[i] == locked_page) {
                                page_cache_release(pages[i]);
@@ -1895,7 +1899,7 @@ static int submit_extent_page(int rw, struct extent_io_tree *tree,
        int contig = 0;
        int this_compressed = bio_flags & EXTENT_BIO_COMPRESSED;
        int old_compressed = prev_bio_flags & EXTENT_BIO_COMPRESSED;
-       size_t page_size = min(size, PAGE_CACHE_SIZE);
+       size_t page_size = min_t(size_t, size, PAGE_CACHE_SIZE);
 
        if (bio_ret && *bio_ret) {
                bio = *bio_ret;
@@ -2173,11 +2177,7 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc,
        pg_offset = i_size & (PAGE_CACHE_SIZE - 1);
        if (page->index > end_index ||
           (page->index == end_index && !pg_offset)) {
-               if (epd->extent_locked) {
-                       if (tree->ops && tree->ops->writepage_end_io_hook)
-                               tree->ops->writepage_end_io_hook(page, start,
-                                                        page_end, NULL, 1);
-               }
+               page->mapping->a_ops->invalidatepage(page, 0);
                unlock_page(page);
                return 0;
        }
@@ -2494,13 +2494,6 @@ retry:
                index = 0;
                goto retry;
        }
-       if (wbc->range_cyclic || (range_whole && wbc->nr_to_write > 0))
-               mapping->writeback_index = index;
-               if (wbc->range_start == 0 && wbc->range_end == LLONG_MAX)
-                       range_whole = 1;
-
-       if (wbc->range_cont)
-               wbc->range_start = index << PAGE_CACHE_SHIFT;
        return ret;
 }
 EXPORT_SYMBOL(extent_write_cache_pages);