From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mike Snitzer Subject: Re: [PATCH 08/12] dm: Fix a race condition related to stopping and starting queues Date: Thu, 27 Oct 2016 10:01:56 -0400 Message-ID: <20161027140155.GB16816@redhat.com> References: <28b3e91c-018a-0dbd-8ca9-0a7994a97a5d@sandisk.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <28b3e91c-018a-0dbd-8ca9-0a7994a97a5d-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org> Sender: linux-rdma-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Bart Van Assche Cc: Jens Axboe , Christoph Hellwig , James Bottomley , "Martin K. Petersen" , Doug Ledford , Keith Busch , Ming Lei , Laurence Oberman , "linux-block-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "linux-scsi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "linux-nvme-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org" List-Id: linux-scsi@vger.kernel.org On Wed, Oct 26 2016 at 6:54pm -0400, Bart Van Assche wrote: > Ensure that all ongoing dm_mq_queue_rq() and dm_mq_requeue_request() > calls have stopped before setting the "queue stopped" flag. This > allows to remove the "queue stopped" test from dm_mq_queue_rq() and > dm_mq_requeue_request(). This patch fixes a race condition because > dm_mq_queue_rq() is called without holding the queue lock and hence > BLK_MQ_S_STOPPED can be set at any time while dm_mq_queue_rq() is > in progress. This patch prevents that the following hang occurs > sporadically when using dm-mq: > > INFO: task systemd-udevd:10111 blocked for more than 480 seconds. > Call Trace: > [] schedule+0x37/0x90 > [] schedule_timeout+0x27f/0x470 > [] io_schedule_timeout+0x9f/0x110 > [] bit_wait_io+0x16/0x60 > [] __wait_on_bit_lock+0x49/0xa0 > [] __lock_page+0xb9/0xc0 > [] truncate_inode_pages_range+0x3e0/0x760 > [] truncate_inode_pages+0x10/0x20 > [] kill_bdev+0x30/0x40 > [] __blkdev_put+0x71/0x360 > [] blkdev_put+0x49/0x170 > [] blkdev_close+0x20/0x30 > [] __fput+0xe8/0x1f0 > [] ____fput+0x9/0x10 > [] task_work_run+0x83/0xb0 > [] do_exit+0x3ee/0xc40 > [] do_group_exit+0x4b/0xc0 > [] get_signal+0x2ca/0x940 > [] do_signal+0x23/0x660 > [] exit_to_usermode_loop+0x73/0xb0 > [] syscall_return_slowpath+0xb0/0xc0 > [] entry_SYSCALL_64_fastpath+0xa6/0xa8 > > Signed-off-by: Bart Van Assche > Reviewed-by: Hannes Reinecke > Reviewed-by: Johannes Thumshirn > Reviewed-by: Christoph Hellwig > Cc: Mike Snitzer Acked-by: Mike Snitzer -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html