Lines Matching refs:device

69 void tl_abort_disk_io(struct drbd_device *device);
103 #define __drbd_printk_device(level, device, fmt, args...) \ argument
104 dev_printk(level, disk_to_dev((device)->vdisk), fmt, ## args)
106 dev_printk(level, disk_to_dev((peer_device)->device->vdisk), fmt, ## args)
147 #define dynamic_drbd_dbg(device, fmt, args...) \ argument
148 dynamic_dev_dbg(disk_to_dev(device->vdisk), fmt, ## args)
150 #define D_ASSERT(device, exp) do { \ argument
152 drbd_err(device, "ASSERT( " #exp " ) in %s:%d\n", __FILE__, __LINE__); \
163 drbd_err(device, "ASSERTION %s FAILED in %s\n", \
185 _drbd_insert_fault(struct drbd_device *device, unsigned int type);
188 drbd_insert_fault(struct drbd_device *device, unsigned int type) { in drbd_insert_fault() argument
192 _drbd_insert_fault(device, type); in drbd_insert_fault()
227 extern void INFO_bm_xfer_stats(struct drbd_device *device,
288 struct drbd_device *device; member
297 struct drbd_device *device; member
631 int (*io_fn)(struct drbd_device *device);
632 void (*done)(struct drbd_device *device, int rv);
812 struct drbd_device *device; member
977 struct drbd_device *device; member
1008 struct drbd_device *device; member
1018 static inline struct drbd_peer_device *first_peer_device(struct drbd_device *device) in first_peer_device() argument
1020 return list_first_entry_or_null(&device->peer_devices, struct drbd_peer_device, peer_devices); in first_peer_device()
1041 #define for_each_peer_device(peer_device, device) \ argument
1042 list_for_each_entry(peer_device, &device->peer_devices, peer_devices)
1044 #define for_each_peer_device_rcu(peer_device, device) \ argument
1045 list_for_each_entry_rcu(peer_device, &device->peer_devices, peer_devices)
1047 #define for_each_peer_device_safe(peer_device, tmp, device) \ argument
1048 list_for_each_entry_safe(peer_device, tmp, &device->peer_devices, peer_devices)
1050 static inline unsigned int device_to_minor(struct drbd_device *device) in device_to_minor() argument
1052 return device->minor; in device_to_minor()
1066 extern void drbd_init_set_defaults(struct drbd_device *device);
1113 extern int drbd_send_bitmap(struct drbd_device *device);
1117 extern void drbd_device_cleanup(struct drbd_device *device);
1118 void drbd_print_uuids(struct drbd_device *device, const char *text);
1121 extern void drbd_md_write(struct drbd_device *device, void *buffer);
1122 extern void drbd_md_sync(struct drbd_device *device);
1123 extern int drbd_md_read(struct drbd_device *device, struct drbd_backing_dev *bdev);
1124 extern void drbd_uuid_set(struct drbd_device *device, int idx, u64 val) __must_hold(local);
1125 extern void _drbd_uuid_set(struct drbd_device *device, int idx, u64 val) __must_hold(local);
1126 extern void drbd_uuid_new_current(struct drbd_device *device) __must_hold(local);
1127 extern void drbd_uuid_set_bm(struct drbd_device *device, u64 val) __must_hold(local);
1128 extern void drbd_uuid_move_history(struct drbd_device *device) __must_hold(local);
1129 extern void __drbd_uuid_set(struct drbd_device *device, int idx, u64 val) __must_hold(local);
1130 extern void drbd_md_set_flag(struct drbd_device *device, int flags) __must_hold(local);
1131 extern void drbd_md_clear_flag(struct drbd_device *device, int flags)__must_hold(local);
1133 extern void drbd_md_mark_dirty(struct drbd_device *device);
1134 extern void drbd_queue_bitmap_io(struct drbd_device *device,
1138 extern int drbd_bitmap_io(struct drbd_device *device,
1141 extern int drbd_bitmap_io_from_worker(struct drbd_device *device,
1144 extern int drbd_bmio_set_n_write(struct drbd_device *device) __must_hold(local);
1145 extern int drbd_bmio_clear_n_write(struct drbd_device *device) __must_hold(local);
1341 extern int drbd_bm_init(struct drbd_device *device);
1342 extern int drbd_bm_resize(struct drbd_device *device, sector_t sectors, int set_new_bits);
1343 extern void drbd_bm_cleanup(struct drbd_device *device);
1344 extern void drbd_bm_set_all(struct drbd_device *device);
1345 extern void drbd_bm_clear_all(struct drbd_device *device);
1348 struct drbd_device *device, unsigned long s, unsigned long e);
1350 struct drbd_device *device, unsigned long s, unsigned long e);
1352 struct drbd_device *device, const unsigned long s, const unsigned long e);
1355 extern void _drbd_bm_set_bits(struct drbd_device *device,
1357 extern int drbd_bm_test_bit(struct drbd_device *device, unsigned long bitnr);
1358 extern int drbd_bm_e_weight(struct drbd_device *device, unsigned long enr);
1359 extern int drbd_bm_read(struct drbd_device *device) __must_hold(local);
1360 extern void drbd_bm_mark_for_writeout(struct drbd_device *device, int page_nr);
1361 extern int drbd_bm_write(struct drbd_device *device) __must_hold(local);
1362 extern int drbd_bm_write_hinted(struct drbd_device *device) __must_hold(local);
1363 extern int drbd_bm_write_lazy(struct drbd_device *device, unsigned upper_idx) __must_hold(local);
1364 extern int drbd_bm_write_all(struct drbd_device *device) __must_hold(local);
1365 extern int drbd_bm_write_copy_pages(struct drbd_device *device) __must_hold(local);
1366 extern size_t drbd_bm_words(struct drbd_device *device);
1367 extern unsigned long drbd_bm_bits(struct drbd_device *device);
1368 extern sector_t drbd_bm_capacity(struct drbd_device *device);
1371 extern unsigned long drbd_bm_find_next(struct drbd_device *device, unsigned long bm_fo);
1373 extern unsigned long _drbd_bm_find_next(struct drbd_device *device, unsigned long bm_fo);
1374 extern unsigned long _drbd_bm_find_next_zero(struct drbd_device *device, unsigned long bm_fo);
1375 extern unsigned long _drbd_bm_total_weight(struct drbd_device *device);
1376 extern unsigned long drbd_bm_total_weight(struct drbd_device *device);
1378 extern void drbd_bm_merge_lel(struct drbd_device *device, size_t offset,
1381 extern void drbd_bm_get_lel(struct drbd_device *device, size_t offset,
1384 extern void drbd_bm_lock(struct drbd_device *device, char *why, enum bm_flag flags);
1385 extern void drbd_bm_unlock(struct drbd_device *device);
1432 extern void drbd_delete_device(struct drbd_device *device);
1452 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()
1611 if (drbd_insert_fault(device, fault_type)) in drbd_generic_make_request()
1627 extern bool drbd_al_begin_io_prepare(struct drbd_device *device, struct drbd_interval *i);
1628 extern int drbd_al_begin_io_nonblock(struct drbd_device *device, struct drbd_interval *i);
1629 extern void drbd_al_begin_io_commit(struct drbd_device *device);
1630 extern bool drbd_al_begin_io_fastpath(struct drbd_device *device, struct drbd_interval *i);
1631 extern void drbd_al_begin_io(struct drbd_device *device, struct drbd_interval *i);
1632 extern void drbd_al_complete_io(struct drbd_device *device, struct drbd_interval *i);
1633 extern void drbd_rs_complete_io(struct drbd_device *device, sector_t sector);
1634 extern int drbd_rs_begin_io(struct drbd_device *device, sector_t sector);
1635 extern int drbd_try_rs_begin_io(struct drbd_device *device, sector_t sector);
1636 extern void drbd_rs_cancel_all(struct drbd_device *device);
1637 extern int drbd_rs_del_all(struct drbd_device *device);
1638 extern void drbd_rs_failed_io(struct drbd_device *device,
1640 extern void drbd_advance_rs_marks(struct drbd_device *device, unsigned long still_to_go);
1643 extern int __drbd_change_sync(struct drbd_device *device, sector_t sector, int size,
1645 #define drbd_set_in_sync(device, sector, size) \ argument
1646 __drbd_change_sync(device, sector, size, SET_IN_SYNC)
1647 #define drbd_set_out_of_sync(device, sector, size) \ argument
1648 __drbd_change_sync(device, sector, size, SET_OUT_OF_SYNC)
1649 #define drbd_rs_failed_io(device, sector, size) \ argument
1650 __drbd_change_sync(device, sector, size, RECORD_RS_FAILED)
1651 extern void drbd_al_shrink(struct drbd_device *device);
1669 void drbd_bcast_event(struct drbd_device *device, const struct sib_info *sib);
1698 _drbd_set_state(struct drbd_device *device, union drbd_state ns, in _drbd_set_state() argument
1704 rv = __drbd_set_state(device, ns, flags, done); in _drbd_set_state()
1710 static inline union drbd_state drbd_read_state(struct drbd_device *device) in drbd_read_state() argument
1712 struct drbd_resource *resource = device->resource; in drbd_read_state()
1715 rv.i = device->state.i; in drbd_read_state()
1731 static inline void __drbd_chk_io_error_(struct drbd_device *device, in __drbd_chk_io_error_() argument
1738 ep = rcu_dereference(device->ldev->disk_conf)->on_io_error; in __drbd_chk_io_error_()
1744 drbd_err(device, "Local IO failed in %s.\n", where); in __drbd_chk_io_error_()
1745 if (device->state.disk > D_INCONSISTENT) in __drbd_chk_io_error_()
1746 _drbd_set_state(_NS(device, disk, D_INCONSISTENT), CS_HARD, NULL); in __drbd_chk_io_error_()
1772 set_bit(WAS_IO_ERROR, &device->flags); in __drbd_chk_io_error_()
1774 set_bit(WAS_READ_ERROR, &device->flags); in __drbd_chk_io_error_()
1776 set_bit(FORCE_DETACH, &device->flags); in __drbd_chk_io_error_()
1777 if (device->state.disk > D_FAILED) { in __drbd_chk_io_error_()
1778 _drbd_set_state(_NS(device, disk, D_FAILED), CS_HARD, NULL); in __drbd_chk_io_error_()
1779 drbd_err(device, in __drbd_chk_io_error_()
1795 static inline void drbd_chk_io_error_(struct drbd_device *device, in drbd_chk_io_error_() argument
1800 spin_lock_irqsave(&device->resource->req_lock, flags); in drbd_chk_io_error_()
1801 __drbd_chk_io_error_(device, forcedetach, where); in drbd_chk_io_error_()
1802 spin_unlock_irqrestore(&device->resource->req_lock, flags); in drbd_chk_io_error_()
1927 drbd_device_post_work(struct drbd_device *device, int work_bit) in drbd_device_post_work() argument
1929 if (!test_and_set_bit(work_bit, &device->flags)) { in drbd_device_post_work()
1931 first_peer_device(device)->connection; in drbd_device_post_work()
2003 static inline void inc_ap_pending(struct drbd_device *device) in inc_ap_pending() argument
2005 atomic_inc(&device->ap_pending_cnt); in inc_ap_pending()
2009 if (atomic_read(&device->which) < 0) \
2010 drbd_err(device, "in %s:%d: " #which " = %d < 0 !\n", \
2012 atomic_read(&device->which))
2014 #define dec_ap_pending(device) _dec_ap_pending(device, __func__, __LINE__) argument
2015 static inline void _dec_ap_pending(struct drbd_device *device, const char *func, int line) in _dec_ap_pending() argument
2017 if (atomic_dec_and_test(&device->ap_pending_cnt)) in _dec_ap_pending()
2018 wake_up(&device->misc_wait); in _dec_ap_pending()
2028 static inline void inc_rs_pending(struct drbd_device *device) in inc_rs_pending() argument
2030 atomic_inc(&device->rs_pending_cnt); in inc_rs_pending()
2033 #define dec_rs_pending(device) _dec_rs_pending(device, __func__, __LINE__) argument
2034 static inline void _dec_rs_pending(struct drbd_device *device, const char *func, int line) in _dec_rs_pending() argument
2036 atomic_dec(&device->rs_pending_cnt); in _dec_rs_pending()
2049 static inline void inc_unacked(struct drbd_device *device) in inc_unacked() argument
2051 atomic_inc(&device->unacked_cnt); in inc_unacked()
2054 #define dec_unacked(device) _dec_unacked(device, __func__, __LINE__) argument
2055 static inline void _dec_unacked(struct drbd_device *device, const char *func, int line) in _dec_unacked() argument
2057 atomic_dec(&device->unacked_cnt); in _dec_unacked()
2061 #define sub_unacked(device, n) _sub_unacked(device, n, __func__, __LINE__) argument
2062 static inline void _sub_unacked(struct drbd_device *device, int n, const char *func, int line) in _sub_unacked() argument
2064 atomic_sub(n, &device->unacked_cnt); in _sub_unacked()
2089 static inline void put_ldev(struct drbd_device *device) in put_ldev() argument
2091 enum drbd_disk_state disk_state = device->state.disk; in put_ldev()
2096 int i = atomic_dec_return(&device->local_cnt); in put_ldev()
2102 D_ASSERT(device, i >= 0); in put_ldev()
2106 drbd_device_post_work(device, DESTROY_DISK); in put_ldev()
2109 if (!test_and_set_bit(GOING_DISKLESS, &device->flags)) in put_ldev()
2110 drbd_device_post_work(device, GO_DISKLESS); in put_ldev()
2111 wake_up(&device->misc_wait); in put_ldev()
2116 static inline int _get_ldev_if_state(struct drbd_device *device, enum drbd_disk_state mins) in _get_ldev_if_state() argument
2121 if (device->state.disk == D_DISKLESS) in _get_ldev_if_state()
2124 atomic_inc(&device->local_cnt); in _get_ldev_if_state()
2125 io_allowed = (device->state.disk >= mins); in _get_ldev_if_state()
2127 put_ldev(device); in _get_ldev_if_state()
2131 extern int _get_ldev_if_state(struct drbd_device *device, enum drbd_disk_state mins);
2137 static inline int drbd_get_max_buffers(struct drbd_device *device) in drbd_get_max_buffers() argument
2143 nc = rcu_dereference(first_peer_device(device)->connection->net_conf); in drbd_get_max_buffers()
2150 static inline int drbd_state_is_stable(struct drbd_device *device) in drbd_state_is_stable() argument
2152 union drbd_dev_state s = device->state; in drbd_state_is_stable()
2186 if (first_peer_device(device)->connection->agreed_pro_version < 96) in drbd_state_is_stable()
2220 static inline int drbd_suspended(struct drbd_device *device) in drbd_suspended() argument
2222 struct drbd_resource *resource = device->resource; in drbd_suspended()
2227 static inline bool may_inc_ap_bio(struct drbd_device *device) in may_inc_ap_bio() argument
2229 int mxb = drbd_get_max_buffers(device); in may_inc_ap_bio()
2231 if (drbd_suspended(device)) in may_inc_ap_bio()
2233 if (test_bit(SUSPEND_IO, &device->flags)) in may_inc_ap_bio()
2241 if (!drbd_state_is_stable(device)) in may_inc_ap_bio()
2246 if (atomic_read(&device->ap_bio_cnt) > mxb) in may_inc_ap_bio()
2248 if (test_bit(BITMAP_IO, &device->flags)) in may_inc_ap_bio()
2253 static inline bool inc_ap_bio_cond(struct drbd_device *device) in inc_ap_bio_cond() argument
2257 spin_lock_irq(&device->resource->req_lock); in inc_ap_bio_cond()
2258 rv = may_inc_ap_bio(device); in inc_ap_bio_cond()
2260 atomic_inc(&device->ap_bio_cnt); in inc_ap_bio_cond()
2261 spin_unlock_irq(&device->resource->req_lock); in inc_ap_bio_cond()
2266 static inline void inc_ap_bio(struct drbd_device *device) in inc_ap_bio() argument
2276 wait_event(device->misc_wait, inc_ap_bio_cond(device)); in inc_ap_bio()
2279 static inline void dec_ap_bio(struct drbd_device *device) in dec_ap_bio() argument
2281 int mxb = drbd_get_max_buffers(device); in dec_ap_bio()
2282 int ap_bio = atomic_dec_return(&device->ap_bio_cnt); in dec_ap_bio()
2284 D_ASSERT(device, ap_bio >= 0); in dec_ap_bio()
2286 if (ap_bio == 0 && test_bit(BITMAP_IO, &device->flags)) { in dec_ap_bio()
2287 if (!test_and_set_bit(BITMAP_IO_QUEUED, &device->flags)) in dec_ap_bio()
2288 drbd_queue_work(&first_peer_device(device)-> in dec_ap_bio()
2290 &device->bm_io_work.w); in dec_ap_bio()
2297 wake_up(&device->misc_wait); in dec_ap_bio()
2300 static inline bool verify_can_do_stop_sector(struct drbd_device *device) in verify_can_do_stop_sector() argument
2302 return first_peer_device(device)->connection->agreed_pro_version >= 97 && in verify_can_do_stop_sector()
2303 first_peer_device(device)->connection->agreed_pro_version != 100; in verify_can_do_stop_sector()
2306 static inline int drbd_set_ed_uuid(struct drbd_device *device, u64 val) in drbd_set_ed_uuid() argument
2308 int changed = device->ed_uuid != val; in drbd_set_ed_uuid()
2309 device->ed_uuid = val; in drbd_set_ed_uuid()
2313 static inline int drbd_queue_order_type(struct drbd_device *device) in drbd_queue_order_type() argument