From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752262AbdHPSqq convert rfc822-to-8bit (ORCPT ); Wed, 16 Aug 2017 14:46:46 -0400 Received: from mx1.redhat.com ([209.132.183.28]:47370 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751765AbdHPSqo (ORCPT ); Wed, 16 Aug 2017 14:46:44 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 33192745AE Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=longman@redhat.com Subject: Re: [PATCH] blktrace: Fix potentail deadlock between delete & sysfs ops To: Steven Rostedt Cc: Jens Axboe , Jeff Layton , "J. Bruce Fields" , Ingo Molnar , linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org References: <1502384553-14442-1-git-send-email-longman@redhat.com> <20170815191145.3c95680e@gandalf.local.home> <6fa9f560-e1c2-f164-779f-aeefc5aa7017@redhat.com> <20170816141749.6c11d14c@gandalf.local.home> From: Waiman Long Organization: Red Hat Message-ID: <4841e079-c518-cdff-2fbd-661a9ef36722@redhat.com> Date: Wed, 16 Aug 2017 14:46:42 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 In-Reply-To: <20170816141749.6c11d14c@gandalf.local.home> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT Content-Language: en-US X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Wed, 16 Aug 2017 18:46:44 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08/16/2017 02:17 PM, Steven Rostedt wrote: > On Wed, 16 Aug 2017 14:14:36 -0400 > Waiman Long wrote: > >>> You also just turned the mutex into a spinlock. What happens if we just >>> preempted the owner of bdev->bd_mutex and are an RT task with higher >>> priority? This will turn into a live lock. >>> >>>> + schedule(); >>>> + } >>>> >> That is OK because I used schedule() instead of cpu_relax() for >> inserting delay. > Please explain to me how that is OK? schedule is a nop if the current > task is the highest priority task running, and it preempted the owner > of the lock. Nothing will actually schedule. > > -- Steve I haven't been thinking about RT tasks. You are right that it can be a problem in this case. I think I will have to revert back to use mutex_lock() if a RT task is running. Though in this case, the lock inversion problem will still be there. However, it is highly unlikely that a RT task will need to read write the block trace sysfs files. Thanks for the input. Cheers, Longman