Lines Matching refs:peer_device
224 struct drbd_peer_device *peer_device; in tl_release() local
227 peer_device = conn_peer_device(connection, req->device->vnr); in tl_release()
228 _req_mod(req, BARRIER_ACKED, peer_device); in tl_release()
251 struct drbd_peer_device *peer_device; in _tl_restart() local
255 peer_device = conn_peer_device(connection, req->device->vnr); in _tl_restart()
256 _req_mod(req, what, peer_device); in _tl_restart()
603 void *drbd_prepare_command(struct drbd_peer_device *peer_device, struct drbd_socket *sock) in drbd_prepare_command() argument
605 return conn_prepare_command(peer_device->connection, sock); in drbd_prepare_command()
657 int drbd_send_command(struct drbd_peer_device *peer_device, struct drbd_socket *sock, in drbd_send_command() argument
663 err = __send_command(peer_device->connection, peer_device->device->vnr, in drbd_send_command()
689 int drbd_send_sync_param(struct drbd_peer_device *peer_device) in drbd_send_sync_param() argument
694 const int apv = peer_device->connection->agreed_pro_version; in drbd_send_sync_param()
699 sock = &peer_device->connection->data; in drbd_send_sync_param()
700 p = drbd_prepare_command(peer_device, sock); in drbd_send_sync_param()
705 nc = rcu_dereference(peer_device->connection->net_conf); in drbd_send_sync_param()
719 if (get_ldev(peer_device->device)) { in drbd_send_sync_param()
720 dc = rcu_dereference(peer_device->device->ldev->disk_conf); in drbd_send_sync_param()
726 put_ldev(peer_device->device); in drbd_send_sync_param()
741 return drbd_send_command(peer_device, sock, cmd, size, NULL, 0); in drbd_send_sync_param()
802 static int _drbd_send_uuids(struct drbd_peer_device *peer_device, u64 uuid_flags) in _drbd_send_uuids() argument
804 struct drbd_device *device = peer_device->device; in _drbd_send_uuids()
812 sock = &peer_device->connection->data; in _drbd_send_uuids()
813 p = drbd_prepare_command(peer_device, sock); in _drbd_send_uuids()
826 uuid_flags |= rcu_dereference(peer_device->connection->net_conf)->discard_my_data ? 1 : 0; in _drbd_send_uuids()
833 return drbd_send_command(peer_device, sock, P_UUIDS, sizeof(*p), NULL, 0); in _drbd_send_uuids()
836 int drbd_send_uuids(struct drbd_peer_device *peer_device) in drbd_send_uuids() argument
838 return _drbd_send_uuids(peer_device, 0); in drbd_send_uuids()
841 int drbd_send_uuids_skip_initial_sync(struct drbd_peer_device *peer_device) in drbd_send_uuids_skip_initial_sync() argument
843 return _drbd_send_uuids(peer_device, 8); in drbd_send_uuids_skip_initial_sync()
864 void drbd_gen_and_send_sync_uuid(struct drbd_peer_device *peer_device) in drbd_gen_and_send_sync_uuid() argument
866 struct drbd_device *device = peer_device->device; in drbd_gen_and_send_sync_uuid()
882 sock = &peer_device->connection->data; in drbd_gen_and_send_sync_uuid()
883 p = drbd_prepare_command(peer_device, sock); in drbd_gen_and_send_sync_uuid()
886 drbd_send_command(peer_device, sock, P_SYNC_UUID, sizeof(*p), NULL, 0); in drbd_gen_and_send_sync_uuid()
890 int drbd_send_sizes(struct drbd_peer_device *peer_device, int trigger_reply, enum dds_flags flags) in drbd_send_sizes() argument
892 struct drbd_device *device = peer_device->device; in drbd_send_sizes()
900 sock = &peer_device->connection->data; in drbd_send_sizes()
901 p = drbd_prepare_command(peer_device, sock); in drbd_send_sizes()
906 if (peer_device->connection->agreed_features & DRBD_FF_WSAME) in drbd_send_sizes()
949 if (peer_device->connection->agreed_pro_version <= 94) in drbd_send_sizes()
951 else if (peer_device->connection->agreed_pro_version < 100) in drbd_send_sizes()
964 return drbd_send_command(peer_device, sock, P_SIZES, packet_size, NULL, 0); in drbd_send_sizes()
971 int drbd_send_current_state(struct drbd_peer_device *peer_device) in drbd_send_current_state() argument
976 sock = &peer_device->connection->data; in drbd_send_current_state()
977 p = drbd_prepare_command(peer_device, sock); in drbd_send_current_state()
980 p->state = cpu_to_be32(peer_device->device->state.i); /* Within the send mutex */ in drbd_send_current_state()
981 return drbd_send_command(peer_device, sock, P_STATE, sizeof(*p), NULL, 0); in drbd_send_current_state()
994 int drbd_send_state(struct drbd_peer_device *peer_device, union drbd_state state) in drbd_send_state() argument
999 sock = &peer_device->connection->data; in drbd_send_state()
1000 p = drbd_prepare_command(peer_device, sock); in drbd_send_state()
1004 return drbd_send_command(peer_device, sock, P_STATE, sizeof(*p), NULL, 0); in drbd_send_state()
1007 int drbd_send_state_req(struct drbd_peer_device *peer_device, union drbd_state mask, union drbd_sta… in drbd_send_state_req() argument
1012 sock = &peer_device->connection->data; in drbd_send_state_req()
1013 p = drbd_prepare_command(peer_device, sock); in drbd_send_state_req()
1018 return drbd_send_command(peer_device, sock, P_STATE_CHG_REQ, sizeof(*p), NULL, 0); in drbd_send_state_req()
1037 void drbd_send_sr_reply(struct drbd_peer_device *peer_device, enum drbd_state_rv retcode) in drbd_send_sr_reply() argument
1042 sock = &peer_device->connection->meta; in drbd_send_sr_reply()
1043 p = drbd_prepare_command(peer_device, sock); in drbd_send_sr_reply()
1046 drbd_send_command(peer_device, sock, P_STATE_CHG_REPLY, sizeof(*p), NULL, 0); in drbd_send_sr_reply()
1185 send_bitmap_rle_or_plain(struct drbd_peer_device *peer_device, struct bm_xfer_ctx *c) in send_bitmap_rle_or_plain() argument
1187 struct drbd_device *device = peer_device->device; in send_bitmap_rle_or_plain()
1188 struct drbd_socket *sock = &peer_device->connection->data; in send_bitmap_rle_or_plain()
1189 unsigned int header_size = drbd_header_size(peer_device->connection); in send_bitmap_rle_or_plain()
1200 err = __send_command(peer_device->connection, device->vnr, sock, in send_bitmap_rle_or_plain()
1221 err = __send_command(peer_device->connection, device->vnr, sock, P_BITMAP, in send_bitmap_rle_or_plain()
1234 INFO_bm_xfer_stats(peer_device, "send", c); in send_bitmap_rle_or_plain()
1244 struct drbd_peer_device *peer_device) in _drbd_send_bitmap() argument
1256 if (drbd_bm_write(device, peer_device)) { in _drbd_send_bitmap()
1275 err = send_bitmap_rle_or_plain(peer_device, &c); in _drbd_send_bitmap()
1281 int drbd_send_bitmap(struct drbd_device *device, struct drbd_peer_device *peer_device) in drbd_send_bitmap() argument
1283 struct drbd_socket *sock = &peer_device->connection->data; in drbd_send_bitmap()
1288 err = !_drbd_send_bitmap(device, peer_device); in drbd_send_bitmap()
1318 static int _drbd_send_ack(struct drbd_peer_device *peer_device, enum drbd_packet cmd, in _drbd_send_ack() argument
1324 if (peer_device->device->state.conn < C_CONNECTED) in _drbd_send_ack()
1327 sock = &peer_device->connection->meta; in _drbd_send_ack()
1328 p = drbd_prepare_command(peer_device, sock); in _drbd_send_ack()
1334 p->seq_num = cpu_to_be32(atomic_inc_return(&peer_device->device->packet_seq)); in _drbd_send_ack()
1335 return drbd_send_command(peer_device, sock, cmd, sizeof(*p), NULL, 0); in _drbd_send_ack()
1341 void drbd_send_ack_dp(struct drbd_peer_device *peer_device, enum drbd_packet cmd, in drbd_send_ack_dp() argument
1344 if (peer_device->connection->peer_integrity_tfm) in drbd_send_ack_dp()
1345 data_size -= crypto_shash_digestsize(peer_device->connection->peer_integrity_tfm); in drbd_send_ack_dp()
1346 _drbd_send_ack(peer_device, cmd, dp->sector, cpu_to_be32(data_size), in drbd_send_ack_dp()
1350 void drbd_send_ack_rp(struct drbd_peer_device *peer_device, enum drbd_packet cmd, in drbd_send_ack_rp() argument
1353 _drbd_send_ack(peer_device, cmd, rp->sector, rp->blksize, rp->block_id); in drbd_send_ack_rp()
1362 int drbd_send_ack(struct drbd_peer_device *peer_device, enum drbd_packet cmd, in drbd_send_ack() argument
1365 return _drbd_send_ack(peer_device, cmd, in drbd_send_ack()
1373 int drbd_send_ack_ex(struct drbd_peer_device *peer_device, enum drbd_packet cmd, in drbd_send_ack_ex() argument
1376 return _drbd_send_ack(peer_device, cmd, in drbd_send_ack_ex()
1382 int drbd_send_rs_deallocated(struct drbd_peer_device *peer_device, in drbd_send_rs_deallocated() argument
1388 sock = &peer_device->connection->data; in drbd_send_rs_deallocated()
1389 p = drbd_prepare_command(peer_device, sock); in drbd_send_rs_deallocated()
1395 return drbd_send_command(peer_device, sock, P_RS_DEALLOCATED, sizeof(*p), NULL, 0); in drbd_send_rs_deallocated()
1398 int drbd_send_drequest(struct drbd_peer_device *peer_device, int cmd, in drbd_send_drequest() argument
1404 sock = &peer_device->connection->data; in drbd_send_drequest()
1405 p = drbd_prepare_command(peer_device, sock); in drbd_send_drequest()
1411 return drbd_send_command(peer_device, sock, cmd, sizeof(*p), NULL, 0); in drbd_send_drequest()
1414 int drbd_send_drequest_csum(struct drbd_peer_device *peer_device, sector_t sector, int size, in drbd_send_drequest_csum() argument
1422 sock = &peer_device->connection->data; in drbd_send_drequest_csum()
1423 p = drbd_prepare_command(peer_device, sock); in drbd_send_drequest_csum()
1429 return drbd_send_command(peer_device, sock, cmd, sizeof(*p), digest, digest_size); in drbd_send_drequest_csum()
1432 int drbd_send_ov_request(struct drbd_peer_device *peer_device, sector_t sector, int size) in drbd_send_ov_request() argument
1437 sock = &peer_device->connection->data; in drbd_send_ov_request()
1438 p = drbd_prepare_command(peer_device, sock); in drbd_send_ov_request()
1444 return drbd_send_command(peer_device, sock, P_OV_REQUEST, sizeof(*p), NULL, 0); in drbd_send_ov_request()
1502 static int _drbd_no_send_page(struct drbd_peer_device *peer_device, struct page *page, in _drbd_no_send_page() argument
1509 socket = peer_device->connection->data.socket; in _drbd_no_send_page()
1511 err = drbd_send_all(peer_device->connection, socket, addr, size, msg_flags); in _drbd_no_send_page()
1514 peer_device->device->send_cnt += size >> 9; in _drbd_no_send_page()
1518 static int _drbd_send_page(struct drbd_peer_device *peer_device, struct page *page, in _drbd_send_page() argument
1521 struct socket *socket = peer_device->connection->data.socket; in _drbd_send_page()
1536 drbd_update_congested(peer_device->connection); in _drbd_send_page()
1546 if (we_should_drop_the_connection(peer_device->connection, socket)) in _drbd_send_page()
1550 drbd_warn(peer_device->device, "%s: size=%d len=%d sent=%d\n", in _drbd_send_page()
1559 clear_bit(NET_CONGESTED, &peer_device->connection->flags); in _drbd_send_page()
1563 peer_device->device->send_cnt += size >> 9; in _drbd_send_page()
1568 static int _drbd_send_bio(struct drbd_peer_device *peer_device, struct bio *bio) in _drbd_send_bio() argument
1577 err = _drbd_no_send_page(peer_device, bvec.bv_page, in _drbd_send_bio()
1587 static int _drbd_send_zc_bio(struct drbd_peer_device *peer_device, struct bio *bio) in _drbd_send_zc_bio() argument
1596 err = _drbd_send_page(peer_device, bvec.bv_page, in _drbd_send_zc_bio()
1605 static int _drbd_send_zc_ee(struct drbd_peer_device *peer_device, in _drbd_send_zc_ee() argument
1618 err = _drbd_send_page(peer_device, page, 0, l, in _drbd_send_zc_ee()
1621 err = _drbd_no_send_page(peer_device, page, 0, l, in _drbd_send_zc_ee()
1651 int drbd_send_dblock(struct drbd_peer_device *peer_device, struct drbd_request *req) in drbd_send_dblock() argument
1653 struct drbd_device *device = peer_device->device; in drbd_send_dblock()
1661 sock = &peer_device->connection->data; in drbd_send_dblock()
1662 p = drbd_prepare_command(peer_device, sock); in drbd_send_dblock()
1663 digest_size = peer_device->connection->integrity_tfm ? in drbd_send_dblock()
1664 crypto_shash_digestsize(peer_device->connection->integrity_tfm) : 0; in drbd_send_dblock()
1671 dp_flags = bio_flags_to_wire(peer_device->connection, req->master_bio); in drbd_send_dblock()
1675 if (peer_device->connection->agreed_pro_version >= 100) { in drbd_send_dblock()
1690 err = __send_command(peer_device->connection, device->vnr, sock, cmd, sizeof(*t), NULL, 0); in drbd_send_dblock()
1698 drbd_csum_bio(peer_device->connection->integrity_tfm, req->master_bio, digest_out); in drbd_send_dblock()
1699 err = __send_command(peer_device->connection, device->vnr, sock, P_DATA, in drbd_send_dblock()
1714 err = _drbd_send_bio(peer_device, req->master_bio); in drbd_send_dblock()
1716 err = _drbd_send_zc_bio(peer_device, req->master_bio); in drbd_send_dblock()
1723 drbd_csum_bio(peer_device->connection->integrity_tfm, req->master_bio, digest); in drbd_send_dblock()
1743 int drbd_send_block(struct drbd_peer_device *peer_device, enum drbd_packet cmd, in drbd_send_block() argument
1746 struct drbd_device *device = peer_device->device; in drbd_send_block()
1752 sock = &peer_device->connection->data; in drbd_send_block()
1753 p = drbd_prepare_command(peer_device, sock); in drbd_send_block()
1755 digest_size = peer_device->connection->integrity_tfm ? in drbd_send_block()
1756 crypto_shash_digestsize(peer_device->connection->integrity_tfm) : 0; in drbd_send_block()
1765 drbd_csum_ee(peer_device->connection->integrity_tfm, peer_req, p + 1); in drbd_send_block()
1766 …err = __send_command(peer_device->connection, device->vnr, sock, cmd, sizeof(*p) + digest_size, NU… in drbd_send_block()
1768 err = _drbd_send_zc_ee(peer_device, peer_req); in drbd_send_block()
1774 int drbd_send_out_of_sync(struct drbd_peer_device *peer_device, struct drbd_request *req) in drbd_send_out_of_sync() argument
1779 sock = &peer_device->connection->data; in drbd_send_out_of_sync()
1780 p = drbd_prepare_command(peer_device, sock); in drbd_send_out_of_sync()
1785 return drbd_send_command(peer_device, sock, P_OUT_OF_SYNC, sizeof(*p), NULL, 0); in drbd_send_out_of_sync()
2163 struct drbd_peer_device *peer_device, *tmp_peer_device; in drbd_destroy_device() local
2194 for_each_peer_device_safe(peer_device, tmp_peer_device, device) { in drbd_destroy_device()
2195 kref_put(&peer_device->connection->kref, drbd_destroy_connection); in drbd_destroy_device()
2196 kfree(peer_device); in drbd_destroy_device()
2654 struct drbd_peer_device *peer_device, *tmp_peer_device; in drbd_create_device() local
2732 peer_device = kzalloc_obj(struct drbd_peer_device); in drbd_create_device()
2733 if (!peer_device) in drbd_create_device()
2735 peer_device->connection = connection; in drbd_create_device()
2736 peer_device->device = device; in drbd_create_device()
2738 list_add(&peer_device->peer_devices, &device->peer_devices); in drbd_create_device()
2741 id = idr_alloc(&connection->peer_devices, peer_device, vnr, vnr + 1, GFP_KERNEL); in drbd_create_device()
2748 INIT_WORK(&peer_device->send_acks_work, drbd_send_acks_wf); in drbd_create_device()
2763 for_each_peer_device(peer_device, device) in drbd_create_device()
2764 drbd_connected(peer_device); in drbd_create_device()
2767 for_each_peer_device(peer_device, device) in drbd_create_device()
2768 drbd_debugfs_peer_device_add(peer_device); in drbd_create_device()
2776 peer_device = idr_remove(&connection->peer_devices, vnr); in drbd_create_device()
2777 if (peer_device) in drbd_create_device()
2780 for_each_peer_device_safe(peer_device, tmp_peer_device, device) { in drbd_create_device()
2781 list_del(&peer_device->peer_devices); in drbd_create_device()
2782 kfree(peer_device); in drbd_create_device()
2804 struct drbd_peer_device *peer_device; in drbd_delete_device() local
2807 for_each_peer_device(peer_device, device) in drbd_delete_device()
2808 drbd_debugfs_peer_device_cleanup(peer_device); in drbd_delete_device()
2920 struct drbd_peer_device *peer_device; in conn_md_sync() local
2924 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) { in conn_md_sync()
2925 struct drbd_device *device = peer_device->device; in conn_md_sync()
3390 struct drbd_peer_device *peer_device) __must_hold(local) in drbd_bmio_set_n_write() argument
3399 rv = drbd_bm_write(device, peer_device); in drbd_bmio_set_n_write()
3417 struct drbd_peer_device *peer_device) __must_hold(local) in drbd_bmio_clear_n_write() argument
3422 return drbd_bm_write(device, peer_device); in drbd_bmio_clear_n_write()
3441 rv = work->io_fn(device, work->peer_device); in w_bitmap_io()
3480 struct drbd_peer_device *peer_device) in drbd_queue_bitmap_io() argument
3482 D_ASSERT(device, current == peer_device->connection->worker.task); in drbd_queue_bitmap_io()
3491 device->bm_io_work.peer_device = peer_device; in drbd_queue_bitmap_io()
3503 drbd_queue_work(&peer_device->connection->sender_work, in drbd_queue_bitmap_io()
3523 struct drbd_peer_device *peer_device) in drbd_bitmap_io() argument
3535 rv = io_fn(device, peer_device); in drbd_bitmap_io()