Commit 29d11cfd authored by Wengang Wang's avatar Wengang Wang Committed by Juergen Gross

xen/grant-table: log the lack of grants

log a message when we enter this situation:
1) we already allocated the max number of available grants from hypervisor
and
2) we still need more (but the request fails because of 1)).

Sometimes the lack of grants causes IO hangs in xen_blkfront devices.
Adding this log would help debuging.
Signed-off-by: default avatarWengang Wang <wen.gang.wang@oracle.com>
Reviewed-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: default avatarJunxiao Bi <junxiao.bi@oracle.com>
Reviewed-by: default avatarJuergen Gross <jgross@suse.com>
Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
parent 0e4d394f
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/hardirq.h> #include <linux/hardirq.h>
#include <linux/workqueue.h> #include <linux/workqueue.h>
#include <linux/ratelimit.h>
#include <xen/xen.h> #include <xen/xen.h>
#include <xen/interface/xen.h> #include <xen/interface/xen.h>
...@@ -1072,8 +1073,14 @@ static int gnttab_expand(unsigned int req_entries) ...@@ -1072,8 +1073,14 @@ static int gnttab_expand(unsigned int req_entries)
cur = nr_grant_frames; cur = nr_grant_frames;
extra = ((req_entries + (grefs_per_grant_frame-1)) / extra = ((req_entries + (grefs_per_grant_frame-1)) /
grefs_per_grant_frame); grefs_per_grant_frame);
if (cur + extra > gnttab_max_grant_frames()) if (cur + extra > gnttab_max_grant_frames()) {
pr_warn_ratelimited("xen/grant-table: max_grant_frames reached"
" cur=%u extra=%u limit=%u"
" gnttab_free_count=%u req_entries=%u\n",
cur, extra, gnttab_max_grant_frames(),
gnttab_free_count, req_entries);
return -ENOSPC; return -ENOSPC;
}
rc = gnttab_map(cur, cur + extra - 1); rc = gnttab_map(cur, cur + extra - 1);
if (rc == 0) if (rc == 0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment