summaryrefslogtreecommitdiff
path: root/fs/btrfs
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2008-05-09 19:52:25 +0400
committerChris Mason <chris.mason@oracle.com>2008-09-25 19:04:03 +0400
commit188de649c51f03df3f8a601aea0110a3870815c2 (patch)
tree737a1c92ee19182807c89ee170f07e68e6296834 /fs/btrfs
parent323da79c9f096ed4da04e5ea00f766f75b28aeaa (diff)
downloadlinux-188de649c51f03df3f8a601aea0110a3870815c2.tar.xz
Btrfs: Don't do btree balance_dirty_pages on old kernels, it stalls forever
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs')
-rw-r--r--fs/btrfs/disk-io.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 9d5424ad01a3..c3083165b172 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -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)