void dssim_t::make_server(node_id_t nid) { pax_serv_timo ps_timo; ps_timo.vca_timo = config.serv_vca_timo; ps_timo.dead_timo = config.serv_dead_timo; ps_timo.heartbeat_timo = config.serv_heartbeat_timo; auto server = std::make_unique<paxserver>(net, nid, ps_timo, std::make_unique<po_word_vec>()); // l::og(l::DEBUG, "Create server %s\n", node->id_str()); net->announce(nid); if(nodes[server->get_nid()] != nullptr) { LOG(l::WARN, "Non-null entry nid:" << server->get_nid() << "\n"); } nodes[server->get_nid()] = std::move(server); }
void dssim_t::make_client(node_id_t nid, std::string prefix) { auto node = std::make_unique<pc_word_vec>( net, nid, config.client_timo, config.client_switch_ntimo, prefix, (uint64_t)config.nclient_req); //l::og(l::DEBUG) << "Create client " << node->id_str() // << " " << firstlet << "\n"; net->announce(nid); nodes[node->get_nid()] = std::move(node); }
static int dissect_ib_msg(tvbuff_t *tvb, proto_tree *tree, int offset) { /* typedef struct * { * __u32 ibm_magic; * I'm an ibnal message * * __u16 ibm_version; * this is my version * * __u8 ibm_type; * msg type * * __u8 ibm_credits; * returned credits * * __u32 ibm_nob; * # bytes in message * * __u32 ibm_cksum; * checksum (0 == no * checksum) * * __u64 ibm_srcnid; * sender's NID * * __u64 ibm_srcstamp; * sender's incarnation * * __u64 ibm_dstnid; * destination's NID * * __u64 ibm_dststamp; * destination's * incarnation * * union { * kib_connparams_t connparams; * kib_immediate_msg_t immediate; * kib_putreq_msg_t putreq; * kib_putack_msg_t putack; * kib_get_msg_t get; * kib_completion_msg_t completion; * } WIRE_ATTR ibm_u; *} WIRE_ATTR kib_msg_t; */ t_nid src_nid; t_nid dst_nid; guint8 msg_type; proto_tree_add_item(tree, hf_lnet_ib_magic, tvb, offset, 4, little_endian); offset += 4; proto_tree_add_item(tree, hf_lnet_ib_version, tvb, offset, 2, little_endian); offset += 2; msg_type = tvb_get_guint8(tvb, offset); proto_tree_add_item(tree, hf_lnet_ib_type, tvb, offset, 1, little_endian); offset += 1; proto_tree_add_item(tree, hf_lnet_ib_credits, tvb, offset, 1, little_endian); offset += 1; proto_tree_add_item(tree, hf_lnet_ib_nob, tvb, offset, 4, little_endian); offset += 4; offset = dissect_csum(tvb, tree, offset); src_nid = get_nid(tvb, offset); proto_tree_add_text(tree, tvb, offset, 8, "src_nid = %s@tcp%d", ip_to_str((guint8 *) &src_nid.addr), src_nid.interface); offset += 8; proto_tree_add_item(tree, hf_lnet_ib_srcstamp, tvb, offset, 8, little_endian); offset += 8; dst_nid = get_nid(tvb, offset); proto_tree_add_text(tree, tvb, offset, 8, "dst_nid = %s@tcp%d", ip_to_str((guint8 *) &dst_nid.addr), dst_nid.interface); offset += 8; proto_tree_add_item(tree, hf_lnet_ib_dststamp, tvb,offset, 8, little_endian); offset += 8; /* LNet payloads only exist when the LND msg type is IMMEDIATE. Return a zero offset for all other types. */ return (msg_type == IBLND_MSG_IMMEDIATE) ? offset : 0; }
void get_dnode_of_data(struct f2fs_sb_info *sbi, struct dnode_of_data *dn, pgoff_t index, int mode) { int offset[4]; unsigned int noffset[4]; struct f2fs_node *parent = NULL; nid_t nids[4]; block_t nblk[4]; struct node_info ni; int level, i; int ret; level = get_node_path(index, offset, noffset); nids[0] = dn->nid; parent = dn->inode_blk; if (level != 0) nids[1] = get_nid(parent, offset[0], 1); else dn->node_blk = dn->inode_blk; get_node_info(sbi, nids[0], &ni); nblk[0] = ni.blk_addr; for (i = 1; i <= level; i++) { if (!nids[i] && mode == ALLOC_NODE) { f2fs_alloc_nid(sbi, &nids[i], 0); dn->nid = nids[i]; /* Function new_node_blk get a new f2fs_node blk and update*/ /* We should make sure that dn->node_blk == NULL*/ nblk[i] = new_node_block(sbi, dn, noffset[i]); ASSERT(nblk[i]); set_nid(parent, offset[i - 1], nids[i], i == 1); } else { /* If Sparse file no read API, */ struct node_info ni; get_node_info(sbi, nids[i], &ni); dn->node_blk = calloc(BLOCK_SZ, 1); ASSERT(dn->node_blk); ret = dev_read_block(dn->node_blk, ni.blk_addr); ASSERT(ret >= 0); nblk[i] = ni.blk_addr; } if (mode == ALLOC_NODE){ /* Parent node may have changed */ ret = dev_write_block(parent, nblk[i - 1]); ASSERT(ret >= 0); } if (i != 1) free(parent); if (i < level) { parent = dn->node_blk; nids[i + 1] = get_nid(parent, offset[i], 0); } } dn->nid = nids[level]; dn->ofs_in_node = offset[level]; dn->data_blkaddr = datablock_addr(dn->node_blk, dn->ofs_in_node); dn->node_blkaddr = nblk[level]; }