Lines Matching refs:device
68 void tl_abort_disk_io(struct drbd_device *device);
102 #define __drbd_printk_device(level, device, fmt, args...) \ argument
103 dev_printk(level, disk_to_dev((device)->vdisk), fmt, ## args)
105 dev_printk(level, disk_to_dev((peer_device)->device->vdisk), fmt, ## args)
146 #define dynamic_drbd_dbg(device, fmt, args...) \ argument
147 dynamic_dev_dbg(disk_to_dev(device->vdisk), fmt, ## args)
149 #define D_ASSERT(device, exp) do { \ argument
151 drbd_err(device, "ASSERT( " #exp " ) in %s:%d\n", __FILE__, __LINE__); \
162 drbd_err(device, "ASSERTION %s FAILED in %s\n", \
184 _drbd_insert_fault(struct drbd_device *device, unsigned int type);
187 drbd_insert_fault(struct drbd_device *device, unsigned int type) { in drbd_insert_fault() argument
191 _drbd_insert_fault(device, type); in drbd_insert_fault()
226 extern void INFO_bm_xfer_stats(struct drbd_device *device,
287 struct drbd_device *device; member
296 struct drbd_device *device; member
630 int (*io_fn)(struct drbd_device *device);
631 void (*done)(struct drbd_device *device, int rv);
811 struct drbd_device *device; member
976 struct drbd_device *device; member
1007 struct drbd_device *device; member
1017 static inline struct drbd_peer_device *first_peer_device(struct drbd_device *device) in first_peer_device() argument
1019 return list_first_entry_or_null(&device->peer_devices, struct drbd_peer_device, peer_devices); in first_peer_device()
1040 #define for_each_peer_device(peer_device, device) \ argument
1041 list_for_each_entry(peer_device, &device->peer_devices, peer_devices)
1043 #define for_each_peer_device_rcu(peer_device, device) \ argument
1044 list_for_each_entry_rcu(peer_device, &device->peer_devices, peer_devices)
1046 #define for_each_peer_device_safe(peer_device, tmp, device) \ argument
1047 list_for_each_entry_safe(peer_device, tmp, &device->peer_devices, peer_devices)
1049 static inline unsigned int device_to_minor(struct drbd_device *device) in device_to_minor() argument
1051 return device->minor; in device_to_minor()
1065 extern void drbd_init_set_defaults(struct drbd_device *device);
1112 extern int drbd_send_bitmap(struct drbd_device *device);
1116 extern void drbd_device_cleanup(struct drbd_device *device);
1117 void drbd_print_uuids(struct drbd_device *device, const char *text);
1120 extern void drbd_md_write(struct drbd_device *device, void *buffer);
1121 extern void drbd_md_sync(struct drbd_device *device);
1122 extern int drbd_md_read(struct drbd_device *device, struct drbd_backing_dev *bdev);
1123 extern void drbd_uuid_set(struct drbd_device *device, int idx, u64 val) __must_hold(local);
1124 extern void _drbd_uuid_set(struct drbd_device *device, int idx, u64 val) __must_hold(local);
1125 extern void drbd_uuid_new_current(struct drbd_device *device) __must_hold(local);
1126 extern void drbd_uuid_set_bm(struct drbd_device *device, u64 val) __must_hold(local);
1127 extern void drbd_uuid_move_history(struct drbd_device *device) __must_hold(local);
1128 extern void __drbd_uuid_set(struct drbd_device *device, int idx, u64 val) __must_hold(local);
1129 extern void drbd_md_set_flag(struct drbd_device *device, int flags) __must_hold(local);
1130 extern void drbd_md_clear_flag(struct drbd_device *device, int flags)__must_hold(local);
1132 extern void drbd_md_mark_dirty(struct drbd_device *device);
1133 extern void drbd_queue_bitmap_io(struct drbd_device *device,
1137 extern int drbd_bitmap_io(struct drbd_device *device,
1140 extern int drbd_bitmap_io_from_worker(struct drbd_device *device,
1143 extern int drbd_bmio_set_n_write(struct drbd_device *device) __must_hold(local);
1144 extern int drbd_bmio_clear_n_write(struct drbd_device *device) __must_hold(local);
1340 extern int drbd_bm_init(struct drbd_device *device);
1341 extern int drbd_bm_resize(struct drbd_device *device, sector_t sectors, int set_new_bits);
1342 extern void drbd_bm_cleanup(struct drbd_device *device);
1343 extern void drbd_bm_set_all(struct drbd_device *device);
1344 extern void drbd_bm_clear_all(struct drbd_device *device);
1347 struct drbd_device *device, unsigned long s, unsigned long e);
1349 struct drbd_device *device, unsigned long s, unsigned long e);
1351 struct drbd_device *device, const unsigned long s, const unsigned long e);
1354 extern void _drbd_bm_set_bits(struct drbd_device *device,
1356 extern int drbd_bm_test_bit(struct drbd_device *device, unsigned long bitnr);
1357 extern int drbd_bm_e_weight(struct drbd_device *device, unsigned long enr);
1358 extern int drbd_bm_read(struct drbd_device *device) __must_hold(local);
1359 extern void drbd_bm_mark_for_writeout(struct drbd_device *device, int page_nr);
1360 extern int drbd_bm_write(struct drbd_device *device) __must_hold(local);
1361 extern int drbd_bm_write_hinted(struct drbd_device *device) __must_hold(local);
1362 extern int drbd_bm_write_lazy(struct drbd_device *device, unsigned upper_idx) __must_hold(local);
1363 extern int drbd_bm_write_all(struct drbd_device *device) __must_hold(local);
1364 extern int drbd_bm_write_copy_pages(struct drbd_device *device) __must_hold(local);
1365 extern size_t drbd_bm_words(struct drbd_device *device);
1366 extern unsigned long drbd_bm_bits(struct drbd_device *device);
1367 extern sector_t drbd_bm_capacity(struct drbd_device *device);
1370 extern unsigned long drbd_bm_find_next(struct drbd_device *device, unsigned long bm_fo);
1372 extern unsigned long _drbd_bm_find_next(struct drbd_device *device, unsigned long bm_fo);
1373 extern unsigned long _drbd_bm_find_next_zero(struct drbd_device *device, unsigned long bm_fo);
1374 extern unsigned long _drbd_bm_total_weight(struct drbd_device *device);
1375 extern unsigned long drbd_bm_total_weight(struct drbd_device *device);
1377 extern void drbd_bm_merge_lel(struct drbd_device *device, size_t offset,
1380 extern void drbd_bm_get_lel(struct drbd_device *device, size_t offset,
1383 extern void drbd_bm_lock(struct drbd_device *device, char *why, enum bm_flag flags);
1384 extern void drbd_bm_unlock(struct drbd_device *device);
1431 extern void drbd_delete_device(struct drbd_device *device);
1451 extern int drbd_read_remote(struct drbd_device *device, struct drbd_request *req);
1457 extern void drbd_suspend_io(struct drbd_device *device);
1458 extern void drbd_resume_io(struct drbd_device *device);
1473 extern void drbd_reconsider_max_bio_size(struct drbd_device *device, struct drbd_backing_dev *bdev);
1474 extern enum drbd_state_rv drbd_set_role(struct drbd_device *device,
1479 extern int drbd_khelper(struct drbd_device *device, char *cmd);
1487 enum drbd_ret_code drbd_resync_after_valid(struct drbd_device *device, int o_minor);
1488 void drbd_resync_after_changed(struct drbd_device *device);
1489 extern void drbd_start_resync(struct drbd_device *device, enum drbd_conns side);
1490 extern void resume_next_sg(struct drbd_device *device);
1491 extern void suspend_other_sg(struct drbd_device *device);
1492 extern int drbd_resync_finished(struct drbd_device *device);
1494 extern void *drbd_md_get_buffer(struct drbd_device *device, const char *intent);
1495 extern void drbd_md_put_buffer(struct drbd_device *device);
1496 extern int drbd_md_sync_page_io(struct drbd_device *device,
1499 extern void wait_until_done_or_force_detached(struct drbd_device *device,
1501 extern void drbd_rs_controller_reset(struct drbd_device *device);
1503 static inline void ov_out_of_sync_print(struct drbd_device *device) in ov_out_of_sync_print() argument
1505 if (device->ov_last_oos_size) { in ov_out_of_sync_print()
1506 drbd_err(device, "Out of sync: start=%llu, size=%lu (sectors)\n", in ov_out_of_sync_print()
1507 (unsigned long long)device->ov_last_oos_start, in ov_out_of_sync_print()
1508 (unsigned long)device->ov_last_oos_size); in ov_out_of_sync_print()
1510 device->ov_last_oos_size = 0; in ov_out_of_sync_print()
1540 extern bool drbd_rs_c_min_rate_throttle(struct drbd_device *device);
1541 extern bool drbd_rs_should_slow_down(struct drbd_device *device, sector_t sector,
1556 extern void drbd_set_recv_tcq(struct drbd_device *device, int tcq_enabled);
1557 extern void _drbd_clear_done_ee(struct drbd_device *device, struct list_head *to_be_freed);
1589 static inline void drbd_set_my_capacity(struct drbd_device *device, in drbd_set_my_capacity() argument
1593 set_capacity(device->vdisk, size); in drbd_set_my_capacity()
1594 device->this_bdev->bd_inode->i_size = (loff_t)size << 9; in drbd_set_my_capacity()
1600 static inline void drbd_generic_make_request(struct drbd_device *device, in drbd_generic_make_request() argument
1605 drbd_err(device, "drbd_generic_make_request: bio->bi_bdev == NULL\n"); in drbd_generic_make_request()
1610 if (drbd_insert_fault(device, fault_type)) in drbd_generic_make_request()
1626 extern bool drbd_al_begin_io_prepare(struct drbd_device *device, struct drbd_interval *i);
1627 extern int drbd_al_begin_io_nonblock(struct drbd_device *device, struct drbd_interval *i);
1628 extern void drbd_al_begin_io_commit(struct drbd_device *device);
1629 extern bool drbd_al_begin_io_fastpath(struct drbd_device *device, struct drbd_interval *i);
1630 extern void drbd_al_begin_io(struct drbd_device *device, struct drbd_interval *i);
1631 extern void drbd_al_complete_io(struct drbd_device *device, struct drbd_interval *i);
1632 extern void drbd_rs_complete_io(struct drbd_device *device, sector_t sector);
1633 extern int drbd_rs_begin_io(struct drbd_device *device, sector_t sector);
1634 extern int drbd_try_rs_begin_io(struct drbd_device *device, sector_t sector);
1635 extern void drbd_rs_cancel_all(struct drbd_device *device);
1636 extern int drbd_rs_del_all(struct drbd_device *device);
1637 extern void drbd_rs_failed_io(struct drbd_device *device,
1639 extern void drbd_advance_rs_marks(struct drbd_device *device, unsigned long still_to_go);
1642 extern int __drbd_change_sync(struct drbd_device *device, sector_t sector, int size,
1644 #define drbd_set_in_sync(device, sector, size) \ argument
1645 __drbd_change_sync(device, sector, size, SET_IN_SYNC)
1646 #define drbd_set_out_of_sync(device, sector, size) \ argument
1647 __drbd_change_sync(device, sector, size, SET_OUT_OF_SYNC)
1648 #define drbd_rs_failed_io(device, sector, size) \ argument
1649 __drbd_change_sync(device, sector, size, RECORD_RS_FAILED)
1650 extern void drbd_al_shrink(struct drbd_device *device);
1668 void drbd_bcast_event(struct drbd_device *device, const struct sib_info *sib);
1697 _drbd_set_state(struct drbd_device *device, union drbd_state ns, in _drbd_set_state() argument
1703 rv = __drbd_set_state(device, ns, flags, done); in _drbd_set_state()
1709 static inline union drbd_state drbd_read_state(struct drbd_device *device) in drbd_read_state() argument
1711 struct drbd_resource *resource = device->resource; in drbd_read_state()
1714 rv.i = device->state.i; in drbd_read_state()
1730 static inline void __drbd_chk_io_error_(struct drbd_device *device, in __drbd_chk_io_error_() argument
1737 ep = rcu_dereference(device->ldev->disk_conf)->on_io_error; in __drbd_chk_io_error_()
1743 drbd_err(device, "Local IO failed in %s.\n", where); in __drbd_chk_io_error_()
1744 if (device->state.disk > D_INCONSISTENT) in __drbd_chk_io_error_()
1745 _drbd_set_state(_NS(device, disk, D_INCONSISTENT), CS_HARD, NULL); in __drbd_chk_io_error_()
1771 set_bit(WAS_IO_ERROR, &device->flags); in __drbd_chk_io_error_()
1773 set_bit(WAS_READ_ERROR, &device->flags); in __drbd_chk_io_error_()
1775 set_bit(FORCE_DETACH, &device->flags); in __drbd_chk_io_error_()
1776 if (device->state.disk > D_FAILED) { in __drbd_chk_io_error_()
1777 _drbd_set_state(_NS(device, disk, D_FAILED), CS_HARD, NULL); in __drbd_chk_io_error_()
1778 drbd_err(device, in __drbd_chk_io_error_()
1794 static inline void drbd_chk_io_error_(struct drbd_device *device, in drbd_chk_io_error_() argument
1799 spin_lock_irqsave(&device->resource->req_lock, flags); in drbd_chk_io_error_()
1800 __drbd_chk_io_error_(device, forcedetach, where); in drbd_chk_io_error_()
1801 spin_unlock_irqrestore(&device->resource->req_lock, flags); in drbd_chk_io_error_()
1926 drbd_device_post_work(struct drbd_device *device, int work_bit) in drbd_device_post_work() argument
1928 if (!test_and_set_bit(work_bit, &device->flags)) { in drbd_device_post_work()
1930 first_peer_device(device)->connection; in drbd_device_post_work()
2002 static inline void inc_ap_pending(struct drbd_device *device) in inc_ap_pending() argument
2004 atomic_inc(&device->ap_pending_cnt); in inc_ap_pending()
2008 if (atomic_read(&device->which) < 0) \
2009 drbd_err(device, "in %s:%d: " #which " = %d < 0 !\n", \
2011 atomic_read(&device->which))
2013 #define dec_ap_pending(device) _dec_ap_pending(device, __func__, __LINE__) argument
2014 static inline void _dec_ap_pending(struct drbd_device *device, const char *func, int line) in _dec_ap_pending() argument
2016 if (atomic_dec_and_test(&device->ap_pending_cnt)) in _dec_ap_pending()
2017 wake_up(&device->misc_wait); in _dec_ap_pending()
2027 static inline void inc_rs_pending(struct drbd_device *device) in inc_rs_pending() argument
2029 atomic_inc(&device->rs_pending_cnt); in inc_rs_pending()
2032 #define dec_rs_pending(device) _dec_rs_pending(device, __func__, __LINE__) argument
2033 static inline void _dec_rs_pending(struct drbd_device *device, const char *func, int line) in _dec_rs_pending() argument
2035 atomic_dec(&device->rs_pending_cnt); in _dec_rs_pending()
2048 static inline void inc_unacked(struct drbd_device *device) in inc_unacked() argument
2050 atomic_inc(&device->unacked_cnt); in inc_unacked()
2053 #define dec_unacked(device) _dec_unacked(device, __func__, __LINE__) argument
2054 static inline void _dec_unacked(struct drbd_device *device, const char *func, int line) in _dec_unacked() argument
2056 atomic_dec(&device->unacked_cnt); in _dec_unacked()
2060 #define sub_unacked(device, n) _sub_unacked(device, n, __func__, __LINE__) argument
2061 static inline void _sub_unacked(struct drbd_device *device, int n, const char *func, int line) in _sub_unacked() argument
2063 atomic_sub(n, &device->unacked_cnt); in _sub_unacked()
2088 static inline void put_ldev(struct drbd_device *device) in put_ldev() argument
2090 enum drbd_disk_state disk_state = device->state.disk; in put_ldev()
2095 int i = atomic_dec_return(&device->local_cnt); in put_ldev()
2101 D_ASSERT(device, i >= 0); in put_ldev()
2105 drbd_device_post_work(device, DESTROY_DISK); in put_ldev()
2108 if (!test_and_set_bit(GOING_DISKLESS, &device->flags)) in put_ldev()
2109 drbd_device_post_work(device, GO_DISKLESS); in put_ldev()
2110 wake_up(&device->misc_wait); in put_ldev()
2115 static inline int _get_ldev_if_state(struct drbd_device *device, enum drbd_disk_state mins) in _get_ldev_if_state() argument
2120 if (device->state.disk == D_DISKLESS) in _get_ldev_if_state()
2123 atomic_inc(&device->local_cnt); in _get_ldev_if_state()
2124 io_allowed = (device->state.disk >= mins); in _get_ldev_if_state()
2126 put_ldev(device); in _get_ldev_if_state()
2130 extern int _get_ldev_if_state(struct drbd_device *device, enum drbd_disk_state mins);
2136 static inline int drbd_get_max_buffers(struct drbd_device *device) in drbd_get_max_buffers() argument
2142 nc = rcu_dereference(first_peer_device(device)->connection->net_conf); in drbd_get_max_buffers()
2149 static inline int drbd_state_is_stable(struct drbd_device *device) in drbd_state_is_stable() argument
2151 union drbd_dev_state s = device->state; in drbd_state_is_stable()
2185 if (first_peer_device(device)->connection->agreed_pro_version < 96) in drbd_state_is_stable()
2219 static inline int drbd_suspended(struct drbd_device *device) in drbd_suspended() argument
2221 struct drbd_resource *resource = device->resource; in drbd_suspended()
2226 static inline bool may_inc_ap_bio(struct drbd_device *device) in may_inc_ap_bio() argument
2228 int mxb = drbd_get_max_buffers(device); in may_inc_ap_bio()
2230 if (drbd_suspended(device)) in may_inc_ap_bio()
2232 if (test_bit(SUSPEND_IO, &device->flags)) in may_inc_ap_bio()
2240 if (!drbd_state_is_stable(device)) in may_inc_ap_bio()
2245 if (atomic_read(&device->ap_bio_cnt) > mxb) in may_inc_ap_bio()
2247 if (test_bit(BITMAP_IO, &device->flags)) in may_inc_ap_bio()
2252 static inline bool inc_ap_bio_cond(struct drbd_device *device) in inc_ap_bio_cond() argument
2256 spin_lock_irq(&device->resource->req_lock); in inc_ap_bio_cond()
2257 rv = may_inc_ap_bio(device); in inc_ap_bio_cond()
2259 atomic_inc(&device->ap_bio_cnt); in inc_ap_bio_cond()
2260 spin_unlock_irq(&device->resource->req_lock); in inc_ap_bio_cond()
2265 static inline void inc_ap_bio(struct drbd_device *device) in inc_ap_bio() argument
2275 wait_event(device->misc_wait, inc_ap_bio_cond(device)); in inc_ap_bio()
2278 static inline void dec_ap_bio(struct drbd_device *device) in dec_ap_bio() argument
2280 int mxb = drbd_get_max_buffers(device); in dec_ap_bio()
2281 int ap_bio = atomic_dec_return(&device->ap_bio_cnt); in dec_ap_bio()
2283 D_ASSERT(device, ap_bio >= 0); in dec_ap_bio()
2285 if (ap_bio == 0 && test_bit(BITMAP_IO, &device->flags)) { in dec_ap_bio()
2286 if (!test_and_set_bit(BITMAP_IO_QUEUED, &device->flags)) in dec_ap_bio()
2287 drbd_queue_work(&first_peer_device(device)-> in dec_ap_bio()
2289 &device->bm_io_work.w); in dec_ap_bio()
2296 wake_up(&device->misc_wait); in dec_ap_bio()
2299 static inline bool verify_can_do_stop_sector(struct drbd_device *device) in verify_can_do_stop_sector() argument
2301 return first_peer_device(device)->connection->agreed_pro_version >= 97 && in verify_can_do_stop_sector()
2302 first_peer_device(device)->connection->agreed_pro_version != 100; in verify_can_do_stop_sector()
2305 static inline int drbd_set_ed_uuid(struct drbd_device *device, u64 val) in drbd_set_ed_uuid() argument
2307 int changed = device->ed_uuid != val; in drbd_set_ed_uuid()
2308 device->ed_uuid = val; in drbd_set_ed_uuid()
2312 static inline int drbd_queue_order_type(struct drbd_device *device) in drbd_queue_order_type() argument