From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoph Hellwig Subject: Re: [PATCH 2/2] xfs: fix splice/direct-IO deadlock Date: Wed, 28 Nov 2012 11:07:36 -0500 Message-ID: <20121128160736.GA14888@infradead.org> References: <1354068768-4316-1-git-send-email-david@fromorbit.com> <1354068768-4316-3-git-send-email-david@fromorbit.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com To: Dave Chinner Return-path: Received: from 173-166-109-252-newengland.hfc.comcastbusiness.net ([173.166.109.252]:60289 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751062Ab2K1QHh (ORCPT ); Wed, 28 Nov 2012 11:07:37 -0500 Content-Disposition: inline In-Reply-To: <1354068768-4316-3-git-send-email-david@fromorbit.com> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Wed, Nov 28, 2012 at 01:12:48PM +1100, Dave Chinner wrote: > From: Dave Chinner > > lockdep reports splice vs direct-io write lock inversions due to > generic_file_splice_write() taking the inode->i_mutex inside > XFS_IOLOCK_EXCL context. These lock contexts are inverted, hence can > deadlock. Remove the XFS_IOLOCK_EXCL locking context from the outer > function and drive it inwards to the actor function that only locks > the inode when the lock is really needed, punctuation? Otherwise the patch looks fine, but I'd love to understand why the generic code thes te I_MUTEX_CHILD annotation and we can get away without it. Also can you add a testcase for this to xfstests?