Re: [dm-devel] [PATCH 7/7] dm-mpath: Fix a race condition in __multipath_map()

2016-11-23 Thread Mike Snitzer
On Wed, Nov 23 2016 at 1:28pm -0500, Bart Van Assche wrote: > On 11/22/2016 07:16 PM, Mike Snitzer wrote: > >Anyway, this _untested_ patch should hopefully resolve the 'all_blk_mq' > >inconsistency you saw: > > > >diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c > >index 8b013ea..8ce81

Re: [dm-devel] [PATCH 7/7] dm-mpath: Fix a race condition in __multipath_map()

2016-11-23 Thread Bart Van Assche
On 11/22/2016 07:16 PM, Mike Snitzer wrote: Anyway, this _untested_ patch should hopefully resolve the 'all_blk_mq' inconsistency you saw: diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c index 8b013ea..8ce81d0 100644 --- a/drivers/md/dm-table.c +++ b/drivers/md/dm-table.c @@ -924,12 +

Re: [dm-devel] [PATCH 7/7] dm-mpath: Fix a race condition in __multipath_map()

2016-11-22 Thread Mike Snitzer
On Tue, Nov 22 2016 at 7:48P -0500, Mike Snitzer wrote: > But regardless, what certainly needs fixing is the inconsistency of > inheriting DM_TYPE_MQ_REQUEST_BASED but not setting all_blk_mq to true > (all_blk_mq == true is implied by DM_TYPE_MQ_REQUEST_BASED). > > I'm now questioning why we e

Re: [dm-devel] [PATCH 7/7] dm-mpath: Fix a race condition in __multipath_map()

2016-11-22 Thread Mike Snitzer
On Tue, Nov 22 2016 at 6:47pm -0500, Bart Van Assche wrote: > On 11/21/2016 04:34 PM, Mike Snitzer wrote: > >But you WARN_ON_ONCE(clone && q->mq_ops) will trigger with sq-on-mq. > > Hello Mike, > > This behavior is indeed triggered by the sq-on-mq test. After having > added the following code

Re: [dm-devel] [PATCH 7/7] dm-mpath: Fix a race condition in __multipath_map()

2016-11-22 Thread Bart Van Assche
On 11/21/2016 04:34 PM, Mike Snitzer wrote: But you WARN_ON_ONCE(clone && q->mq_ops) will trigger with sq-on-mq. Hello Mike, This behavior is indeed triggered by the sq-on-mq test. After having added the following code in __bind(): if (old_map && dm_table_all_blk_mq_devi

Re: [dm-devel] [PATCH 7/7] dm-mpath: Fix a race condition in __multipath_map()

2016-11-21 Thread Mike Snitzer
On Mon, Nov 21 2016 at 6:57pm -0500, Bart Van Assche wrote: > On 11/21/2016 03:43 PM, Mike Snitzer wrote: > >Shouldn't be possible. The previous stacktrace you shared clearly > >showed that the DM mpath request_queue was using blk-mq (dm_mq_queue_rq > >was in the stack). > > > >Whereas the stac

Re: [dm-devel] [PATCH 7/7] dm-mpath: Fix a race condition in __multipath_map()

2016-11-21 Thread Bart Van Assche
On 11/21/2016 03:43 PM, Mike Snitzer wrote: Shouldn't be possible. The previous stacktrace you shared clearly showed that the DM mpath request_queue was using blk-mq (dm_mq_queue_rq was in the stack). Whereas the stacktrace above is clearly the old request_fn interface. I'm unaware of how the

Re: [dm-devel] [PATCH 7/7] dm-mpath: Fix a race condition in __multipath_map()

2016-11-21 Thread Mike Snitzer
On Mon, Nov 21 2016 at 4:44pm -0500, Bart Van Assche wrote: > On 11/15/2016 04:37 PM, Mike Snitzer wrote: > > On Tue, Nov 15 2016 at 6:35pm -0500, > > Bart Van Assche wrote: > > > >> If a single-queue dm device is stacked on top of multi-queue block > >> devices and map_tio_request() is calle

Re: [dm-devel] [PATCH 7/7] dm-mpath: Fix a race condition in __multipath_map()

2016-11-21 Thread Bart Van Assche
On 11/15/2016 04:37 PM, Mike Snitzer wrote: > On Tue, Nov 15 2016 at 6:35pm -0500, > Bart Van Assche wrote: > >> If a single-queue dm device is stacked on top of multi-queue block >> devices and map_tio_request() is called while there are no paths then >> the request will be prepared for a singl

Re: [dm-devel] [PATCH 7/7] dm-mpath: Fix a race condition in __multipath_map()

2016-11-15 Thread Mike Snitzer
On Tue, Nov 15 2016 at 8:08pm -0500, Bart Van Assche wrote: > On 11/15/2016 05:01 PM, Mike Snitzer wrote: > >On Tue, Nov 15 2016 at 7:40pm -0500, > >Bart Van Assche wrote: > >>Are you aware that dm_table_determine_type() sets "all_blk_mq" to > >>false if there are no paths, even if the dm devi

Re: [dm-devel] [PATCH 7/7] dm-mpath: Fix a race condition in __multipath_map()

2016-11-15 Thread Bart Van Assche
On 11/15/2016 05:01 PM, Mike Snitzer wrote: On Tue, Nov 15 2016 at 7:40pm -0500, Bart Van Assche wrote: Are you aware that dm_table_determine_type() sets "all_blk_mq" to false if there are no paths, even if the dm device is in blk-mq mode? That shouldn't matter. Once the type is established

Re: [dm-devel] [PATCH 7/7] dm-mpath: Fix a race condition in __multipath_map()

2016-11-15 Thread Mike Snitzer
On Tue, Nov 15 2016 at 7:40pm -0500, Bart Van Assche wrote: > On 11/15/2016 04:37 PM, Mike Snitzer wrote: > >On Tue, Nov 15 2016 at 6:35pm -0500, > >Bart Van Assche wrote: > >>If a single-queue dm device is stacked on top of multi-queue block > >>devices and map_tio_request() is called while t

Re: [dm-devel] [PATCH 7/7] dm-mpath: Fix a race condition in __multipath_map()

2016-11-15 Thread Bart Van Assche
On 11/15/2016 04:37 PM, Mike Snitzer wrote: On Tue, Nov 15 2016 at 6:35pm -0500, Bart Van Assche wrote: If a single-queue dm device is stacked on top of multi-queue block devices and map_tio_request() is called while there are no paths then the request will be prepared for a single-queue path.

Re: [dm-devel] [PATCH 7/7] dm-mpath: Fix a race condition in __multipath_map()

2016-11-15 Thread Mike Snitzer
On Tue, Nov 15 2016 at 6:35pm -0500, Bart Van Assche wrote: > If a single-queue dm device is stacked on top of multi-queue block > devices and map_tio_request() is called while there are no paths then > the request will be prepared for a single-queue path. If a path is > added after a request wa

[dm-devel] [PATCH 7/7] dm-mpath: Fix a race condition in __multipath_map()

2016-11-15 Thread Bart Van Assche
If a single-queue dm device is stacked on top of multi-queue block devices and map_tio_request() is called while there are no paths then the request will be prepared for a single-queue path. If a path is added after a request was prepared and before __multipath_map() is called return DM_MAPIO_REQUE