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>
This commit is contained in:
parent
3c2023dd8e
commit
5c3c7e64bb
1 changed files with 1 additions and 1 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue