summaryrefslogtreecommitdiff
path: root/drivers/block
diff options
context:
space:
mode:
authorLars Ellenberg <lars.ellenberg@linbit.com>2010-04-10 02:10:09 +0200
committerPhilipp Reisner <philipp.reisner@linbit.com>2010-05-03 22:40:16 +0200
commit5c3c7e64bbcb60db39d0d55c8fab39ef41d41c30 (patch)
tree91e5c767a24eb468ef210474784a5902a0d253a3 /drivers/block
parent3c2023dd8ed31e2ecfbb2d5aa20e8884d4b339e2 (diff)
downloadlinux-3.10-5c3c7e64bbcb60db39d0d55c8fab39ef41d41c30.tar.gz
linux-3.10-5c3c7e64bbcb60db39d0d55c8fab39ef41d41c30.tar.bz2
linux-3.10-5c3c7e64bbcb60db39d0d55c8fab39ef41d41c30.zip
drbd: don't expose failed local READ to upper layers
fix regression introduced in 8.3.3: commit a9b17323f2875f5d9b132c2b476a750bf44b10c7 Author: Lars Ellenberg <lars.ellenberg@linbit.com> Date: Wed Aug 12 15:18:33 2009 +0200 out-of-spinlock completion of master bio : (bio_rw(bio) == READA) ? read_completed_with_error : read_ahead_completed_with_error; is obviously not what was intended. No one noticed because of * page-cache at work, * local RAIDs Impact: Failed local READs are not retried remotely, but errored to upper layers, causing filesystems to remount read-only, or worse. Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Diffstat (limited to 'drivers/block')
-rw-r--r--drivers/block/drbd/drbd_worker.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c
index 44bf6d11197..d48a1dfd7b2 100644
--- a/drivers/block/drbd/drbd_worker.c
+++ b/drivers/block/drbd/drbd_worker.c
@@ -235,7 +235,7 @@ void drbd_endio_pri(struct bio *bio, int error)
if (unlikely(error)) {
what = (bio_data_dir(bio) == WRITE)
? write_completed_with_error
- : (bio_rw(bio) == READA)
+ : (bio_rw(bio) == READ)
? read_completed_with_error
: read_ahead_completed_with_error;
} else