Re: [PATCH] USB: core: hub: fix usb_hub worker blocking drain_all_pages() worker issue

From: 朱忠杰
Date: Sun Feb 05 2023 - 22:36:04 EST


Yes, this is a very special case.

It will happen only when disconnecting the mass storage if there are
too many files in the storage, and the scanning operation is running,
and the file system is not unmounted.
It looks like this issue should be fixed in the usb mass storage
driver, but I don't find an appropriate place.

On Fri, Feb 3, 2023 at 10:47 PM Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote:
>
> On Fri, Feb 03, 2023 at 03:28:19PM +0800, Zhu Zhongjie wrote:
> > From: Zhongjie Zhu <zhongjiezhu1@xxxxxxxxx>
> >
> > When disconnecting a usb mass storege, if there are a lot of inodes
> > like 10 thousands files need to be freed, the invalidate_inodes() will
> > run for a loog time to freeing all inodes, this will block other worker
> > to run in the cpu, so mark the usb_hub workqueue to WQ_CPU_INTENSIVE to
> > avoid this situation.
>
> Very infrequently this will happen. In the vast majority of cases, the
> usb_hub workqueue uses very little CPU time. Marking it
> WQ_CPU_INTENSIVE seems inappropriate.
>
> Alan Stern