aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/compat.h3
-rw-r--r--fs/btrfs/extent_io.c3
2 files changed, 5 insertions, 1 deletions
diff --git a/fs/btrfs/compat.h b/fs/btrfs/compat.h
index d39a768e65f..b3349a66999 100644
--- a/fs/btrfs/compat.h
+++ b/fs/btrfs/compat.h
@@ -1,6 +1,9 @@
#ifndef _COMPAT_H_
#define _COMPAT_H_
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,26)
+#define trylock_page(page) (!TestSetPageLocked(page))
+#endif
/*
* Even if AppArmor isn't enabled, it still has different prototypes.
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 1cf4baba434..f46f88620c7 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -14,6 +14,7 @@
#include <linux/pagevec.h>
#include "extent_io.h"
#include "extent_map.h"
+#include "compat.h"
/* temporary define until extent_map moves out of btrfs */
struct kmem_cache *btrfs_cache_create(const char *name, size_t size,
@@ -3055,7 +3056,7 @@ int read_extent_buffer_pages(struct extent_io_tree *tree,
for (i = start_i; i < num_pages; i++) {
page = extent_buffer_page(eb, i);
if (!wait) {
- if (TestSetPageLocked(page))
+ if (!trylock_page(page))
goto unlock_exit;
} else {
lock_page(page);