summaryrefslogtreecommitdiff
path: root/fs/btrfs/extent_io.c
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2017-01-09 10:12:25 -0800
committerDmitry Shmidt <dimitrysh@google.com>2017-01-09 10:12:25 -0800
commit712517177d3f0df8ff8e402241d0f5a69208a95b (patch)
treec20bb1beb8dfa95dd6023cca2e16845861742c47 /fs/btrfs/extent_io.c
parentaceae9be74c70f993ddd8d6a157f1a256591c43f (diff)
parenta3edc7b2e537e36bb26c94fa9efcc249ef3a5862 (diff)
Merge tag 'v4.4.40' into android-4.4.y
This is the 4.4.40 stable release
Diffstat (limited to 'fs/btrfs/extent_io.c')
-rw-r--r--fs/btrfs/extent_io.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 257bbdcb5df6..e767f347f2b1 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -5294,11 +5294,20 @@ int read_extent_buffer_pages(struct extent_io_tree *tree,
lock_page(page);
}
locked_pages++;
+ }
+ /*
+ * We need to firstly lock all pages to make sure that
+ * the uptodate bit of our pages won't be affected by
+ * clear_extent_buffer_uptodate().
+ */
+ for (i = start_i; i < num_pages; i++) {
+ page = eb->pages[i];
if (!PageUptodate(page)) {
num_reads++;
all_uptodate = 0;
}
}
+
if (all_uptodate) {
if (start_i == 0)
set_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags);