Don't loop indefinitely trying to allocate router buffer pools if
the number of requested buffers is too large for the system.
Test-Parameters: trivial
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: Ic0f2ccf0f7b38dfa254e46e268b27092342efdb5
Reviewed-on: https://review.whamcloud.com/45174
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Serguei Smirnov <ssmirnov@whamcloud.com>
Reviewed-by: Chris Horn <chris.horn@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
rb->rb_pool = rbp;
for (i = 0; i < npages; i++) {
rb->rb_pool = rbp;
for (i = 0; i < npages; i++) {
- page = cfs_page_cpt_alloc(lnet_cpt_table(), cpt,
- GFP_KERNEL | __GFP_ZERO);
+ page = cfs_page_cpt_alloc(lnet_cpt_table(), cpt, GFP_KERNEL |
+ __GFP_ZERO | __GFP_NORETRY);
if (page == NULL) {
while (--i >= 0)
__free_page(rb->rb_kiov[i].bv_page);
if (page == NULL) {
while (--i >= 0)
__free_page(rb->rb_kiov[i].bv_page);
while (num_rb-- > 0) {
rb = lnet_new_rtrbuf(rbp, cpt);
if (rb == NULL) {
while (num_rb-- > 0) {
rb = lnet_new_rtrbuf(rbp, cpt);
if (rb == NULL) {
- CERROR("Failed to allocate %d route bufs of %d pages\n",
- nbufs, npages);
+ CERROR("lnet: error allocating %ux%u page router buffers on CPT %u: rc = %d\n",
+ nbufs, npages, cpt, -ENOMEM);
lnet_net_lock(cpt);
rbp->rbp_req_nbuffers = old_req_nbufs;
lnet_net_lock(cpt);
rbp->rbp_req_nbuffers = old_req_nbufs;
} else if (!strcmp(forwarding, "enabled")) {
/* explicitly enabled */
} else {
} else if (!strcmp(forwarding, "enabled")) {
/* explicitly enabled */
} else {
- LCONSOLE_ERROR_MSG(0x10b, "'forwarding' not set to either "
- "'enabled' or 'disabled'\n");
- return -EINVAL;
+ rc = -EINVAL;
+ LCONSOLE_ERROR_MSG(0x10b,
+ "lnet: forwarding='%s' not set to either 'enabled' or 'disabled': rc = %d\n",
+ forwarding, rc);
+ return rc;
}
nrb_tiny = lnet_nrb_tiny_calculate();
}
nrb_tiny = lnet_nrb_tiny_calculate();
LNET_NRBPOOLS *
sizeof(struct lnet_rtrbufpool));
if (the_lnet.ln_rtrpools == NULL) {
LNET_NRBPOOLS *
sizeof(struct lnet_rtrbufpool));
if (the_lnet.ln_rtrpools == NULL) {
LCONSOLE_ERROR_MSG(0x10c,
LCONSOLE_ERROR_MSG(0x10c,
- "Failed to initialize router buffe pool\n");
- return -ENOMEM;
+ "lnet: error allocating router buffer pool: rc = %d\n",
+ rc);
+ return rc;
}
cfs_percpt_for_each(rtrp, i, the_lnet.ln_rtrpools) {
lnet_rtrpool_init(&rtrp[LNET_TINY_BUF_IDX], 0);
rc = lnet_rtrpool_adjust_bufs(&rtrp[LNET_TINY_BUF_IDX],
nrb_tiny, i);
}
cfs_percpt_for_each(rtrp, i, the_lnet.ln_rtrpools) {
lnet_rtrpool_init(&rtrp[LNET_TINY_BUF_IDX], 0);
rc = lnet_rtrpool_adjust_bufs(&rtrp[LNET_TINY_BUF_IDX],
nrb_tiny, i);
goto failed;
lnet_rtrpool_init(&rtrp[LNET_SMALL_BUF_IDX],
LNET_NRB_SMALL_PAGES);
rc = lnet_rtrpool_adjust_bufs(&rtrp[LNET_SMALL_BUF_IDX],
nrb_small, i);
goto failed;
lnet_rtrpool_init(&rtrp[LNET_SMALL_BUF_IDX],
LNET_NRB_SMALL_PAGES);
rc = lnet_rtrpool_adjust_bufs(&rtrp[LNET_SMALL_BUF_IDX],
nrb_small, i);
goto failed;
lnet_rtrpool_init(&rtrp[LNET_LARGE_BUF_IDX],
LNET_NRB_LARGE_PAGES);
rc = lnet_rtrpool_adjust_bufs(&rtrp[LNET_LARGE_BUF_IDX],
nrb_large, i);
goto failed;
lnet_rtrpool_init(&rtrp[LNET_LARGE_BUF_IDX],
LNET_NRB_LARGE_PAGES);
rc = lnet_rtrpool_adjust_bufs(&rtrp[LNET_LARGE_BUF_IDX],
nrb_large, i);