Lines Matching refs:peer_device

112 struct page *drbd_alloc_pages(struct drbd_peer_device *peer_device, unsigned int number,  in drbd_alloc_pages()  argument
115 struct drbd_device *device = peer_device->device; in drbd_alloc_pages()
121 nc = rcu_dereference(peer_device->connection->net_conf); in drbd_alloc_pages()
177 drbd_alloc_peer_req(struct drbd_peer_device *peer_device, u64 id, sector_t sector, in drbd_alloc_peer_req() argument
180 struct drbd_device *device = peer_device->device; in drbd_alloc_peer_req()
196 page = drbd_alloc_pages(peer_device, nr_pages, in drbd_alloc_peer_req()
210 peer_req->peer_device = peer_device; in drbd_alloc_peer_req()
701 int drbd_connected(struct drbd_peer_device *peer_device) in drbd_connected() argument
703 struct drbd_device *device = peer_device->device; in drbd_connected()
709 device->state_mutex = peer_device->connection->agreed_pro_version < 100 ? in drbd_connected()
710 &peer_device->connection->cstate_mutex : in drbd_connected()
713 err = drbd_send_sync_param(peer_device); in drbd_connected()
715 err = drbd_send_sizes(peer_device, 0, 0); in drbd_connected()
717 err = drbd_send_uuids(peer_device); in drbd_connected()
719 err = drbd_send_current_state(peer_device); in drbd_connected()
738 struct drbd_peer_device *peer_device; in conn_connect() local
906 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) in conn_connect()
907 mutex_lock(peer_device->device->state_mutex); in conn_connect()
914 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) in conn_connect()
915 mutex_unlock(peer_device->device->state_mutex); in conn_connect()
918 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) { in conn_connect()
919 struct drbd_device *device = peer_device->device; in conn_connect()
928 drbd_connected(peer_device); in conn_connect()
1127 struct drbd_peer_device *peer_device; in drbd_flush() local
1136 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) { in drbd_flush()
1137 struct drbd_device *device = peer_device->device; in drbd_flush()
1448 struct drbd_device *device = peer_req->peer_device->device; in drbd_submit_peer_request()
1466 conn_wait_active_ee_empty(peer_req->peer_device->connection); in drbd_submit_peer_request()
1554 struct drbd_peer_device *peer_device; in conn_wait_active_ee_empty() local
1558 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) { in conn_wait_active_ee_empty()
1559 struct drbd_device *device = peer_device->device; in conn_wait_active_ee_empty()
1659 read_in_block(struct drbd_peer_device *peer_device, u64 id, sector_t sector, in read_in_block() argument
1662 struct drbd_device *device = peer_device->device; in read_in_block()
1668 void *dig_in = peer_device->connection->int_dig_in; in read_in_block()
1669 void *dig_vv = peer_device->connection->int_dig_vv; in read_in_block()
1675 if (!trim && peer_device->connection->peer_integrity_tfm) { in read_in_block()
1676 digest_size = crypto_shash_digestsize(peer_device->connection->peer_integrity_tfm); in read_in_block()
1681 err = drbd_recv_all_warn(peer_device->connection, dig_in, digest_size); in read_in_block()
1690 if (!expect(peer_device, data_size == 0)) in read_in_block()
1694 if (!expect(peer_device, data_size == 0)) in read_in_block()
1699 if (!expect(peer_device, IS_ALIGNED(ds, 512))) in read_in_block()
1702 if (!expect(peer_device, ds <= (DRBD_MAX_BBIO_SECTORS << 9))) in read_in_block()
1704 } else if (!expect(peer_device, ds <= DRBD_MAX_BIO_SIZE)) in read_in_block()
1720 peer_req = drbd_alloc_peer_req(peer_device, id, sector, ds, data_size, GFP_NOIO); in read_in_block()
1740 err = drbd_recv_all_warn(peer_device->connection, data, len); in read_in_block()
1754 drbd_csum_ee_size(peer_device->connection->peer_integrity_tfm, peer_req, dig_vv, data_size); in read_in_block()
1769 static int drbd_drain_block(struct drbd_peer_device *peer_device, int data_size) in drbd_drain_block() argument
1778 page = drbd_alloc_pages(peer_device, 1, 1); in drbd_drain_block()
1784 err = drbd_recv_all_warn(peer_device->connection, data, len); in drbd_drain_block()
1790 drbd_free_pages(peer_device->device, page); in drbd_drain_block()
1794 static int recv_dless_read(struct drbd_peer_device *peer_device, struct drbd_request *req, in recv_dless_read() argument
1801 void *dig_in = peer_device->connection->int_dig_in; in recv_dless_read()
1802 void *dig_vv = peer_device->connection->int_dig_vv; in recv_dless_read()
1805 if (peer_device->connection->peer_integrity_tfm) { in recv_dless_read()
1806 digest_size = crypto_shash_digestsize(peer_device->connection->peer_integrity_tfm); in recv_dless_read()
1807 err = drbd_recv_all_warn(peer_device->connection, dig_in, digest_size); in recv_dless_read()
1815 peer_device->device->recv_cnt += data_size>>9; in recv_dless_read()
1818 D_ASSERT(peer_device->device, sector == bio->bi_iter.bi_sector); in recv_dless_read()
1823 err = drbd_recv_all_warn(peer_device->connection, mapped, expect); in recv_dless_read()
1831 drbd_csum_bio(peer_device->connection->peer_integrity_tfm, bio, dig_vv); in recv_dless_read()
1833 drbd_err(peer_device, "Digest integrity check FAILED. Broken NICs?\n"); in recv_dless_read()
1838 D_ASSERT(peer_device->device, data_size == 0); in recv_dless_read()
1850 struct drbd_peer_device *peer_device = peer_req->peer_device; in e_end_resync_block() local
1851 struct drbd_device *device = peer_device->device; in e_end_resync_block()
1858 drbd_set_in_sync(peer_device, sector, peer_req->i.size); in e_end_resync_block()
1859 err = drbd_send_ack(peer_device, P_RS_WRITE_ACK, peer_req); in e_end_resync_block()
1862 drbd_rs_failed_io(peer_device, sector, peer_req->i.size); in e_end_resync_block()
1864 err = drbd_send_ack(peer_device, P_NEG_ACK, peer_req); in e_end_resync_block()
1871 static int recv_resync_read(struct drbd_peer_device *peer_device, sector_t sector, in recv_resync_read() argument
1874 struct drbd_device *device = peer_device->device; in recv_resync_read()
1877 peer_req = read_in_block(peer_device, ID_SYNCER, sector, pi); in recv_resync_read()
1881 dec_rs_pending(peer_device); in recv_resync_read()
1930 struct drbd_peer_device *peer_device; in receive_DataReply() local
1937 peer_device = conn_peer_device(connection, pi->vnr); in receive_DataReply()
1938 if (!peer_device) in receive_DataReply()
1940 device = peer_device->device; in receive_DataReply()
1950 err = recv_dless_read(peer_device, req, sector, pi->size); in receive_DataReply()
1952 req_mod(req, DATA_RECEIVED, peer_device); in receive_DataReply()
1962 struct drbd_peer_device *peer_device; in receive_RSDataReply() local
1968 peer_device = conn_peer_device(connection, pi->vnr); in receive_RSDataReply()
1969 if (!peer_device) in receive_RSDataReply()
1971 device = peer_device->device; in receive_RSDataReply()
1980 err = recv_resync_read(peer_device, sector, pi); in receive_RSDataReply()
1985 err = drbd_drain_block(peer_device, pi->size); in receive_RSDataReply()
1987 drbd_send_ack_dp(peer_device, P_NEG_ACK, p, pi->size); in receive_RSDataReply()
2021 struct drbd_peer_device *peer_device = peer_req->peer_device; in e_end_block() local
2022 struct drbd_device *device = peer_device->device; in e_end_block()
2032 err = drbd_send_ack(peer_device, pcmd, peer_req); in e_end_block()
2034 drbd_set_in_sync(peer_device, sector, peer_req->i.size); in e_end_block()
2036 err = drbd_send_ack(peer_device, P_NEG_ACK, peer_req); in e_end_block()
2055 …drbd_may_finish_epoch(peer_device->connection, peer_req->epoch, EV_PUT + (cancel ? EV_CLEANUP : 0)… in e_end_block()
2064 struct drbd_peer_device *peer_device = peer_req->peer_device; in e_send_ack() local
2067 err = drbd_send_ack(peer_device, ack, peer_req); in e_send_ack()
2068 dec_unacked(peer_device->device); in e_send_ack()
2082 struct drbd_connection *connection = peer_req->peer_device->connection; in e_send_retry_write()
2103 static void update_peer_seq(struct drbd_peer_device *peer_device, unsigned int peer_seq) in update_peer_seq() argument
2105 struct drbd_device *device = peer_device->device; in update_peer_seq()
2108 if (test_bit(RESOLVE_CONFLICTS, &peer_device->connection->flags)) { in update_peer_seq()
2164 static int wait_for_and_update_peer_seq(struct drbd_peer_device *peer_device, const u32 peer_seq) in wait_for_and_update_peer_seq() argument
2166 struct drbd_device *device = peer_device->device; in wait_for_and_update_peer_seq()
2171 if (!test_bit(RESOLVE_CONFLICTS, &peer_device->connection->flags)) in wait_for_and_update_peer_seq()
2187 tp = rcu_dereference(peer_device->connection->net_conf)->two_primaries; in wait_for_and_update_peer_seq()
2197 timeout = rcu_dereference(peer_device->connection->net_conf)->ping_timeo*HZ/10; in wait_for_and_update_peer_seq()
2234 struct drbd_peer_device *peer_device = first_peer_device(device); in fail_postponed_requests() local
2248 __req_mod(req, NEG_ACKED, peer_device, &m); in fail_postponed_requests()
2260 struct drbd_connection *connection = peer_req->peer_device->connection; in handle_write_conflicts()
2318 &peer_req->peer_device->send_acks_work)) in handle_write_conflicts()
2372 struct drbd_peer_device *peer_device; in receive_Data() local
2382 peer_device = conn_peer_device(connection, pi->vnr); in receive_Data()
2383 if (!peer_device) in receive_Data()
2385 device = peer_device->device; in receive_Data()
2390 err = wait_for_and_update_peer_seq(peer_device, peer_seq); in receive_Data()
2391 drbd_send_ack_dp(peer_device, P_NEG_ACK, p, pi->size); in receive_Data()
2393 err2 = drbd_drain_block(peer_device, pi->size); in receive_Data()
2406 peer_req = read_in_block(peer_device, p->block_id, sector, pi); in receive_Data()
2419 D_ASSERT(peer_device, peer_req->i.size > 0); in receive_Data()
2420 D_ASSERT(peer_device, peer_req_op(peer_req) == REQ_OP_DISCARD); in receive_Data()
2421 D_ASSERT(peer_device, peer_req->pages == NULL); in receive_Data()
2427 D_ASSERT(peer_device, peer_req->i.size > 0); in receive_Data()
2428 D_ASSERT(peer_device, peer_req_op(peer_req) == REQ_OP_WRITE_ZEROES); in receive_Data()
2429 D_ASSERT(peer_device, peer_req->pages == NULL); in receive_Data()
2448 nc = rcu_dereference(peer_device->connection->net_conf); in receive_Data()
2450 if (peer_device->connection->agreed_pro_version < 100) { in receive_Data()
2472 drbd_send_ack(peer_device, P_RECV_ACK, peer_req); in receive_Data()
2479 err = wait_for_and_update_peer_seq(peer_device, peer_seq); in receive_Data()
2493 update_peer_seq(peer_device, peer_seq); in receive_Data()
2509 drbd_set_out_of_sync(peer_device, peer_req->i.sector, peer_req->i.size); in receive_Data()
2548 bool drbd_rs_should_slow_down(struct drbd_peer_device *peer_device, sector_t sector, in drbd_rs_should_slow_down() argument
2551 struct drbd_device *device = peer_device->device; in drbd_rs_should_slow_down()
2620 struct drbd_peer_device *peer_device; in receive_DataRequest() local
2629 peer_device = conn_peer_device(connection, pi->vnr); in receive_DataRequest()
2630 if (!peer_device) in receive_DataRequest()
2632 device = peer_device->device; in receive_DataRequest()
2653 drbd_send_ack_rp(peer_device, P_NEG_DREPLY, p); in receive_DataRequest()
2659 drbd_send_ack_rp(peer_device, P_NEG_RS_DREPLY , p); in receive_DataRequest()
2663 dec_rs_pending(peer_device); in receive_DataRequest()
2664 drbd_send_ack_ex(peer_device, P_OV_RESULT, sector, size, ID_IN_SYNC); in receive_DataRequest()
2674 return drbd_drain_block(peer_device, pi->size); in receive_DataRequest()
2680 peer_req = drbd_alloc_peer_req(peer_device, p->block_id, sector, size, in receive_DataRequest()
2720 if (drbd_recv_all(peer_device->connection, di->digest, pi->size)) in receive_DataRequest()
2724 D_ASSERT(device, peer_device->connection->agreed_pro_version >= 89); in receive_DataRequest()
2734 dec_rs_pending(peer_device); in receive_DataRequest()
2743 peer_device->connection->agreed_pro_version >= 90) { in receive_DataRequest()
2797 && drbd_rs_should_slow_down(peer_device, sector, false)) in receive_DataRequest()
2829 static int drbd_asb_recover_0p(struct drbd_peer_device *peer_device) __must_hold(local) in drbd_asb_recover_0p() argument
2831 struct drbd_device *device = peer_device->device; in drbd_asb_recover_0p()
2843 after_sb_0p = rcu_dereference(peer_device->connection->net_conf)->after_sb_0p; in drbd_asb_recover_0p()
2879 rv = test_bit(RESOLVE_CONFLICTS, &peer_device->connection->flags) in drbd_asb_recover_0p()
2896 rv = test_bit(RESOLVE_CONFLICTS, &peer_device->connection->flags) in drbd_asb_recover_0p()
2912 static int drbd_asb_recover_1p(struct drbd_peer_device *peer_device) __must_hold(local) in drbd_asb_recover_1p() argument
2914 struct drbd_device *device = peer_device->device; in drbd_asb_recover_1p()
2919 after_sb_1p = rcu_dereference(peer_device->connection->net_conf)->after_sb_1p; in drbd_asb_recover_1p()
2933 hg = drbd_asb_recover_0p(peer_device); in drbd_asb_recover_1p()
2940 rv = drbd_asb_recover_0p(peer_device); in drbd_asb_recover_1p()
2945 hg = drbd_asb_recover_0p(peer_device); in drbd_asb_recover_1p()
2969 static int drbd_asb_recover_2p(struct drbd_peer_device *peer_device) __must_hold(local) in drbd_asb_recover_2p() argument
2971 struct drbd_device *device = peer_device->device; in drbd_asb_recover_2p()
2976 after_sb_2p = rcu_dereference(peer_device->connection->net_conf)->after_sb_2p; in drbd_asb_recover_2p()
2990 rv = drbd_asb_recover_0p(peer_device); in drbd_asb_recover_2p()
2995 hg = drbd_asb_recover_0p(peer_device); in drbd_asb_recover_2p()
3046 static int drbd_uuid_compare(struct drbd_peer_device *const peer_device, in drbd_uuid_compare() argument
3049 struct drbd_connection *const connection = peer_device->connection; in drbd_uuid_compare()
3050 struct drbd_device *device = peer_device->device; in drbd_uuid_compare()
3140 drbd_warn(peer_device, "Equivalent unrotated UUIDs, but current primary present.\n"); in drbd_uuid_compare()
3147 …drbd_err(peer_device, "Equivalent unrotated UUIDs, but both are primary. Can not resolve this.\n"); in drbd_uuid_compare()
3265 static enum drbd_conns drbd_sync_handshake(struct drbd_peer_device *peer_device, in drbd_sync_handshake() argument
3269 struct drbd_device *device = peer_device->device; in drbd_sync_handshake()
3286 hg = drbd_uuid_compare(peer_device, peer_role, &rule_nr); in drbd_sync_handshake()
3323 nc = rcu_dereference(peer_device->connection->net_conf); in drbd_sync_handshake()
3336 hg = drbd_asb_recover_0p(peer_device); in drbd_sync_handshake()
3339 hg = drbd_asb_recover_1p(peer_device); in drbd_sync_handshake()
3342 hg = drbd_asb_recover_2p(peer_device); in drbd_sync_handshake()
3399 if (tentative || test_bit(CONN_DRY_RUN, &peer_device->connection->flags)) { in drbd_sync_handshake()
3656 struct drbd_peer_device *peer_device; in receive_SyncParam() local
3669 peer_device = conn_peer_device(connection, pi->vnr); in receive_SyncParam()
3670 if (!peer_device) in receive_SyncParam()
3672 device = peer_device->device; in receive_SyncParam()
3704 err = drbd_recv_all(peer_device->connection, p, header_size); in receive_SyncParam()
3709 old_net_conf = peer_device->connection->net_conf; in receive_SyncParam()
3734 err = drbd_recv_all(peer_device->connection, p->verify_alg, data_size); in receive_SyncParam()
3806 crypto_free_shash(peer_device->connection->verify_tfm); in receive_SyncParam()
3807 peer_device->connection->verify_tfm = verify_tfm; in receive_SyncParam()
3813 crypto_free_shash(peer_device->connection->csums_tfm); in receive_SyncParam()
3814 peer_device->connection->csums_tfm = csums_tfm; in receive_SyncParam()
3860 conn_request_state(peer_device->connection, NS(conn, C_DISCONNECTING), CS_HARD); in receive_SyncParam()
3879 struct drbd_peer_device *peer_device; in receive_sizes() local
3889 peer_device = conn_peer_device(connection, pi->vnr); in receive_sizes()
3890 if (!peer_device) in receive_sizes()
3892 device = peer_device->device; in receive_sizes()
3927 conn_request_state(peer_device->connection, NS(conn, C_DISCONNECTING), CS_HARD); in receive_sizes()
4000 conn_request_state(peer_device->connection, NS(conn, C_DISCONNECTING), CS_HARD); in receive_sizes()
4030 drbd_send_sizes(peer_device, 0, ddsf); in receive_sizes()
4050 struct drbd_peer_device *peer_device; in receive_uuids() local
4056 peer_device = conn_peer_device(connection, pi->vnr); in receive_uuids()
4057 if (!peer_device) in receive_uuids()
4059 device = peer_device->device; in receive_uuids()
4077 conn_request_state(peer_device->connection, NS(conn, C_DISCONNECTING), CS_HARD); in receive_uuids()
4084 peer_device->connection->agreed_pro_version >= 90 && in receive_uuids()
4155 struct drbd_peer_device *peer_device; in receive_req_state() local
4161 peer_device = conn_peer_device(connection, pi->vnr); in receive_req_state()
4162 if (!peer_device) in receive_req_state()
4164 device = peer_device->device; in receive_req_state()
4169 if (test_bit(RESOLVE_CONFLICTS, &peer_device->connection->flags) && in receive_req_state()
4171 drbd_send_sr_reply(peer_device, SS_CONCURRENT_ST_CHG); in receive_req_state()
4179 drbd_send_sr_reply(peer_device, rv); in receive_req_state()
4212 struct drbd_peer_device *peer_device; in receive_state() local
4220 peer_device = conn_peer_device(connection, pi->vnr); in receive_state()
4221 if (!peer_device) in receive_state()
4223 device = peer_device->device; in receive_state()
4269 drbd_resync_finished(peer_device); in receive_state()
4277 ov_out_of_sync_print(peer_device); in receive_state()
4278 drbd_resync_finished(peer_device); in receive_state()
4337 ns.conn = drbd_sync_handshake(peer_device, peer_state.role, real_peer_disk); in receive_state()
4349 if (test_and_clear_bit(CONN_DRY_RUN, &peer_device->connection->flags)) in receive_state()
4352 conn_request_state(peer_device->connection, NS(conn, C_DISCONNECTING), CS_HARD); in receive_state()
4374 tl_clear(peer_device->connection); in receive_state()
4377 conn_request_state(peer_device->connection, NS2(conn, C_PROTOCOL_ERROR, susp, 0), CS_HARD); in receive_state()
4385 conn_request_state(peer_device->connection, NS(conn, C_DISCONNECTING), CS_HARD); in receive_state()
4395 drbd_send_uuids(peer_device); in receive_state()
4396 drbd_send_current_state(peer_device); in receive_state()
4409 struct drbd_peer_device *peer_device; in receive_sync_uuid() local
4413 peer_device = conn_peer_device(connection, pi->vnr); in receive_sync_uuid()
4414 if (!peer_device) in receive_sync_uuid()
4416 device = peer_device->device; in receive_sync_uuid()
4449 receive_bitmap_plain(struct drbd_peer_device *peer_device, unsigned int size, in receive_bitmap_plain() argument
4453 drbd_header_size(peer_device->connection); in receive_bitmap_plain()
4460 drbd_err(peer_device, "%s:want (%u) != size (%u)\n", __func__, want, size); in receive_bitmap_plain()
4465 err = drbd_recv_all(peer_device->connection, p, want); in receive_bitmap_plain()
4469 drbd_bm_merge_lel(peer_device->device, c->word_offset, num_words, p); in receive_bitmap_plain()
4501 recv_bm_rle_bits(struct drbd_peer_device *peer_device, in recv_bm_rle_bits() argument
4530 drbd_err(peer_device, "bitmap overflow (e:%lu) while decoding bm RLE packet\n", e); in recv_bm_rle_bits()
4533 _drbd_bm_set_bits(peer_device->device, s, e); in recv_bm_rle_bits()
4537 drbd_err(peer_device, "bitmap decoding error: h:%d b:%d la:0x%08llx l:%u/%u\n", in recv_bm_rle_bits()
4570 decode_bitmap_c(struct drbd_peer_device *peer_device, in decode_bitmap_c() argument
4576 return recv_bm_rle_bits(peer_device, p, c, len - sizeof(*p)); in decode_bitmap_c()
4582 drbd_err(peer_device, "receive_bitmap_c: unknown encoding %u\n", p->encoding); in decode_bitmap_c()
4583 conn_request_state(peer_device->connection, NS(conn, C_PROTOCOL_ERROR), CS_HARD); in decode_bitmap_c()
4587 void INFO_bm_xfer_stats(struct drbd_peer_device *peer_device, in INFO_bm_xfer_stats() argument
4591 unsigned int header_size = drbd_header_size(peer_device->connection); in INFO_bm_xfer_stats()
4615 drbd_info(peer_device, "%s bitmap stats [Bytes(packets)]: plain %u(%u), RLE %u(%u), " in INFO_bm_xfer_stats()
4633 struct drbd_peer_device *peer_device; in receive_bitmap() local
4638 peer_device = conn_peer_device(connection, pi->vnr); in receive_bitmap()
4639 if (!peer_device) in receive_bitmap()
4641 device = peer_device->device; in receive_bitmap()
4654 err = receive_bitmap_plain(peer_device, pi->size, pi->data, &c); in receive_bitmap()
4670 err = drbd_recv_all(peer_device->connection, p, pi->size); in receive_bitmap()
4673 err = decode_bitmap_c(peer_device, p, &c, pi->size); in receive_bitmap()
4688 err = drbd_recv_header(peer_device->connection, pi); in receive_bitmap()
4693 INFO_bm_xfer_stats(peer_device, "receive", &c); in receive_bitmap()
4698 err = drbd_send_bitmap(device, peer_device); in receive_bitmap()
4737 struct drbd_peer_device *peer_device; in receive_out_of_sync() local
4741 peer_device = conn_peer_device(connection, pi->vnr); in receive_out_of_sync()
4742 if (!peer_device) in receive_out_of_sync()
4744 device = peer_device->device; in receive_out_of_sync()
4756 drbd_set_out_of_sync(peer_device, be64_to_cpu(p->sector), be32_to_cpu(p->blksize)); in receive_out_of_sync()
4763 struct drbd_peer_device *peer_device; in receive_rs_deallocated() local
4769 peer_device = conn_peer_device(connection, pi->vnr); in receive_rs_deallocated()
4770 if (!peer_device) in receive_rs_deallocated()
4772 device = peer_device->device; in receive_rs_deallocated()
4777 dec_rs_pending(peer_device); in receive_rs_deallocated()
4782 peer_req = drbd_alloc_peer_req(peer_device, ID_SYNCER, sector, in receive_rs_deallocated()
4819 drbd_send_ack_ex(peer_device, P_NEG_ACK, sector, size, ID_SYNCER); in receive_rs_deallocated()
4923 struct drbd_peer_device *peer_device; in conn_disconnect() local
4946 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) { in conn_disconnect()
4947 struct drbd_device *device = peer_device->device; in conn_disconnect()
4950 drbd_disconnected(peer_device); in conn_disconnect()
4978 static int drbd_disconnected(struct drbd_peer_device *peer_device) in drbd_disconnected() argument
4980 struct drbd_device *device = peer_device->device; in drbd_disconnected()
5012 drbd_flush_workqueue(&peer_device->connection->sender_work); in drbd_disconnected()
5019 drbd_flush_workqueue(&peer_device->connection->sender_work); in drbd_disconnected()
5029 tl_clear(peer_device->connection); in drbd_disconnected()
5397 struct drbd_peer_device *peer_device; in got_RqSReply() local
5402 peer_device = conn_peer_device(connection, pi->vnr); in got_RqSReply()
5403 if (!peer_device) in got_RqSReply()
5405 device = peer_device->device; in got_RqSReply()
5442 struct drbd_peer_device *peer_device; in got_IsInSync() local
5448 peer_device = conn_peer_device(connection, pi->vnr); in got_IsInSync()
5449 if (!peer_device) in got_IsInSync()
5451 device = peer_device->device; in got_IsInSync()
5453 D_ASSERT(device, peer_device->connection->agreed_pro_version >= 89); in got_IsInSync()
5455 update_peer_seq(peer_device, be32_to_cpu(p->seq_num)); in got_IsInSync()
5459 drbd_set_in_sync(peer_device, sector, blksize); in got_IsInSync()
5464 dec_rs_pending(peer_device); in got_IsInSync()
5471 validate_req_change_req_state(struct drbd_peer_device *peer_device, u64 id, sector_t sector, in validate_req_change_req_state() argument
5475 struct drbd_device *device = peer_device->device; in validate_req_change_req_state()
5485 __req_mod(req, what, peer_device, &m); in validate_req_change_req_state()
5495 struct drbd_peer_device *peer_device; in got_BlockAck() local
5502 peer_device = conn_peer_device(connection, pi->vnr); in got_BlockAck()
5503 if (!peer_device) in got_BlockAck()
5505 device = peer_device->device; in got_BlockAck()
5507 update_peer_seq(peer_device, be32_to_cpu(p->seq_num)); in got_BlockAck()
5510 drbd_set_in_sync(peer_device, sector, blksize); in got_BlockAck()
5511 dec_rs_pending(peer_device); in got_BlockAck()
5534 return validate_req_change_req_state(peer_device, p->block_id, sector, in got_BlockAck()
5541 struct drbd_peer_device *peer_device; in got_NegAck() local
5548 peer_device = conn_peer_device(connection, pi->vnr); in got_NegAck()
5549 if (!peer_device) in got_NegAck()
5551 device = peer_device->device; in got_NegAck()
5553 update_peer_seq(peer_device, be32_to_cpu(p->seq_num)); in got_NegAck()
5556 dec_rs_pending(peer_device); in got_NegAck()
5557 drbd_rs_failed_io(peer_device, sector, size); in got_NegAck()
5561 err = validate_req_change_req_state(peer_device, p->block_id, sector, in got_NegAck()
5570 drbd_set_out_of_sync(peer_device, sector, size); in got_NegAck()
5577 struct drbd_peer_device *peer_device; in got_NegDReply() local
5582 peer_device = conn_peer_device(connection, pi->vnr); in got_NegDReply()
5583 if (!peer_device) in got_NegDReply()
5585 device = peer_device->device; in got_NegDReply()
5587 update_peer_seq(peer_device, be32_to_cpu(p->seq_num)); in got_NegDReply()
5592 return validate_req_change_req_state(peer_device, p->block_id, sector, in got_NegDReply()
5599 struct drbd_peer_device *peer_device; in got_NegRSDReply() local
5605 peer_device = conn_peer_device(connection, pi->vnr); in got_NegRSDReply()
5606 if (!peer_device) in got_NegRSDReply()
5608 device = peer_device->device; in got_NegRSDReply()
5613 update_peer_seq(peer_device, be32_to_cpu(p->seq_num)); in got_NegRSDReply()
5615 dec_rs_pending(peer_device); in got_NegRSDReply()
5621 drbd_rs_failed_io(peer_device, sector, size); in got_NegRSDReply()
5637 struct drbd_peer_device *peer_device; in got_BarrierAck() local
5643 idr_for_each_entry(&connection->peer_devices, peer_device, vnr) { in got_BarrierAck()
5644 struct drbd_device *device = peer_device->device; in got_BarrierAck()
5660 struct drbd_peer_device *peer_device; in got_OVResult() local
5667 peer_device = conn_peer_device(connection, pi->vnr); in got_OVResult()
5668 if (!peer_device) in got_OVResult()
5670 device = peer_device->device; in got_OVResult()
5675 update_peer_seq(peer_device, be32_to_cpu(p->seq_num)); in got_OVResult()
5678 drbd_ov_out_of_sync_found(peer_device, sector, size); in got_OVResult()
5680 ov_out_of_sync_print(peer_device); in got_OVResult()
5686 dec_rs_pending(peer_device); in got_OVResult()
5692 drbd_advance_rs_marks(peer_device, device->ov_left); in got_OVResult()
5699 drbd_queue_work(&peer_device->connection->sender_work, &dw->w); in got_OVResult()
5702 ov_out_of_sync_print(peer_device); in got_OVResult()
5703 drbd_resync_finished(peer_device); in got_OVResult()
5903 struct drbd_peer_device *peer_device = in drbd_send_acks_wf() local
5905 struct drbd_connection *connection = peer_device->connection; in drbd_send_acks_wf()
5906 struct drbd_device *device = peer_device->device; in drbd_send_acks_wf()