[dm-devel] [PATCH 1/2] dm-multipath: cleanup IO queueing after table load

Mike Snitzer snitzer at redhat.com
Thu Aug 14 02:46:15 UTC 2014


On Wed, Aug 13, 2014 at 2:53 PM, Benjamin Marzinski <bmarzins at redhat.com> wrote:
> Commit e809917735ebf1b9a56c24e877ce0d320baee2ec changed the code in
> multipath_busy that checked if a multipath device was initializing a path.
> It returned busy if queue_io was set on the device. However queue_io is set
> when the table is loaded, and as long as the device was busy, multipath_map
> wouldn't run to clear it upon receiving requsts. multipath_ioctl and
> reinstate_path were still able to clear queue_io. But if no paths were
> reinstated and the multipath device received no ioctls after the table
> reload, all requests to it would simply queue.
>
> This patch switches the multipath_busy code to check for a pending or in
> progress path initialization, without using queue_io.  This means incoming
> requests will allow multipath_map to initialize paths and clear queue_io.

This was already addressed with commit 7a7a3b45fe ("dm mpath: fix IO
hang due to logic bug in multipath_busy").

> This patch also changes __choose_pgpath to make it clear queue_io if there
> are no valid paths, since there are obviously no paths that can be
> initialized.

Can you elaborate on why this is needed?  If it still is then it needs
to be rebased.




More information about the dm-devel mailing list