Btrfs: Use async helpers to deal with pages that have been improperly dirtied
[deliverable/linux.git] / fs / btrfs / extent_io.c
index 3f82a6e9ca4fa6ddf0dd85554ddfca9077959d59..feff16cb9b40acffbf9a21d1083b71e962f7802f 100644 (file)
@@ -2050,6 +2050,16 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc,
        lock_extent(tree, start, page_end, GFP_NOFS);
        unlock_start = start;
 
+       if (tree->ops && tree->ops->writepage_start_hook) {
+               ret = tree->ops->writepage_start_hook(page, start, page_end);
+               if (ret == -EAGAIN) {
+                       unlock_extent(tree, start, page_end, GFP_NOFS);
+                       redirty_page_for_writepage(wbc, page);
+                       unlock_page(page);
+                       return 0;
+               }
+       }
+
        end = page_end;
        if (test_range_bit(tree, start, page_end, EXTENT_DELALLOC, 0)) {
                printk("found delalloc bits after lock_extent\n");
This page took 0.02431 seconds and 5 git commands to generate.