Re: [PATCH v3 2/6] PM / Runtime: introduce pm_runtime_set[get]_memalloc_noio()

From: Alan Stern
Date: Tue Oct 30 2012 - 12:54:23 EST


On Wed, 31 Oct 2012, Ming Lei wrote:

> On Tue, Oct 30, 2012 at 11:38 PM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote:
>
> >
> > Okay, I see your point. But acquiring the lock here doesn't solve the
> > problem. Suppose a thread is about to reset a USB mass-storage device.
> > It acquires the lock and sees that the noio flag is clear. But before
> > it can issue the reset, another thread sets the noio flag.
>
> If the USB mass-storage device is being reseted, the flag should be set
> already generally. If the flag is still unset, that means the disk/network
> device isn't added into system(or removed just now), so memory allocation
> with block I/O should be allowed during the reset. Looks it isn't one problem,
> isn't it?

As Oliver said, it can be a problem.

> > Lastly, pm_runtime_get_memalloc_noio always returns false when
> > CONFIG_PM_RUNTIME is disabled. But we still need to prevent I/O during
> > usb_reset_device even when there's no runtime PM. Maybe the simplest
> > answer is always to set noio during resets. That would also help with
> > the race described above.
>
> I have thought about this. IMO, pm_runtime_get_memalloc_noio should
> return true always if CONFIG_PM_RUNTIME is unset.

That's okay as long as the only user of pm_runtime_get_memalloc_noio
(apart from the runtime PM core) is usbcore.

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/