Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753139Ab0DOHM2 (ORCPT ); Thu, 15 Apr 2010 03:12:28 -0400 Received: from moutng.kundenserver.de ([212.227.126.171]:63336 "EHLO moutng.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751926Ab0DOHM0 (ORCPT ); Thu, 15 Apr 2010 03:12:26 -0400 From: Arnd Bergmann To: dgilbert@interlog.com Subject: Re: [PATCH 1/2] [RFC] block: replace BKL with global mutex Date: Thu, 15 Apr 2010 09:11:45 +0200 User-Agent: KMail/1.13.2 (Linux/2.6.31-19-generic; KDE/4.4.2; x86_64; ; ) Cc: Jens Axboe , Vivek Goyal , Tejun Heo , Frederic Weisbecker , FUJITA Tomonori , "Martin K. Petersen" , Steven Rostedt , Ingo Molnar , John Kacur , linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org References: <1271277384-7627-1-git-send-email-arnd@arndb.de> <4BC64633.6010407@interlog.com> In-Reply-To: <4BC64633.6010407@interlog.com> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201004150911.45842.arnd@arndb.de> X-Provags-ID: V01U2FsdGVkX1+6QL/rQyfMf/iGe6mpHCmPNrsU+zZDYPM0Vzu 8/yVToEKJUaGceLNPOIOxNitZ5NL9oRp/DAFYWnTtcYnF2FqVC k0T+taUbE1WjeNhdGdIAw== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1650 Lines: 47 On Thursday 15 April 2010 00:48:19 Douglas Gilbert wrote: > > @@ -1322,7 +1331,8 @@ static const struct file_operations sg_fops = { > > .read = sg_read, > > .write = sg_write, > > .poll = sg_poll, > > - .ioctl = sg_ioctl, > > + .llseek = generic_file_llseek, > > The sg driver has no seek semantics on its read() and > write() calls. And sg_open() calls nonseekable_open(). So > .llseek = no_llseek, > seems more appropriate. Ok, I missed the nonseekable_open here and assumed someone might be calling seek on it. I'll use no_llseek then, or just leave it alone. > > + .unlocked_ioctl = sg_unlocked_ioctl, > > #ifdef CONFIG_COMPAT > > .compat_ioctl = sg_compat_ioctl, > > #endif > > And I just checked st.c (SCSI tape driver) and it calls > lock_kernel() . Ah, good point. So even if the st driver does not need any locking against the block layer, it might need to lock its ioctl against sg. The most simple solution for this would be to let sg take both blkdev_mutex and the BKL, which of course feels like a step backwards. A better way is to get rid of the BKL in sg, which requires a better understanding of what it's actually protecting. It only gets it in the open and ioctl functions, which is a result of the pushdown from the respective file operations. Chances are that it's not needed at all, but that's really hard to tell. Can you shed some more light on this? Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/