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>

authored by Lars Ellenberg and committed by Philipp Reisner 5c3c7e64 3c2023dd

+1 -1
+1 -1
drivers/block/drbd/drbd_worker.c
··· 235 235 if (unlikely(error)) { 236 236 what = (bio_data_dir(bio) == WRITE) 237 237 ? write_completed_with_error 238 - : (bio_rw(bio) == READA) 238 + : (bio_rw(bio) == READ) 239 239 ? read_completed_with_error 240 240 : read_ahead_completed_with_error; 241 241 } else