From: Vivek Goyal <vgoyal@redhat.com>
To: Matthew Wilcox <willy@infradead.org>
Cc: Hou Tao <houtao@huaweicloud.com>,
linux-fsdevel@vger.kernel.org, Miklos Szeredi <miklos@szeredi.hu>,
Stefan Hajnoczi <stefanha@redhat.com>,
linux-kernel@vger.kernel.org, virtualization@lists.linux.dev,
houtao1@huawei.com
Subject: Re: [PATCH v2] virtiofs: use GFP_NOFS when enqueuing request through kworker
Date: Fri, 5 Jan 2024 16:27:08 -0500 [thread overview]
Message-ID: <ZZh0LKpkrVdoU0tH@redhat.com> (raw)
In-Reply-To: <ZZhtU0IxUycpLGJe@casper.infradead.org>
On Fri, Jan 05, 2024 at 08:57:55PM +0000, Matthew Wilcox wrote:
> On Fri, Jan 05, 2024 at 03:41:48PM -0500, Vivek Goyal wrote:
> > On Fri, Jan 05, 2024 at 08:21:00PM +0000, Matthew Wilcox wrote:
> > > On Fri, Jan 05, 2024 at 03:17:19PM -0500, Vivek Goyal wrote:
> > > > On Fri, Jan 05, 2024 at 06:53:05PM +0800, Hou Tao wrote:
> > > > > From: Hou Tao <houtao1@huawei.com>
> > > > >
> > > > > When invoking virtio_fs_enqueue_req() through kworker, both the
> > > > > allocation of the sg array and the bounce buffer still use GFP_ATOMIC.
> > > > > Considering the size of both the sg array and the bounce buffer may be
> > > > > greater than PAGE_SIZE, use GFP_NOFS instead of GFP_ATOMIC to lower the
> > > > > possibility of memory allocation failure.
> > > > >
> > > >
> > > > What's the practical benefit of this patch. Looks like if memory
> > > > allocation fails, we keep retrying at interval of 1ms and don't
> > > > return error to user space.
> > >
> > > You don't deplete the atomic reserves unnecessarily?
> >
> > Sounds reasonable.
> >
> > With GFP_NOFS specificed, can we still get -ENOMEM? Or this will block
> > indefinitely till memory can be allocated.
>
> If you need the "loop indefinitely" behaviour, that's
> GFP_NOFS | __GFP_NOFAIL. If you're actually doing something yourself
> which can free up memory, this is a bad choice. If you're just sleeping
> and retrying, you might as well have the MM do that for you.
I probably don't want to wait indefinitely. There might be some cases
where I might want to return error to user space. For example, if
virtiofs device has been hot-unplugged, then there is no point in
waiting indefinitely for memory allocation. Even if memory was allocated,
soon we will return error to user space with -ENOTCONN.
We are currently not doing that check after memory allocation failure but
we probably could as an optimization.
So this patch looks good to me as it is. Thanks Hou Tao.
Reviewed-by: Vivek Goyal <vgoyal@redhat.com>
Thanks
Vivek
next prev parent reply other threads:[~2024-01-05 21:27 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-05 10:53 [PATCH v2] virtiofs: use GFP_NOFS when enqueuing request through kworker Hou Tao
2024-01-05 20:17 ` Vivek Goyal
2024-01-05 20:21 ` Matthew Wilcox
2024-01-05 20:41 ` Vivek Goyal
2024-01-05 20:57 ` Matthew Wilcox
2024-01-05 21:27 ` Vivek Goyal [this message]
2024-01-06 6:26 ` Hou Tao
2024-01-06 2:48 ` Hou Tao
2024-01-08 15:48 ` Benjamin Coddington
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZZh0LKpkrVdoU0tH@redhat.com \
--to=vgoyal@redhat.com \
--cc=houtao1@huawei.com \
--cc=houtao@huaweicloud.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=stefanha@redhat.com \
--cc=virtualization@lists.linux.dev \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox