The conditional compile func definition shall better not be defined this way:
static int btrfs_issue_discard()
{
#ifdef BIO_RW_DISCARD
...
#else
return 0;
#endif
}
instead, can be better done this way:
#ifndef BIO_RW_DISCARD
static int btrfs_issue_discard()
{
return 0;
}
#endif
#ifdef BIO_RW_DISCARD
static int btrfs_issue_discard()
{
...
}
#endif
From 7647c248249905629b9254221d9cd00c9c6004e3 Mon Sep 17 00:00:00 2001
From: Jeffrey Wu <jwu@xxxxxxxx>
Date: Sun, 30 Aug 2009 10:43:56 +0800
Subject: [PATCH] Btrfs: improved the BIO_RW_DISCARD function definition
Signed-off-by: Jeffrey Wu <jwu@xxxxxxxx>
---
fs/btrfs/extent-tree.c | 20 +++++++++++++++-----
1 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 72a2b9c..4ccd94a 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -62,6 +62,20 @@ static int do_chunk_alloc(struct btrfs_trans_handle *trans,
struct btrfs_root *extent_root, u64 alloc_bytes,
u64 flags, int force);
+#ifndef BIO_RW_DISCARD
+static void btrfs_issue_discard(struct block_device *bdev,
+ u64 start, u64 len)
+{
+ return;
+}
+
+static int btrfs_discard_extent(struct btrfs_root *root, u64 bytenr,
+ u64 num_bytes)
+{
+ return 0;
+}
+#endif
+
static noinline int
block_group_cache_done(struct btrfs_block_group_cache *cache)
{
@@ -1513,12 +1527,10 @@ static void btrfs_issue_discard(struct block_device *bdev,
{
blkdev_issue_discard(bdev, start >> 9, len >> 9, GFP_KERNEL);
}
-#endif
static int btrfs_discard_extent(struct btrfs_root *root, u64 bytenr,
u64 num_bytes)
{
-#ifdef BIO_RW_DISCARD
int ret;
u64 map_length = num_bytes;
struct btrfs_multi_bio *multi = NULL;
@@ -1542,10 +1554,8 @@ static int btrfs_discard_extent(struct btrfs_root *root, u64 bytenr,
}
return ret;
-#else
- return 0;
-#endif
}
+#endif
int btrfs_inc_extent_ref(struct btrfs_trans_handle *trans,
struct btrfs_root *root,
--
1.6.0.4