Browse Source

Btrfs: Don't do btree balance_dirty_pages on old kernels, it stalls forever

Signed-off-by: Chris Mason <chris.mason@oracle.com>
Chris Mason 17 năm trước cách đây
mục cha
commit
188de649c5
1 tập tin đã thay đổi với 8 bổ sung0 xóa
  1. 8 0
      fs/btrfs/disk-io.c

+ 8 - 0
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)
 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;
 	struct extent_io_tree *tree;
 	u64 num_dirty;
 	u64 num_dirty;
 	u64 start = 0;
 	u64 start = 0;
@@ -1670,6 +1675,9 @@ void btrfs_btree_balance_dirty(struct btrfs_root *root, unsigned long nr)
 		balance_dirty_pages_ratelimited_nr(
 		balance_dirty_pages_ratelimited_nr(
 				   root->fs_info->btree_inode->i_mapping, 1);
 				   root->fs_info->btree_inode->i_mapping, 1);
 	}
 	}
+#else
+	return;
+#endif
 }
 }
 
 
 void btrfs_set_buffer_defrag(struct extent_buffer *buf)
 void btrfs_set_buffer_defrag(struct extent_buffer *buf)