summaryrefslogtreecommitdiffstats
path: root/mm/mmap.c
diff options
context:
space:
mode:
authorVivek Goyal <vgoyal@redhat.com>2019-10-15 13:46:26 -0400
committerMiklos Szeredi <mszeredi@redhat.com>2019-10-21 15:57:08 +0200
commita9bfd9dd3417561d06c81de04f6d6c1e0c9b3d44 (patch)
tree1e1991a2446f1a3a253d82983a2c6f430f5d7fd2 /mm/mmap.c
parentc17ea009610366146ec409fd6dc277e0f2510b10 (diff)
downloadlinux-a9bfd9dd3417561d06c81de04f6d6c1e0c9b3d44.tar.bz2
virtiofs: Retry request submission from worker context
If regular request queue gets full, currently we sleep for a bit and retrying submission in submitter's context. This assumes submitter is not holding any spin lock. But this assumption is not true for background requests. For background requests, we are called with fc->bg_lock held. This can lead to deadlock where one thread is trying submission with fc->bg_lock held while request completion thread has called fuse_request_end() which tries to acquire fc->bg_lock and gets blocked. As request completion thread gets blocked, it does not make further progress and that means queue does not get empty and submitter can't submit more requests. To solve this issue, retry submission with the help of a worker, instead of retrying in submitter's context. We already do this for hiprio/forget requests. Reported-by: Chirantan Ekbote <chirantan@chromium.org> Signed-off-by: Vivek Goyal <vgoyal@redhat.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'mm/mmap.c')
0 files changed, 0 insertions, 0 deletions