usnic: fix the CQ-reading logic for -FI_EAGAIN
Этот коммит содержится в:
родитель
5aabee2644
Коммит
d825ec7cc7
@ -1066,8 +1066,7 @@ static int usnic_component_progress(void)
|
|||||||
}
|
}
|
||||||
} else if (OPAL_LIKELY(-FI_EAGAIN == ret)) {
|
} else if (OPAL_LIKELY(-FI_EAGAIN == ret)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
usnic_handle_cq_error(module, channel, ret);
|
usnic_handle_cq_error(module, channel, ret);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1219,20 +1218,21 @@ static int usnic_component_progress_2(void)
|
|||||||
channel->chan_deferred_recv = NULL;
|
channel->chan_deferred_recv = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = fi_cq_read(channel->cq, completions,
|
num_events = ret =
|
||||||
|
fi_cq_read(channel->cq, completions,
|
||||||
OPAL_BTL_USNIC_NUM_COMPLETIONS);
|
OPAL_BTL_USNIC_NUM_COMPLETIONS);
|
||||||
assert(0 != ret);
|
assert(0 != ret);
|
||||||
opal_memchecker_base_mem_defined(&ret, sizeof(ret));
|
opal_memchecker_base_mem_defined(&ret, sizeof(ret));
|
||||||
if (OPAL_UNLIKELY(ret < 0 && -FI_EAGAIN != ret)) {
|
if (OPAL_UNLIKELY(ret < 0 && -FI_EAGAIN != ret)) {
|
||||||
usnic_handle_cq_error(module, channel, num_events);
|
usnic_handle_cq_error(module, channel, num_events);
|
||||||
num_events = 0;
|
num_events = 0;
|
||||||
} else {
|
} else if (-FI_EAGAIN == ret) {
|
||||||
num_events = ret;
|
num_events = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
opal_memchecker_base_mem_defined(completions,
|
opal_memchecker_base_mem_defined(completions,
|
||||||
sizeof(completions[0]) *
|
sizeof(completions[0]) *
|
||||||
ret);
|
num_events);
|
||||||
/* Handle each event */
|
/* Handle each event */
|
||||||
for (j = 0; j < num_events; j++) {
|
for (j = 0; j < num_events; j++) {
|
||||||
count += usnic_handle_completion(module, channel,
|
count += usnic_handle_completion(module, channel,
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user