From: Alan Stern <stern@rowland.harvard.edu>
To: "Gaël PORTAY" <gael.portay@collabora.com>
Cc: linux-mm@kvack.org, usb-storage@lists.one-eyed-alien.net
Subject: Re: cma: deadlock using usb-storage and fs
Date: Mon, 17 Dec 2018 10:45:17 -0500 (EST) [thread overview]
Message-ID: <Pine.LNX.4.44L0.1812171038300.1630-100000@iolanthe.rowland.org> (raw)
In-Reply-To: <20181216222117.v5bzdfdvtulv2t54@archlinux.localdomain>
On Sun, 16 Dec 2018, Gaël PORTAY wrote:
> Dear kernel hackers,
>
> I faced a deadlock in CMA (using usb-storage and FAT) between two tasks that
> want to allocate CMA. All task involved are in D-state. I am running 4.19.1
> mainline on an imx6q platform.
>
> My understanding of that issue is as follow:
>
> The first task gets in cma_alloc(), acquires the mutex, triggers page
> migrations and yields.
...
> The second task wants to writeback/flush the pages through USB, which, I
> assume, is due to the page migration. The usb-storage triggers a CMA allocation
> but get locked in cma_alloc since the first task hold the mutex (It is a FAT
> formatted partition, if it helps).
>
> usb-storage D 0 349 2 0x00000000
> Backtrace:
...
> [<bf1c7550>] (usb_sg_wait [usbcore]) from [<bf2bd618>] (usb_stor_bulk_transfer_sglist.part.2+0x80/0xdc [usb_storage]) r9:0001e000 r8:eca594ac r7:0001e000 r6:c0008200 r5:eca59514 r4:eca59488
It looks like there is a logical problem in the CMA allocator. The
call in usb_sg_wait() specifies GFP_NOIO, which is supposed to prevent
allocations from blocking on any I/O operations. Therefore we
shouldn't be waiting for the CMA mutex.
Perhaps the CMA allocator needs to drop the mutex while doing
writebacks/flushes, or perhaps it needs to be reorganized some other
way. I don't know anything about it.
Does the CMA code have any maintainers who might need to know about
this, or is it all handled by the MM maintainers?
Alan Stern
next prev parent reply other threads:[~2018-12-17 15:45 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-16 22:21 Gaël PORTAY
2018-12-17 15:45 ` Alan Stern [this message]
2018-12-17 18:29 ` [usb-storage] " Gaël PORTAY
2018-12-17 21:57 ` Laura Abbott
2018-12-18 19:42 ` Mike Kravetz
2018-12-18 21:14 ` Laura Abbott
2018-12-27 19:29 ` Gaël PORTAY
2018-12-27 19:29 ` Gaël PORTAY
2019-01-07 18:13 ` Gaël PORTAY
2019-01-07 18:13 ` Gaël PORTAY
2019-01-08 2:06 ` Mike Kravetz
2019-01-11 13:55 ` Gaël PORTAY
2019-01-11 13:55 ` Gaël PORTAY
2019-01-14 23:47 ` Mike Kravetz
2019-01-03 18:54 ` Gaël PORTAY
2019-01-03 21:56 ` Gaël PORTAY
2019-01-03 21:56 ` Gaël PORTAY
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=Pine.LNX.4.44L0.1812171038300.1630-100000@iolanthe.rowland.org \
--to=stern@rowland.harvard.edu \
--cc=gael.portay@collabora.com \
--cc=linux-mm@kvack.org \
--cc=usb-storage@lists.one-eyed-alien.net \
/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