Lines Matching refs:ldev

52 	struct dibs_lo_dev *ldev;  in dibs_lo_register_dmb()  local
57 ldev = dibs->drv_priv; in dibs_lo_register_dmb()
60 for_each_clear_bit(sba_idx, ldev->sba_idx_mask, DIBS_LO_MAX_DMBS) { in dibs_lo_register_dmb()
61 if (!test_and_set_bit(sba_idx, ldev->sba_idx_mask)) in dibs_lo_register_dmb()
91 write_lock_bh(&ldev->dmb_ht_lock); in dibs_lo_register_dmb()
92 hash_for_each_possible(ldev->dmb_ht, tmp_node, list, dmb_node->token) { in dibs_lo_register_dmb()
94 write_unlock_bh(&ldev->dmb_ht_lock); in dibs_lo_register_dmb()
98 hash_add(ldev->dmb_ht, &dmb_node->list, dmb_node->token); in dibs_lo_register_dmb()
99 write_unlock_bh(&ldev->dmb_ht_lock); in dibs_lo_register_dmb()
100 atomic_inc(&ldev->dmb_cnt); in dibs_lo_register_dmb()
117 clear_bit(sba_idx, ldev->sba_idx_mask); in dibs_lo_register_dmb()
121 static void __dibs_lo_unregister_dmb(struct dibs_lo_dev *ldev, in __dibs_lo_unregister_dmb() argument
125 write_lock_bh(&ldev->dmb_ht_lock); in __dibs_lo_unregister_dmb()
127 write_unlock_bh(&ldev->dmb_ht_lock); in __dibs_lo_unregister_dmb()
129 clear_bit(dmb_node->sba_idx, ldev->sba_idx_mask); in __dibs_lo_unregister_dmb()
133 if (atomic_dec_and_test(&ldev->dmb_cnt)) in __dibs_lo_unregister_dmb()
134 wake_up(&ldev->ldev_release); in __dibs_lo_unregister_dmb()
140 struct dibs_lo_dev *ldev; in dibs_lo_unregister_dmb() local
143 ldev = dibs->drv_priv; in dibs_lo_unregister_dmb()
146 read_lock_bh(&ldev->dmb_ht_lock); in dibs_lo_unregister_dmb()
147 hash_for_each_possible(ldev->dmb_ht, tmp_node, list, dmb->dmb_tok) { in dibs_lo_unregister_dmb()
153 read_unlock_bh(&ldev->dmb_ht_lock); in dibs_lo_unregister_dmb()
162 __dibs_lo_unregister_dmb(ldev, dmb_node); in dibs_lo_unregister_dmb()
175 struct dibs_lo_dev *ldev; in dibs_lo_attach_dmb() local
177 ldev = dibs->drv_priv; in dibs_lo_attach_dmb()
180 read_lock_bh(&ldev->dmb_ht_lock); in dibs_lo_attach_dmb()
181 hash_for_each_possible(ldev->dmb_ht, tmp_node, list, dmb->dmb_tok) { in dibs_lo_attach_dmb()
188 read_unlock_bh(&ldev->dmb_ht_lock); in dibs_lo_attach_dmb()
191 read_unlock_bh(&ldev->dmb_ht_lock); in dibs_lo_attach_dmb()
211 struct dibs_lo_dev *ldev; in dibs_lo_detach_dmb() local
213 ldev = dibs->drv_priv; in dibs_lo_detach_dmb()
216 read_lock_bh(&ldev->dmb_ht_lock); in dibs_lo_detach_dmb()
217 hash_for_each_possible(ldev->dmb_ht, tmp_node, list, token) { in dibs_lo_detach_dmb()
224 read_unlock_bh(&ldev->dmb_ht_lock); in dibs_lo_detach_dmb()
227 read_unlock_bh(&ldev->dmb_ht_lock); in dibs_lo_detach_dmb()
230 __dibs_lo_unregister_dmb(ldev, dmb_node); in dibs_lo_detach_dmb()
239 struct dibs_lo_dev *ldev; in dibs_lo_move_data() local
244 ldev = dibs->drv_priv; in dibs_lo_move_data()
246 read_lock_bh(&ldev->dmb_ht_lock); in dibs_lo_move_data()
247 hash_for_each_possible(ldev->dmb_ht, tmp_node, list, dmb_tok) { in dibs_lo_move_data()
254 read_unlock_bh(&ldev->dmb_ht_lock); in dibs_lo_move_data()
259 read_unlock_bh(&ldev->dmb_ht_lock); in dibs_lo_move_data()
286 static void dibs_lo_dev_init(struct dibs_lo_dev *ldev) in dibs_lo_dev_init() argument
288 rwlock_init(&ldev->dmb_ht_lock); in dibs_lo_dev_init()
289 hash_init(ldev->dmb_ht); in dibs_lo_dev_init()
290 atomic_set(&ldev->dmb_cnt, 0); in dibs_lo_dev_init()
291 init_waitqueue_head(&ldev->ldev_release); in dibs_lo_dev_init()
294 static void dibs_lo_dev_exit(struct dibs_lo_dev *ldev) in dibs_lo_dev_exit() argument
296 if (atomic_read(&ldev->dmb_cnt)) in dibs_lo_dev_exit()
297 wait_event(ldev->ldev_release, !atomic_read(&ldev->dmb_cnt)); in dibs_lo_dev_exit()
302 struct dibs_lo_dev *ldev; in dibs_lo_dev_probe() local
306 ldev = kzalloc_obj(*ldev); in dibs_lo_dev_probe()
307 if (!ldev) in dibs_lo_dev_probe()
312 kfree(ldev); in dibs_lo_dev_probe()
316 ldev->dibs = dibs; in dibs_lo_dev_probe()
317 dibs->drv_priv = ldev; in dibs_lo_dev_probe()
318 dibs_lo_dev_init(ldev); in dibs_lo_dev_probe()
328 lo_dev = ldev; in dibs_lo_dev_probe()
335 kfree(ldev); in dibs_lo_dev_probe()