Btrfs: Don't do btree balance_dirty_pages on old kernels, it stalls forever
authorChris Mason <chris.mason@oracle.com>
Fri, 9 May 2008 15:52:25 +0000 (11:52 -0400)
committerChris Mason <chris.mason@oracle.com>
Thu, 25 Sep 2008 15:04:03 +0000 (11:04 -0400)
Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/disk-io.c

index 9d5424ad01a3f9de0ad8ab4218aab3b988c5ce87..c3083165b17283d143a27bad957fc7cd0c496a98 100644 (file)
@@ -1655,6 +1655,11 @@ void btrfs_throttle(struct btrfs_root *root)
 
 void btrfs_btree_balance_dirty(struct btrfs_root *root, unsigned long nr)
 {
+       /*
+        * looks as though older kernels can get into trouble with
+        * this code, they end up stuck in balance_dirty_pages forever
+        */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23)
        struct extent_io_tree *tree;
        u64 num_dirty;
        u64 start = 0;
@@ -1670,6 +1675,9 @@ void btrfs_btree_balance_dirty(struct btrfs_root *root, unsigned long nr)
                balance_dirty_pages_ratelimited_nr(
                                   root->fs_info->btree_inode->i_mapping, 1);
        }
+#else
+       return;
+#endif
 }
 
 void btrfs_set_buffer_defrag(struct extent_buffer *buf)