From: Hao Xu <hao.xu@linux.dev>
To: Ammar Faizi <ammarfaizi2@gnuweeb.org>
Cc: Jens Axboe <axboe@kernel.dk>,
Pavel Begunkov <asml.silence@gmail.com>,
Wanpeng Li <wanpengli@tencent.com>,
Linux Fsdevel Mailing List <linux-fsdevel@vger.kernel.org>,
io-uring Mailing List <io-uring@vger.kernel.org>
Subject: Re: [PATCH 07/11] io_uring: add new api to register fixed workers
Date: Mon, 12 Jun 2023 21:46:33 +0800 [thread overview]
Message-ID: <f3bff638-ab76-328e-eb42-280ed42e0b27@linux.dev> (raw)
In-Reply-To: <ZIMkGh3kI0tfoxxp@biznet-home.integral.gnuweeb.org>
Hi Ammar,
On 6/9/23 21:07, Ammar Faizi wrote:
> On Fri, Jun 09, 2023 at 08:20:27PM +0800, Hao Xu wrote:
>> + rcu_read_lock();
>> +
>> + for (i = 0; i < IO_WQ_ACCT_NR; i++) {
>> + unsigned int nr = count[i].nr_workers;
>> +
>> + acct = &wq->acct[i];
>> + acct->fixed_nr = nr;
>> + acct->fixed_workers = kcalloc(nr, sizeof(struct io_worker *),
>> + GFP_KERNEL);
>> + if (!acct->fixed_workers) {
>> + ret = -ENOMEM;
>> + break;
>> + }
>> +
>> + for (j = 0; j < nr; j++) {
>> + struct io_worker *worker =
>> + io_wq_create_worker(wq, acct, true);
>> + if (IS_ERR(worker)) {
>> + ret = PTR_ERR(worker);
>> + break;
>> + }
>> + acct->fixed_workers[j] = worker;
>> + }
>> + if (j < nr)
>> + break;
>> + }
>> + rcu_read_unlock();
>
> This looks wrong. kcalloc() with GFP_KERNEL may sleep. Note that you're
> not allowed to sleep inside the RCU read lock critical section.
>
> Using GFP_KERNEL implies GFP_RECLAIM, which means that direct reclaim
> may be triggered under memory pressure; the calling context must be
> allowed to sleep.
>
I think you are right, I'll fix it in v2.
Hi Jens, ask a question about this: I saw same rcu_read_lock() in
io_wq_max_workers(), but what is it really protect?
Regards,
Hao
next prev parent reply other threads:[~2023-06-12 13:46 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-09 12:20 [RFC PATCH 00/11] fixed worker Hao Xu
2023-06-09 12:20 ` [PATCH 01/11] io-wq: fix worker counting after worker received exit signal Hao Xu
2023-07-05 12:10 ` Pavel Begunkov
2023-06-09 12:20 ` [PATCH 02/11] io-wq: add a new worker flag to indicate worker exit Hao Xu
2023-07-05 12:16 ` Pavel Begunkov
2023-06-09 12:20 ` [PATCH 03/11] io-wq: add a new type io-wq worker Hao Xu
2023-07-05 12:26 ` Pavel Begunkov
2023-06-09 12:20 ` [PATCH 04/11] io-wq: add fixed worker members in io_wq_acct Hao Xu
2023-06-09 12:20 ` [PATCH 05/11] io-wq: add a new parameter for creating a new fixed worker Hao Xu
2023-07-05 12:54 ` Pavel Begunkov
2023-06-09 12:20 ` [PATCH 06/11] io-wq: return io_worker after successful inline worker creation Hao Xu
2023-07-05 13:05 ` Pavel Begunkov
2023-06-09 12:20 ` [PATCH 07/11] io_uring: add new api to register fixed workers Hao Xu
2023-06-09 13:07 ` Ammar Faizi
2023-06-12 13:46 ` Hao Xu [this message]
2023-06-09 13:54 ` Ammar Faizi
2023-06-12 13:47 ` Hao Xu
2023-07-05 13:10 ` Pavel Begunkov
2023-06-09 12:20 ` [PATCH 08/11] io_uring: add function to unregister " Hao Xu
2023-07-05 13:13 ` Pavel Begunkov
2023-06-09 12:20 ` [PATCH 09/11] io-wq: add strutures to allow to wait fixed workers exit Hao Xu
2023-06-09 12:20 ` [PATCH 10/11] io-wq: distinguish fixed worker by its name Hao Xu
2023-07-05 13:15 ` Pavel Begunkov
2023-06-09 12:20 ` [PATCH 11/11] io_uring: add IORING_SETUP_FIXED_WORKER_ONLY and its friend Hao Xu
2023-07-05 13:17 ` Pavel Begunkov
2023-06-20 12:35 ` [RFC PATCH 00/11] fixed worker Hao Xu
2023-06-28 9:19 ` Hao Xu
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=f3bff638-ab76-328e-eb42-280ed42e0b27@linux.dev \
--to=hao.xu@linux.dev \
--cc=ammarfaizi2@gnuweeb.org \
--cc=asml.silence@gmail.com \
--cc=axboe@kernel.dk \
--cc=io-uring@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=wanpengli@tencent.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.