drbd: don't expose failed local READ to upper layers
authorLars Ellenberg <lars.ellenberg@linbit.com>
Sat, 10 Apr 2010 00:10:09 +0000 (02:10 +0200)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Mon, 3 May 2010 20:40:16 +0000 (22:40 +0200)
commit5c3c7e64bbcb60db39d0d55c8fab39ef41d41c30
tree91e5c767a24eb468ef210474784a5902a0d253a3
parent3c2023dd8ed31e2ecfbb2d5aa20e8884d4b339e2
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>
drivers/block/drbd/drbd_worker.c