diff options
Diffstat (limited to 'drivers/block/drbd/drbd_worker.c')
| -rw-r--r-- | drivers/block/drbd/drbd_worker.c | 23 |
1 files changed, 1 insertions, 22 deletions
diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c index 108d58015cd1..b0551ba7ad0c 100644 --- a/drivers/block/drbd/drbd_worker.c +++ b/drivers/block/drbd/drbd_worker.c | |||
| @@ -102,12 +102,6 @@ void drbd_endio_read_sec_final(struct drbd_epoch_entry *e) __releases(local) | |||
| 102 | put_ldev(mdev); | 102 | put_ldev(mdev); |
| 103 | } | 103 | } |
| 104 | 104 | ||
| 105 | static int is_failed_barrier(int ee_flags) | ||
| 106 | { | ||
| 107 | return (ee_flags & (EE_IS_BARRIER|EE_WAS_ERROR|EE_RESUBMITTED)) | ||
| 108 | == (EE_IS_BARRIER|EE_WAS_ERROR); | ||
| 109 | } | ||
| 110 | |||
| 111 | /* writes on behalf of the partner, or resync writes, | 105 | /* writes on behalf of the partner, or resync writes, |
| 112 | * "submitted" by the receiver, final stage. */ | 106 | * "submitted" by the receiver, final stage. */ |
| 113 | static void drbd_endio_write_sec_final(struct drbd_epoch_entry *e) __releases(local) | 107 | static void drbd_endio_write_sec_final(struct drbd_epoch_entry *e) __releases(local) |
| @@ -119,21 +113,6 @@ static void drbd_endio_write_sec_final(struct drbd_epoch_entry *e) __releases(lo | |||
| 119 | int is_syncer_req; | 113 | int is_syncer_req; |
| 120 | int do_al_complete_io; | 114 | int do_al_complete_io; |
| 121 | 115 | ||
| 122 | /* if this is a failed barrier request, disable use of barriers, | ||
| 123 | * and schedule for resubmission */ | ||
| 124 | if (is_failed_barrier(e->flags)) { | ||
| 125 | drbd_bump_write_ordering(mdev, WO_bdev_flush); | ||
| 126 | spin_lock_irqsave(&mdev->req_lock, flags); | ||
| 127 | list_del(&e->w.list); | ||
| 128 | e->flags = (e->flags & ~EE_WAS_ERROR) | EE_RESUBMITTED; | ||
| 129 | e->w.cb = w_e_reissue; | ||
| 130 | /* put_ldev actually happens below, once we come here again. */ | ||
| 131 | __release(local); | ||
| 132 | spin_unlock_irqrestore(&mdev->req_lock, flags); | ||
| 133 | drbd_queue_work(&mdev->data.work, &e->w); | ||
| 134 | return; | ||
| 135 | } | ||
| 136 | |||
| 137 | D_ASSERT(e->block_id != ID_VACANT); | 116 | D_ASSERT(e->block_id != ID_VACANT); |
| 138 | 117 | ||
| 139 | /* after we moved e to done_ee, | 118 | /* after we moved e to done_ee, |
| @@ -925,7 +904,7 @@ out: | |||
| 925 | drbd_md_sync(mdev); | 904 | drbd_md_sync(mdev); |
| 926 | 905 | ||
| 927 | if (test_and_clear_bit(WRITE_BM_AFTER_RESYNC, &mdev->flags)) { | 906 | if (test_and_clear_bit(WRITE_BM_AFTER_RESYNC, &mdev->flags)) { |
| 928 | dev_warn(DEV, "Writing the whole bitmap, due to failed kmalloc\n"); | 907 | dev_info(DEV, "Writing the whole bitmap\n"); |
| 929 | drbd_queue_bitmap_io(mdev, &drbd_bm_write, NULL, "write from resync_finished"); | 908 | drbd_queue_bitmap_io(mdev, &drbd_bm_write, NULL, "write from resync_finished"); |
| 930 | } | 909 | } |
| 931 | 910 | ||
