Lines Matching refs:mdev
108 void *drbd_md_get_buffer(struct drbd_conf *mdev) in drbd_md_get_buffer() argument
112 wait_event(mdev->misc_wait, in drbd_md_get_buffer()
113 (r = atomic_cmpxchg(&mdev->md_io_in_use, 0, 1)) == 0 || in drbd_md_get_buffer()
114 mdev->state.disk <= D_FAILED); in drbd_md_get_buffer()
116 return r ? NULL : page_address(mdev->md_io_page); in drbd_md_get_buffer()
119 void drbd_md_put_buffer(struct drbd_conf *mdev) in drbd_md_put_buffer() argument
121 if (atomic_dec_and_test(&mdev->md_io_in_use)) in drbd_md_put_buffer()
122 wake_up(&mdev->misc_wait); in drbd_md_put_buffer()
125 void wait_until_done_or_force_detached(struct drbd_conf *mdev, struct drbd_backing_dev *bdev, in wait_until_done_or_force_detached() argument
137 dt = wait_event_timeout(mdev->misc_wait, in wait_until_done_or_force_detached()
138 *done || test_bit(FORCE_DETACH, &mdev->flags), dt); in wait_until_done_or_force_detached()
141 drbd_chk_io_error(mdev, 1, DRBD_FORCE_DETACH); in wait_until_done_or_force_detached()
145 static int _drbd_md_sync_page_io(struct drbd_conf *mdev, in _drbd_md_sync_page_io() argument
153 mdev->md_io.done = 0; in _drbd_md_sync_page_io()
154 mdev->md_io.error = -ENODEV; in _drbd_md_sync_page_io()
156 if ((rw & WRITE) && !test_bit(MD_NO_FUA, &mdev->flags)) in _drbd_md_sync_page_io()
166 bio->bi_private = &mdev->md_io; in _drbd_md_sync_page_io()
170 if (!(rw & WRITE) && mdev->state.disk == D_DISKLESS && mdev->ldev == NULL) in _drbd_md_sync_page_io()
173 else if (!get_ldev_if_state(mdev, D_ATTACHING)) { in _drbd_md_sync_page_io()
181 atomic_inc(&mdev->md_io_in_use); /* drbd_md_put_buffer() is in the completion handler */ in _drbd_md_sync_page_io()
182 if (drbd_insert_fault(mdev, (rw & WRITE) ? DRBD_FAULT_MD_WR : DRBD_FAULT_MD_RD)) in _drbd_md_sync_page_io()
186 wait_until_done_or_force_detached(mdev, bdev, &mdev->md_io.done); in _drbd_md_sync_page_io()
188 err = mdev->md_io.error; in _drbd_md_sync_page_io()
195 int drbd_md_sync_page_io(struct drbd_conf *mdev, struct drbd_backing_dev *bdev, in drbd_md_sync_page_io() argument
199 struct page *iop = mdev->md_io_page; in drbd_md_sync_page_io()
201 D_ASSERT(atomic_read(&mdev->md_io_in_use) == 1); in drbd_md_sync_page_io()
217 err = _drbd_md_sync_page_io(mdev, bdev, iop, sector, rw, 4096); in drbd_md_sync_page_io()
225 static struct bm_extent *find_active_resync_extent(struct drbd_conf *mdev, unsigned int enr) in find_active_resync_extent() argument
228 tmp = lc_find(mdev->resync, enr/AL_EXT_PER_BM_SECT); in find_active_resync_extent()
237 static struct lc_element *_al_get(struct drbd_conf *mdev, unsigned int enr, bool nonblock) in _al_get() argument
243 spin_lock_irq(&mdev->al_lock); in _al_get()
244 bm_ext = find_active_resync_extent(mdev, enr); in _al_get()
247 spin_unlock_irq(&mdev->al_lock); in _al_get()
249 wake_up(&mdev->al_wait); in _al_get()
253 al_ext = lc_try_get(mdev->act_log, enr); in _al_get()
255 al_ext = lc_get(mdev->act_log, enr); in _al_get()
256 spin_unlock_irq(&mdev->al_lock); in _al_get()
260 bool drbd_al_begin_io_fastpath(struct drbd_conf *mdev, struct drbd_interval *i) in drbd_al_begin_io_fastpath() argument
268 D_ASSERT(atomic_read(&mdev->local_cnt) > 0); in drbd_al_begin_io_fastpath()
274 return _al_get(mdev, first, true); in drbd_al_begin_io_fastpath()
277 bool drbd_al_begin_io_prepare(struct drbd_conf *mdev, struct drbd_interval *i) in drbd_al_begin_io_prepare() argument
287 D_ASSERT(atomic_read(&mdev->local_cnt) > 0); in drbd_al_begin_io_prepare()
291 wait_event(mdev->al_wait, in drbd_al_begin_io_prepare()
292 (al_ext = _al_get(mdev, enr, false)) != NULL); in drbd_al_begin_io_prepare()
299 static int al_write_transaction(struct drbd_conf *mdev, bool delegate);
313 void drbd_al_begin_io_commit(struct drbd_conf *mdev, bool delegate) in drbd_al_begin_io_commit() argument
317 BUG_ON(delegate && current == mdev->tconn->worker.task); in drbd_al_begin_io_commit()
322 wait_event(mdev->al_wait, in drbd_al_begin_io_commit()
323 mdev->act_log->pending_changes == 0 || in drbd_al_begin_io_commit()
324 (locked = lc_try_lock_for_transaction(mdev->act_log))); in drbd_al_begin_io_commit()
329 if (mdev->act_log->pending_changes) { in drbd_al_begin_io_commit()
333 write_al_updates = rcu_dereference(mdev->ldev->disk_conf)->al_updates; in drbd_al_begin_io_commit()
337 al_write_transaction(mdev, delegate); in drbd_al_begin_io_commit()
338 spin_lock_irq(&mdev->al_lock); in drbd_al_begin_io_commit()
343 lc_committed(mdev->act_log); in drbd_al_begin_io_commit()
344 spin_unlock_irq(&mdev->al_lock); in drbd_al_begin_io_commit()
346 lc_unlock(mdev->act_log); in drbd_al_begin_io_commit()
347 wake_up(&mdev->al_wait); in drbd_al_begin_io_commit()
354 void drbd_al_begin_io(struct drbd_conf *mdev, struct drbd_interval *i, bool delegate) in drbd_al_begin_io() argument
356 BUG_ON(delegate && current == mdev->tconn->worker.task); in drbd_al_begin_io()
358 if (drbd_al_begin_io_prepare(mdev, i)) in drbd_al_begin_io()
359 drbd_al_begin_io_commit(mdev, delegate); in drbd_al_begin_io()
362 int drbd_al_begin_io_nonblock(struct drbd_conf *mdev, struct drbd_interval *i) in drbd_al_begin_io_nonblock() argument
364 struct lru_cache *al = mdev->act_log; in drbd_al_begin_io_nonblock()
388 tmp = lc_find(mdev->resync, enr/AL_EXT_PER_BM_SECT); in drbd_al_begin_io_nonblock()
404 al_ext = lc_get_cumulative(mdev->act_log, enr); in drbd_al_begin_io_nonblock()
411 void drbd_al_complete_io(struct drbd_conf *mdev, struct drbd_interval *i) in drbd_al_complete_io() argument
422 spin_lock_irqsave(&mdev->al_lock, flags); in drbd_al_complete_io()
425 extent = lc_find(mdev->act_log, enr); in drbd_al_complete_io()
430 lc_put(mdev->act_log, extent); in drbd_al_complete_io()
432 spin_unlock_irqrestore(&mdev->al_lock, flags); in drbd_al_complete_io()
433 wake_up(&mdev->al_wait); in drbd_al_complete_io()
463 static sector_t al_tr_number_to_on_disk_sector(struct drbd_conf *mdev) in al_tr_number_to_on_disk_sector() argument
465 const unsigned int stripes = mdev->ldev->md.al_stripes; in al_tr_number_to_on_disk_sector()
466 const unsigned int stripe_size_4kB = mdev->ldev->md.al_stripe_size_4k; in al_tr_number_to_on_disk_sector()
469 unsigned int t = mdev->al_tr_number % (mdev->ldev->md.al_size_4k); in al_tr_number_to_on_disk_sector()
478 return mdev->ldev->md.md_offset + mdev->ldev->md.al_offset + t; in al_tr_number_to_on_disk_sector()
482 _al_write_transaction(struct drbd_conf *mdev) in _al_write_transaction() argument
492 if (!get_ldev(mdev)) { in _al_write_transaction()
494 drbd_disk_str(mdev->state.disk)); in _al_write_transaction()
499 if (mdev->state.disk < D_INCONSISTENT) { in _al_write_transaction()
502 drbd_disk_str(mdev->state.disk)); in _al_write_transaction()
503 put_ldev(mdev); in _al_write_transaction()
507 buffer = drbd_md_get_buffer(mdev); /* protects md_io_buffer, al_tr_cycle, ... */ in _al_write_transaction()
510 put_ldev(mdev); in _al_write_transaction()
516 buffer->tr_number = cpu_to_be32(mdev->al_tr_number); in _al_write_transaction()
524 spin_lock_irq(&mdev->al_lock); in _al_write_transaction()
525 list_for_each_entry(e, &mdev->act_log->to_be_changed, list) { in _al_write_transaction()
533 drbd_bm_mark_for_writeout(mdev, in _al_write_transaction()
537 spin_unlock_irq(&mdev->al_lock); in _al_write_transaction()
546 buffer->context_size = cpu_to_be16(mdev->act_log->nr_elements); in _al_write_transaction()
547 buffer->context_start_slot_nr = cpu_to_be16(mdev->al_tr_cycle); in _al_write_transaction()
550 mdev->act_log->nr_elements - mdev->al_tr_cycle); in _al_write_transaction()
552 unsigned idx = mdev->al_tr_cycle + i; in _al_write_transaction()
553 extent_nr = lc_element_by_index(mdev->act_log, idx)->lc_number; in _al_write_transaction()
559 mdev->al_tr_cycle += AL_CONTEXT_PER_TRANSACTION; in _al_write_transaction()
560 if (mdev->al_tr_cycle >= mdev->act_log->nr_elements) in _al_write_transaction()
561 mdev->al_tr_cycle = 0; in _al_write_transaction()
563 sector = al_tr_number_to_on_disk_sector(mdev); in _al_write_transaction()
568 if (drbd_bm_write_hinted(mdev)) in _al_write_transaction()
573 write_al_updates = rcu_dereference(mdev->ldev->disk_conf)->al_updates; in _al_write_transaction()
576 if (drbd_md_sync_page_io(mdev, mdev->ldev, sector, WRITE)) { in _al_write_transaction()
578 drbd_chk_io_error(mdev, 1, DRBD_META_IO_ERROR); in _al_write_transaction()
580 mdev->al_tr_number++; in _al_write_transaction()
581 mdev->al_writ_cnt++; in _al_write_transaction()
586 drbd_md_put_buffer(mdev); in _al_write_transaction()
587 put_ldev(mdev); in _al_write_transaction()
596 struct drbd_conf *mdev = w->mdev; in w_al_write_transaction() local
599 err = _al_write_transaction(mdev); in w_al_write_transaction()
609 static int al_write_transaction(struct drbd_conf *mdev, bool delegate) in al_write_transaction() argument
615 al_work.w.mdev = mdev; in al_write_transaction()
616 drbd_queue_work_front(&mdev->tconn->sender_work, &al_work.w); in al_write_transaction()
620 return _al_write_transaction(mdev); in al_write_transaction()
623 static int _try_lc_del(struct drbd_conf *mdev, struct lc_element *al_ext) in _try_lc_del() argument
627 spin_lock_irq(&mdev->al_lock); in _try_lc_del()
630 lc_del(mdev->act_log, al_ext); in _try_lc_del()
631 spin_unlock_irq(&mdev->al_lock); in _try_lc_del()
645 void drbd_al_shrink(struct drbd_conf *mdev) in drbd_al_shrink() argument
650 D_ASSERT(test_bit(__LC_LOCKED, &mdev->act_log->flags)); in drbd_al_shrink()
652 for (i = 0; i < mdev->act_log->nr_elements; i++) { in drbd_al_shrink()
653 al_ext = lc_element_by_index(mdev->act_log, i); in drbd_al_shrink()
656 wait_event(mdev->al_wait, _try_lc_del(mdev, al_ext)); in drbd_al_shrink()
659 wake_up(&mdev->al_wait); in drbd_al_shrink()
665 struct drbd_conf *mdev = w->mdev; in w_update_odbm() local
668 if (!get_ldev(mdev)) { in w_update_odbm()
675 drbd_bm_write_page(mdev, rs_extent_to_bm_page(udw->enr)); in w_update_odbm()
676 put_ldev(mdev); in w_update_odbm()
680 if (drbd_bm_total_weight(mdev) <= mdev->rs_failed) { in w_update_odbm()
681 switch (mdev->state.conn) { in w_update_odbm()
684 drbd_resync_finished(mdev); in w_update_odbm()
690 drbd_bcast_event(mdev, &sib); in w_update_odbm()
702 static void drbd_try_clear_on_disk_bm(struct drbd_conf *mdev, sector_t sector, in drbd_try_clear_on_disk_bm() argument
710 D_ASSERT(atomic_read(&mdev->local_cnt)); in drbd_try_clear_on_disk_bm()
716 e = lc_get(mdev->resync, enr); in drbd_try_clear_on_disk_bm()
730 drbd_conn_str(mdev->state.conn)); in drbd_try_clear_on_disk_bm()
738 ext->rs_left = drbd_bm_e_weight(mdev, enr); in drbd_try_clear_on_disk_bm()
747 int rs_left = drbd_bm_e_weight(mdev, enr); in drbd_try_clear_on_disk_bm()
764 lc_committed(mdev->resync); in drbd_try_clear_on_disk_bm()
766 lc_put(mdev->resync, &ext->lce); in drbd_try_clear_on_disk_bm()
776 udw->w.mdev = mdev; in drbd_try_clear_on_disk_bm()
777 drbd_queue_work_front(&mdev->tconn->sender_work, &udw->w); in drbd_try_clear_on_disk_bm()
784 mdev->resync_locked, in drbd_try_clear_on_disk_bm()
785 mdev->resync->nr_elements, in drbd_try_clear_on_disk_bm()
786 mdev->resync->flags); in drbd_try_clear_on_disk_bm()
790 void drbd_advance_rs_marks(struct drbd_conf *mdev, unsigned long still_to_go) in drbd_advance_rs_marks() argument
793 unsigned long last = mdev->rs_mark_time[mdev->rs_last_mark]; in drbd_advance_rs_marks()
794 int next = (mdev->rs_last_mark + 1) % DRBD_SYNC_MARKS; in drbd_advance_rs_marks()
796 if (mdev->rs_mark_left[mdev->rs_last_mark] != still_to_go && in drbd_advance_rs_marks()
797 mdev->state.conn != C_PAUSED_SYNC_T && in drbd_advance_rs_marks()
798 mdev->state.conn != C_PAUSED_SYNC_S) { in drbd_advance_rs_marks()
799 mdev->rs_mark_time[next] = now; in drbd_advance_rs_marks()
800 mdev->rs_mark_left[next] = still_to_go; in drbd_advance_rs_marks()
801 mdev->rs_last_mark = next; in drbd_advance_rs_marks()
813 void __drbd_set_in_sync(struct drbd_conf *mdev, sector_t sector, int size, in __drbd_set_in_sync() argument
829 if (!get_ldev(mdev)) in __drbd_set_in_sync()
832 nr_sectors = drbd_get_capacity(mdev->this_bdev); in __drbd_set_in_sync()
860 count = drbd_bm_clear_bits(mdev, sbnr, ebnr); in __drbd_set_in_sync()
862 drbd_advance_rs_marks(mdev, drbd_bm_total_weight(mdev)); in __drbd_set_in_sync()
863 spin_lock_irqsave(&mdev->al_lock, flags); in __drbd_set_in_sync()
864 drbd_try_clear_on_disk_bm(mdev, sector, count, true); in __drbd_set_in_sync()
865 spin_unlock_irqrestore(&mdev->al_lock, flags); in __drbd_set_in_sync()
872 put_ldev(mdev); in __drbd_set_in_sync()
874 wake_up(&mdev->al_wait); in __drbd_set_in_sync()
885 int __drbd_set_out_of_sync(struct drbd_conf *mdev, sector_t sector, int size, in __drbd_set_out_of_sync() argument
903 if (!get_ldev(mdev)) in __drbd_set_out_of_sync()
906 nr_sectors = drbd_get_capacity(mdev->this_bdev); in __drbd_set_out_of_sync()
921 spin_lock_irqsave(&mdev->al_lock, flags); in __drbd_set_out_of_sync()
922 count = drbd_bm_set_bits(mdev, sbnr, ebnr); in __drbd_set_out_of_sync()
925 e = lc_find(mdev->resync, enr); in __drbd_set_out_of_sync()
928 spin_unlock_irqrestore(&mdev->al_lock, flags); in __drbd_set_out_of_sync()
931 put_ldev(mdev); in __drbd_set_out_of_sync()
937 struct bm_extent *_bme_get(struct drbd_conf *mdev, unsigned int enr) in _bme_get() argument
944 spin_lock_irq(&mdev->al_lock); in _bme_get()
945 if (mdev->resync_locked > mdev->resync->nr_elements/2) { in _bme_get()
946 spin_unlock_irq(&mdev->al_lock); in _bme_get()
949 e = lc_get(mdev->resync, enr); in _bme_get()
953 bm_ext->rs_left = drbd_bm_e_weight(mdev, enr); in _bme_get()
955 lc_committed(mdev->resync); in _bme_get()
959 mdev->resync_locked++; in _bme_get()
962 rs_flags = mdev->resync->flags; in _bme_get()
963 spin_unlock_irq(&mdev->al_lock); in _bme_get()
965 wake_up(&mdev->al_wait); in _bme_get()
977 static int _is_in_al(struct drbd_conf *mdev, unsigned int enr) in _is_in_al() argument
981 spin_lock_irq(&mdev->al_lock); in _is_in_al()
982 rv = lc_is_used(mdev->act_log, enr); in _is_in_al()
983 spin_unlock_irq(&mdev->al_lock); in _is_in_al()
995 int drbd_rs_begin_io(struct drbd_conf *mdev, sector_t sector) in drbd_rs_begin_io() argument
1004 sig = wait_event_interruptible(mdev->al_wait, in drbd_rs_begin_io()
1005 (bm_ext = _bme_get(mdev, enr))); in drbd_rs_begin_io()
1013 sig = wait_event_interruptible(mdev->al_wait, in drbd_rs_begin_io()
1014 !_is_in_al(mdev, enr * AL_EXT_PER_BM_SECT + i) || in drbd_rs_begin_io()
1018 spin_lock_irq(&mdev->al_lock); in drbd_rs_begin_io()
1019 if (lc_put(mdev->resync, &bm_ext->lce) == 0) { in drbd_rs_begin_io()
1021 mdev->resync_locked--; in drbd_rs_begin_io()
1022 wake_up(&mdev->al_wait); in drbd_rs_begin_io()
1024 spin_unlock_irq(&mdev->al_lock); in drbd_rs_begin_io()
1048 int drbd_try_rs_begin_io(struct drbd_conf *mdev, sector_t sector) in drbd_try_rs_begin_io() argument
1056 spin_lock_irq(&mdev->al_lock); in drbd_try_rs_begin_io()
1057 if (mdev->resync_wenr != LC_FREE && mdev->resync_wenr != enr) { in drbd_try_rs_begin_io()
1071 e = lc_find(mdev->resync, mdev->resync_wenr); in drbd_try_rs_begin_io()
1077 mdev->resync_wenr = LC_FREE; in drbd_try_rs_begin_io()
1078 if (lc_put(mdev->resync, &bm_ext->lce) == 0) in drbd_try_rs_begin_io()
1079 mdev->resync_locked--; in drbd_try_rs_begin_io()
1080 wake_up(&mdev->al_wait); in drbd_try_rs_begin_io()
1086 e = lc_try_get(mdev->resync, enr); in drbd_try_rs_begin_io()
1092 mdev->resync_locked++; in drbd_try_rs_begin_io()
1104 if (mdev->resync_locked > mdev->resync->nr_elements-3) in drbd_try_rs_begin_io()
1107 e = lc_get(mdev->resync, enr); in drbd_try_rs_begin_io()
1110 const unsigned long rs_flags = mdev->resync->flags; in drbd_try_rs_begin_io()
1118 bm_ext->rs_left = drbd_bm_e_weight(mdev, enr); in drbd_try_rs_begin_io()
1120 lc_committed(mdev->resync); in drbd_try_rs_begin_io()
1121 wake_up(&mdev->al_wait); in drbd_try_rs_begin_io()
1126 mdev->resync_locked++; in drbd_try_rs_begin_io()
1131 if (lc_is_used(mdev->act_log, al_enr+i)) in drbd_try_rs_begin_io()
1136 mdev->resync_wenr = LC_FREE; in drbd_try_rs_begin_io()
1137 spin_unlock_irq(&mdev->al_lock); in drbd_try_rs_begin_io()
1142 mdev->resync_wenr = enr; in drbd_try_rs_begin_io()
1143 spin_unlock_irq(&mdev->al_lock); in drbd_try_rs_begin_io()
1147 void drbd_rs_complete_io(struct drbd_conf *mdev, sector_t sector) in drbd_rs_complete_io() argument
1154 spin_lock_irqsave(&mdev->al_lock, flags); in drbd_rs_complete_io()
1155 e = lc_find(mdev->resync, enr); in drbd_rs_complete_io()
1158 spin_unlock_irqrestore(&mdev->al_lock, flags); in drbd_rs_complete_io()
1165 spin_unlock_irqrestore(&mdev->al_lock, flags); in drbd_rs_complete_io()
1172 if (lc_put(mdev->resync, &bm_ext->lce) == 0) { in drbd_rs_complete_io()
1174 mdev->resync_locked--; in drbd_rs_complete_io()
1175 wake_up(&mdev->al_wait); in drbd_rs_complete_io()
1178 spin_unlock_irqrestore(&mdev->al_lock, flags); in drbd_rs_complete_io()
1185 void drbd_rs_cancel_all(struct drbd_conf *mdev) in drbd_rs_cancel_all() argument
1187 spin_lock_irq(&mdev->al_lock); in drbd_rs_cancel_all()
1189 if (get_ldev_if_state(mdev, D_FAILED)) { /* Makes sure ->resync is there. */ in drbd_rs_cancel_all()
1190 lc_reset(mdev->resync); in drbd_rs_cancel_all()
1191 put_ldev(mdev); in drbd_rs_cancel_all()
1193 mdev->resync_locked = 0; in drbd_rs_cancel_all()
1194 mdev->resync_wenr = LC_FREE; in drbd_rs_cancel_all()
1195 spin_unlock_irq(&mdev->al_lock); in drbd_rs_cancel_all()
1196 wake_up(&mdev->al_wait); in drbd_rs_cancel_all()
1206 int drbd_rs_del_all(struct drbd_conf *mdev) in drbd_rs_del_all() argument
1212 spin_lock_irq(&mdev->al_lock); in drbd_rs_del_all()
1214 if (get_ldev_if_state(mdev, D_FAILED)) { in drbd_rs_del_all()
1216 for (i = 0; i < mdev->resync->nr_elements; i++) { in drbd_rs_del_all()
1217 e = lc_element_by_index(mdev->resync, i); in drbd_rs_del_all()
1221 if (bm_ext->lce.lc_number == mdev->resync_wenr) { in drbd_rs_del_all()
1224 mdev->resync_wenr); in drbd_rs_del_all()
1228 mdev->resync_wenr = LC_FREE; in drbd_rs_del_all()
1229 lc_put(mdev->resync, &bm_ext->lce); in drbd_rs_del_all()
1234 put_ldev(mdev); in drbd_rs_del_all()
1235 spin_unlock_irq(&mdev->al_lock); in drbd_rs_del_all()
1240 lc_del(mdev->resync, &bm_ext->lce); in drbd_rs_del_all()
1242 D_ASSERT(mdev->resync->used == 0); in drbd_rs_del_all()
1243 put_ldev(mdev); in drbd_rs_del_all()
1245 spin_unlock_irq(&mdev->al_lock); in drbd_rs_del_all()
1246 wake_up(&mdev->al_wait); in drbd_rs_del_all()
1257 void drbd_rs_failed_io(struct drbd_conf *mdev, sector_t sector, int size) in drbd_rs_failed_io() argument
1270 nr_sectors = drbd_get_capacity(mdev->this_bdev); in drbd_rs_failed_io()
1298 spin_lock_irq(&mdev->al_lock); in drbd_rs_failed_io()
1299 count = drbd_bm_count_bits(mdev, sbnr, ebnr); in drbd_rs_failed_io()
1301 mdev->rs_failed += count; in drbd_rs_failed_io()
1303 if (get_ldev(mdev)) { in drbd_rs_failed_io()
1304 drbd_try_clear_on_disk_bm(mdev, sector, count, false); in drbd_rs_failed_io()
1305 put_ldev(mdev); in drbd_rs_failed_io()
1312 spin_unlock_irq(&mdev->al_lock); in drbd_rs_failed_io()
1314 wake_up(&mdev->al_wait); in drbd_rs_failed_io()