diff options
Diffstat (limited to 'drivers/block/drbd/drbd_worker.c')
-rw-r--r-- | drivers/block/drbd/drbd_worker.c | 24 |
1 files changed, 2 insertions, 22 deletions
diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c index 727ff6339754..b623ceee2a4a 100644 --- a/drivers/block/drbd/drbd_worker.c +++ b/drivers/block/drbd/drbd_worker.c | |||
@@ -224,9 +224,6 @@ void drbd_endio_pri(struct bio *bio, int error) | |||
224 | enum drbd_req_event what; | 224 | enum drbd_req_event what; |
225 | int uptodate = bio_flagged(bio, BIO_UPTODATE); | 225 | int uptodate = bio_flagged(bio, BIO_UPTODATE); |
226 | 226 | ||
227 | if (error) | ||
228 | dev_warn(DEV, "p %s: error=%d\n", | ||
229 | bio_data_dir(bio) == WRITE ? "write" : "read", error); | ||
230 | if (!error && !uptodate) { | 227 | if (!error && !uptodate) { |
231 | dev_warn(DEV, "p %s: setting error to -EIO\n", | 228 | dev_warn(DEV, "p %s: setting error to -EIO\n", |
232 | bio_data_dir(bio) == WRITE ? "write" : "read"); | 229 | bio_data_dir(bio) == WRITE ? "write" : "read"); |
@@ -257,20 +254,6 @@ void drbd_endio_pri(struct bio *bio, int error) | |||
257 | complete_master_bio(mdev, &m); | 254 | complete_master_bio(mdev, &m); |
258 | } | 255 | } |
259 | 256 | ||
260 | int w_io_error(struct drbd_conf *mdev, struct drbd_work *w, int cancel) | ||
261 | { | ||
262 | struct drbd_request *req = container_of(w, struct drbd_request, w); | ||
263 | |||
264 | /* NOTE: mdev->ldev can be NULL by the time we get here! */ | ||
265 | /* D_ASSERT(mdev->ldev->dc.on_io_error != EP_PASS_ON); */ | ||
266 | |||
267 | /* the only way this callback is scheduled is from _req_may_be_done, | ||
268 | * when it is done and had a local write error, see comments there */ | ||
269 | drbd_req_free(req); | ||
270 | |||
271 | return TRUE; | ||
272 | } | ||
273 | |||
274 | int w_read_retry_remote(struct drbd_conf *mdev, struct drbd_work *w, int cancel) | 257 | int w_read_retry_remote(struct drbd_conf *mdev, struct drbd_work *w, int cancel) |
275 | { | 258 | { |
276 | struct drbd_request *req = container_of(w, struct drbd_request, w); | 259 | struct drbd_request *req = container_of(w, struct drbd_request, w); |
@@ -280,12 +263,9 @@ int w_read_retry_remote(struct drbd_conf *mdev, struct drbd_work *w, int cancel) | |||
280 | * to give the disk the chance to relocate that block */ | 263 | * to give the disk the chance to relocate that block */ |
281 | 264 | ||
282 | spin_lock_irq(&mdev->req_lock); | 265 | spin_lock_irq(&mdev->req_lock); |
283 | if (cancel || | 266 | if (cancel || mdev->state.pdsk != D_UP_TO_DATE) { |
284 | mdev->state.conn < C_CONNECTED || | 267 | _req_mod(req, read_retry_remote_canceled); |
285 | mdev->state.pdsk <= D_INCONSISTENT) { | ||
286 | _req_mod(req, send_canceled); | ||
287 | spin_unlock_irq(&mdev->req_lock); | 268 | spin_unlock_irq(&mdev->req_lock); |
288 | dev_alert(DEV, "WE ARE LOST. Local IO failure, no peer.\n"); | ||
289 | return 1; | 269 | return 1; |
290 | } | 270 | } |
291 | spin_unlock_irq(&mdev->req_lock); | 271 | spin_unlock_irq(&mdev->req_lock); |