Lines Matching refs:nsw
292 static int o2net_prep_nsw(struct o2net_node *nn, struct o2net_status_wait *nsw)
297 ret = idr_alloc(&nn->nn_status_idr, nsw, 0, 0, GFP_ATOMIC);
299 nsw->ns_id = ret;
300 list_add_tail(&nsw->ns_node_item, &nn->nn_status_list);
306 init_waitqueue_head(&nsw->ns_wq);
307 nsw->ns_sys_status = O2NET_ERR_NONE;
308 nsw->ns_status = 0;
313 struct o2net_status_wait *nsw,
319 if (!list_empty(&nsw->ns_node_item)) {
320 list_del_init(&nsw->ns_node_item);
321 nsw->ns_sys_status = sys_status;
322 nsw->ns_status = status;
323 idr_remove(&nn->nn_status_idr, nsw->ns_id);
324 wake_up(&nsw->ns_wq);
329 struct o2net_status_wait *nsw,
334 if (nsw == NULL) {
338 nsw = idr_find(&nn->nn_status_idr, id);
339 if (nsw == NULL)
343 o2net_complete_nsw_locked(nn, nsw, sys_status, status);
352 struct o2net_status_wait *nsw, *tmp;
357 list_for_each_entry_safe(nsw, tmp, &nn->nn_status_list, ns_node_item) {
358 o2net_complete_nsw_locked(nn, nsw, O2NET_ERR_DIED, 0);
367 struct o2net_status_wait *nsw)
371 completed = list_empty(&nsw->ns_node_item);
1023 struct o2net_status_wait nsw = {
1024 .ns_node_item = LIST_HEAD_INIT(nsw.ns_node_item),
1085 ret = o2net_prep_nsw(nn, &nsw);
1089 msg->msg_num = cpu_to_be32(nsw.ns_id);
1090 o2net_set_nst_msg_id(&nst, nsw.ns_id);
1108 wait_event(nsw.ns_wq, o2net_nsw_completed(nn, &nsw));
1115 ret = o2net_sys_err_to_errno(nsw.ns_sys_status);
1117 *status = nsw.ns_status;
1120 ret, nsw.ns_status);
1127 o2net_complete_nsw(nn, &nsw, 0, 0, 0);