Lines Matching refs:peer_device

491 	struct drbd_peer_device *peer_device;  in conn_lowest_minor()  local
495 peer_device = idr_get_next(&connection->peer_devices, &vnr); in conn_lowest_minor()
496 if (peer_device) in conn_lowest_minor()
497 minor = device_to_minor(peer_device->device); in conn_lowest_minor()
642 void *drbd_prepare_command(struct drbd_peer_device *peer_device, struct drbd_socket *sock) in drbd_prepare_command() argument
644 return conn_prepare_command(peer_device->connection, sock); in drbd_prepare_command()
696 int drbd_send_command(struct drbd_peer_device *peer_device, struct drbd_socket *sock, in drbd_send_command() argument
702 err = __send_command(peer_device->connection, peer_device->device->vnr, in drbd_send_command()
728 int drbd_send_sync_param(struct drbd_peer_device *peer_device) in drbd_send_sync_param() argument
733 const int apv = peer_device->connection->agreed_pro_version; in drbd_send_sync_param()
738 sock = &peer_device->connection->data; in drbd_send_sync_param()
739 p = drbd_prepare_command(peer_device, sock); in drbd_send_sync_param()
744 nc = rcu_dereference(peer_device->connection->net_conf); in drbd_send_sync_param()
757 if (get_ldev(peer_device->device)) { in drbd_send_sync_param()
758 dc = rcu_dereference(peer_device->device->ldev->disk_conf); in drbd_send_sync_param()
764 put_ldev(peer_device->device); in drbd_send_sync_param()
779 return drbd_send_command(peer_device, sock, cmd, size, NULL, 0); in drbd_send_sync_param()
838 static int _drbd_send_uuids(struct drbd_peer_device *peer_device, u64 uuid_flags) in _drbd_send_uuids() argument
840 struct drbd_device *device = peer_device->device; in _drbd_send_uuids()
848 sock = &peer_device->connection->data; in _drbd_send_uuids()
849 p = drbd_prepare_command(peer_device, sock); in _drbd_send_uuids()
862 uuid_flags |= rcu_dereference(peer_device->connection->net_conf)->discard_my_data ? 1 : 0; in _drbd_send_uuids()
869 return drbd_send_command(peer_device, sock, P_UUIDS, sizeof(*p), NULL, 0); in _drbd_send_uuids()
872 int drbd_send_uuids(struct drbd_peer_device *peer_device) in drbd_send_uuids() argument
874 return _drbd_send_uuids(peer_device, 0); in drbd_send_uuids()
877 int drbd_send_uuids_skip_initial_sync(struct drbd_peer_device *peer_device) in drbd_send_uuids_skip_initial_sync() argument
879 return _drbd_send_uuids(peer_device, 8); in drbd_send_uuids_skip_initial_sync()
900 void drbd_gen_and_send_sync_uuid(struct drbd_peer_device *peer_device) in drbd_gen_and_send_sync_uuid() argument
902 struct drbd_device *device = peer_device->device; in drbd_gen_and_send_sync_uuid()
918 sock = &peer_device->connection->data; in drbd_gen_and_send_sync_uuid()
919 p = drbd_prepare_command(peer_device, sock); in drbd_gen_and_send_sync_uuid()
922 drbd_send_command(peer_device, sock, P_SYNC_UUID, sizeof(*p), NULL, 0); in drbd_gen_and_send_sync_uuid()
951 int drbd_send_sizes(struct drbd_peer_device *peer_device, int trigger_reply, enum dds_flags flags) in drbd_send_sizes() argument
953 struct drbd_device *device = peer_device->device; in drbd_send_sizes()
961 sock = &peer_device->connection->data; in drbd_send_sizes()
962 p = drbd_prepare_command(peer_device, sock); in drbd_send_sizes()
967 if (peer_device->connection->agreed_features & DRBD_FF_WSAME) in drbd_send_sizes()
990 if (peer_device->connection->agreed_pro_version <= 94) in drbd_send_sizes()
992 else if (peer_device->connection->agreed_pro_version < 100) in drbd_send_sizes()
1002 return drbd_send_command(peer_device, sock, P_SIZES, packet_size, NULL, 0); in drbd_send_sizes()
1009 int drbd_send_current_state(struct drbd_peer_device *peer_device) in drbd_send_current_state() argument
1014 sock = &peer_device->connection->data; in drbd_send_current_state()
1015 p = drbd_prepare_command(peer_device, sock); in drbd_send_current_state()
1018 p->state = cpu_to_be32(peer_device->device->state.i); /* Within the send mutex */ in drbd_send_current_state()
1019 return drbd_send_command(peer_device, sock, P_STATE, sizeof(*p), NULL, 0); in drbd_send_current_state()
1032 int drbd_send_state(struct drbd_peer_device *peer_device, union drbd_state state) in drbd_send_state() argument
1037 sock = &peer_device->connection->data; in drbd_send_state()
1038 p = drbd_prepare_command(peer_device, sock); in drbd_send_state()
1042 return drbd_send_command(peer_device, sock, P_STATE, sizeof(*p), NULL, 0); in drbd_send_state()
1045 int drbd_send_state_req(struct drbd_peer_device *peer_device, union drbd_state mask, union drbd_sta… in drbd_send_state_req() argument
1050 sock = &peer_device->connection->data; in drbd_send_state_req()
1051 p = drbd_prepare_command(peer_device, sock); in drbd_send_state_req()
1056 return drbd_send_command(peer_device, sock, P_STATE_CHG_REQ, sizeof(*p), NULL, 0); in drbd_send_state_req()
1075 void drbd_send_sr_reply(struct drbd_peer_device *peer_device, enum drbd_state_rv retcode) in drbd_send_sr_reply() argument
1080 sock = &peer_device->connection->meta; in drbd_send_sr_reply()
1081 p = drbd_prepare_command(peer_device, sock); in drbd_send_sr_reply()
1084 drbd_send_command(peer_device, sock, P_STATE_CHG_REPLY, sizeof(*p), NULL, 0); in drbd_send_sr_reply()
1353 static int _drbd_send_ack(struct drbd_peer_device *peer_device, enum drbd_packet cmd, in _drbd_send_ack() argument
1359 if (peer_device->device->state.conn < C_CONNECTED) in _drbd_send_ack()
1362 sock = &peer_device->connection->meta; in _drbd_send_ack()
1363 p = drbd_prepare_command(peer_device, sock); in _drbd_send_ack()
1369 p->seq_num = cpu_to_be32(atomic_inc_return(&peer_device->device->packet_seq)); in _drbd_send_ack()
1370 return drbd_send_command(peer_device, sock, cmd, sizeof(*p), NULL, 0); in _drbd_send_ack()
1376 void drbd_send_ack_dp(struct drbd_peer_device *peer_device, enum drbd_packet cmd, in drbd_send_ack_dp() argument
1379 if (peer_device->connection->peer_integrity_tfm) in drbd_send_ack_dp()
1380 data_size -= crypto_ahash_digestsize(peer_device->connection->peer_integrity_tfm); in drbd_send_ack_dp()
1381 _drbd_send_ack(peer_device, cmd, dp->sector, cpu_to_be32(data_size), in drbd_send_ack_dp()
1385 void drbd_send_ack_rp(struct drbd_peer_device *peer_device, enum drbd_packet cmd, in drbd_send_ack_rp() argument
1388 _drbd_send_ack(peer_device, cmd, rp->sector, rp->blksize, rp->block_id); in drbd_send_ack_rp()
1397 int drbd_send_ack(struct drbd_peer_device *peer_device, enum drbd_packet cmd, in drbd_send_ack() argument
1400 return _drbd_send_ack(peer_device, cmd, in drbd_send_ack()
1408 int drbd_send_ack_ex(struct drbd_peer_device *peer_device, enum drbd_packet cmd, in drbd_send_ack_ex() argument
1411 return _drbd_send_ack(peer_device, cmd, in drbd_send_ack_ex()
1417 int drbd_send_rs_deallocated(struct drbd_peer_device *peer_device, in drbd_send_rs_deallocated() argument
1423 sock = &peer_device->connection->data; in drbd_send_rs_deallocated()
1424 p = drbd_prepare_command(peer_device, sock); in drbd_send_rs_deallocated()
1430 return drbd_send_command(peer_device, sock, P_RS_DEALLOCATED, sizeof(*p), NULL, 0); in drbd_send_rs_deallocated()
1433 int drbd_send_drequest(struct drbd_peer_device *peer_device, int cmd, in drbd_send_drequest() argument
1439 sock = &peer_device->connection->data; in drbd_send_drequest()
1440 p = drbd_prepare_command(peer_device, sock); in drbd_send_drequest()
1446 return drbd_send_command(peer_device, sock, cmd, sizeof(*p), NULL, 0); in drbd_send_drequest()
1449 int drbd_send_drequest_csum(struct drbd_peer_device *peer_device, sector_t sector, int size, in drbd_send_drequest_csum() argument
1457 sock = &peer_device->connection->data; in drbd_send_drequest_csum()
1458 p = drbd_prepare_command(peer_device, sock); in drbd_send_drequest_csum()
1464 return drbd_send_command(peer_device, sock, cmd, sizeof(*p), digest, digest_size); in drbd_send_drequest_csum()
1467 int drbd_send_ov_request(struct drbd_peer_device *peer_device, sector_t sector, int size) in drbd_send_ov_request() argument
1472 sock = &peer_device->connection->data; in drbd_send_ov_request()
1473 p = drbd_prepare_command(peer_device, sock); in drbd_send_ov_request()
1479 return drbd_send_command(peer_device, sock, P_OV_REQUEST, sizeof(*p), NULL, 0); in drbd_send_ov_request()
1537 static int _drbd_no_send_page(struct drbd_peer_device *peer_device, struct page *page, in _drbd_no_send_page() argument
1544 socket = peer_device->connection->data.socket; in _drbd_no_send_page()
1546 err = drbd_send_all(peer_device->connection, socket, addr, size, msg_flags); in _drbd_no_send_page()
1549 peer_device->device->send_cnt += size >> 9; in _drbd_no_send_page()
1553 static int _drbd_send_page(struct drbd_peer_device *peer_device, struct page *page, in _drbd_send_page() argument
1556 struct socket *socket = peer_device->connection->data.socket; in _drbd_send_page()
1567 return _drbd_no_send_page(peer_device, page, offset, size, msg_flags); in _drbd_send_page()
1570 drbd_update_congested(peer_device->connection); in _drbd_send_page()
1577 if (we_should_drop_the_connection(peer_device->connection, socket)) in _drbd_send_page()
1581 drbd_warn(peer_device->device, "%s: size=%d len=%d sent=%d\n", in _drbd_send_page()
1590 clear_bit(NET_CONGESTED, &peer_device->connection->flags); in _drbd_send_page()
1594 peer_device->device->send_cnt += size >> 9; in _drbd_send_page()
1599 static int _drbd_send_bio(struct drbd_peer_device *peer_device, struct bio *bio) in _drbd_send_bio() argument
1608 err = _drbd_no_send_page(peer_device, bvec.bv_page, in _drbd_send_bio()
1621 static int _drbd_send_zc_bio(struct drbd_peer_device *peer_device, struct bio *bio) in _drbd_send_zc_bio() argument
1630 err = _drbd_send_page(peer_device, bvec.bv_page, in _drbd_send_zc_bio()
1642 static int _drbd_send_zc_ee(struct drbd_peer_device *peer_device, in _drbd_send_zc_ee() argument
1653 err = _drbd_send_page(peer_device, page, 0, l, in _drbd_send_zc_ee()
1679 int drbd_send_dblock(struct drbd_peer_device *peer_device, struct drbd_request *req) in drbd_send_dblock() argument
1681 struct drbd_device *device = peer_device->device; in drbd_send_dblock()
1690 sock = &peer_device->connection->data; in drbd_send_dblock()
1691 p = drbd_prepare_command(peer_device, sock); in drbd_send_dblock()
1692 digest_size = peer_device->connection->integrity_tfm ? in drbd_send_dblock()
1693 crypto_ahash_digestsize(peer_device->connection->integrity_tfm) : 0; in drbd_send_dblock()
1700 dp_flags = bio_flags_to_wire(peer_device->connection, req->master_bio); in drbd_send_dblock()
1704 if (peer_device->connection->agreed_pro_version >= 100) { in drbd_send_dblock()
1718 err = __send_command(peer_device->connection, device->vnr, sock, P_TRIM, sizeof(*t), NULL, 0); in drbd_send_dblock()
1734 drbd_csum_bio(peer_device->connection->integrity_tfm, req->master_bio, digest_out); in drbd_send_dblock()
1737 __send_command(peer_device->connection, device->vnr, sock, P_WSAME, in drbd_send_dblock()
1742 __send_command(peer_device->connection, device->vnr, sock, P_DATA, in drbd_send_dblock()
1757 err = _drbd_send_bio(peer_device, req->master_bio); in drbd_send_dblock()
1759 err = _drbd_send_zc_bio(peer_device, req->master_bio); in drbd_send_dblock()
1766 drbd_csum_bio(peer_device->connection->integrity_tfm, req->master_bio, digest); in drbd_send_dblock()
1786 int drbd_send_block(struct drbd_peer_device *peer_device, enum drbd_packet cmd, in drbd_send_block() argument
1789 struct drbd_device *device = peer_device->device; in drbd_send_block()
1795 sock = &peer_device->connection->data; in drbd_send_block()
1796 p = drbd_prepare_command(peer_device, sock); in drbd_send_block()
1798 digest_size = peer_device->connection->integrity_tfm ? in drbd_send_block()
1799 crypto_ahash_digestsize(peer_device->connection->integrity_tfm) : 0; in drbd_send_block()
1808 drbd_csum_ee(peer_device->connection->integrity_tfm, peer_req, p + 1); in drbd_send_block()
1809 …err = __send_command(peer_device->connection, device->vnr, sock, cmd, sizeof(*p) + digest_size, NU… in drbd_send_block()
1811 err = _drbd_send_zc_ee(peer_device, peer_req); in drbd_send_block()
1817 int drbd_send_out_of_sync(struct drbd_peer_device *peer_device, struct drbd_request *req) in drbd_send_out_of_sync() argument
1822 sock = &peer_device->connection->data; in drbd_send_out_of_sync()
1823 p = drbd_prepare_command(peer_device, sock); in drbd_send_out_of_sync()
1828 return drbd_send_command(peer_device, sock, P_OUT_OF_SYNC, sizeof(*p), NULL, 0); in drbd_send_out_of_sync()
2218 struct drbd_peer_device *peer_device, *tmp_peer_device; in drbd_destroy_device() local
2253 for_each_peer_device_safe(peer_device, tmp_peer_device, device) { in drbd_destroy_device()
2254 kref_put(&peer_device->connection->kref, drbd_destroy_connection); in drbd_destroy_device()
2255 kfree(peer_device); in drbd_destroy_device()
2771 struct drbd_peer_device *peer_device, *tmp_peer_device; in drbd_create_device() local
2856 peer_device = kzalloc(sizeof(struct drbd_peer_device), GFP_KERNEL); in drbd_create_device()
2857 if (!peer_device) in drbd_create_device()
2859 peer_device->connection = connection; in drbd_create_device()
2860 peer_device->device = device; in drbd_create_device()
2862 list_add(&peer_device->peer_devices, &device->peer_devices); in drbd_create_device()
2865 id = idr_alloc(&connection->peer_devices, peer_device, vnr, vnr + 1, GFP_KERNEL); in drbd_create_device()
2872 INIT_WORK(&peer_device->send_acks_work, drbd_send_acks_wf); in drbd_create_device()
2885 for_each_peer_device(peer_device, device) in drbd_create_device()
2886 drbd_connected(peer_device); in drbd_create_device()
2889 for_each_peer_device(peer_device, device) in drbd_create_device()
2890 drbd_debugfs_peer_device_add(peer_device); in drbd_create_device()
2898 peer_device = idr_remove(&connection->peer_devices, vnr); in drbd_create_device()
2899 if (peer_device) in drbd_create_device()
2902 for_each_peer_device_safe(peer_device, tmp_peer_device, device) { in drbd_create_device()
2903 list_del(&peer_device->peer_devices); in drbd_create_device()
2904 kfree(peer_device); in drbd_create_device()
2928 struct drbd_peer_device *peer_device; in drbd_delete_device() local
2931 for_each_peer_device(peer_device, device) in drbd_delete_device()
2932 drbd_debugfs_peer_device_cleanup(peer_device); in drbd_delete_device()
3050 struct drbd_peer_device *peer_device; in conn_md_sync() local
3054 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) { in conn_md_sync()
3055 struct drbd_device *device = peer_device->device; in conn_md_sync()