From mboxrd@z Thu Jan 1 00:00:00 1970 From: chris.mason@oracle.com Subject: (unknown) Date: Thu, 21 Dec 2006 13:56:05 -0700 Message-ID: <200612212056.kBLKPBFM011611@rgmgw2.us.oracle.com> Return-path: Received: from agminet02.oracle.com ([141.146.126.229]:42281 "EHLO agminet02.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1423100AbWLUVCg (ORCPT ); Thu, 21 Dec 2006 16:02:36 -0500 Received: from agminet01.oracle.com (agminet01.oracle.com [141.146.126.228]) by agminet02.oracle.com (Switch-3.2.4/Switch-3.1.7) with ESMTP id kBLL2Yn0016810 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Thu, 21 Dec 2006 15:02:34 -0600 To: unlisted-recipients:; (no To-header on input) Sender: linux-fsdevel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org >>From chris.mason@oracle.com Thu Dec 21 15:35:04 2006 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [PATCH 7 of 8] Adapt XFS to the new blockdev_direct_IO calls X-Mercurial-Node: 3bd838f3dc060101c95ec82e6f66478a443120a7 Message-Id: <3bd838f3dc060101c95e.1166733303@opti.oraclecorp.com> In-Reply-To: Date: Thu, 21 Dec 2006 15:35:03 -0400 From: Chris Mason To: linux-fsdevel@vger.kernel.org, akpm@osdl.org, zach.brown@oracle.com XFS is changed to use blockdev_direct_IO flags instead of DIO_OWN_LOCKING. Signed-off-by: Chris Mason diff -r 5a06df98f46d -r 3bd838f3dc06 fs/xfs/linux-2.6/xfs_aops.c --- a/fs/xfs/linux-2.6/xfs_aops.c Thu Dec 21 15:31:31 2006 -0500 +++ b/fs/xfs/linux-2.6/xfs_aops.c Thu Dec 21 15:31:31 2006 -0500 @@ -1392,19 +1392,16 @@ xfs_vm_direct_IO( iocb->private = xfs_alloc_ioend(inode, IOMAP_UNWRITTEN); - if (rw == WRITE) { - ret = blockdev_direct_IO_own_locking(rw, iocb, inode, - iomap.iomap_target->bt_bdev, - iov, offset, nr_segs, - xfs_get_blocks_direct, - xfs_end_io_direct); - } else { - ret = blockdev_direct_IO_no_locking(rw, iocb, inode, - iomap.iomap_target->bt_bdev, - iov, offset, nr_segs, - xfs_get_blocks_direct, - xfs_end_io_direct); - } + /* + * ask DIO not to do any special locking for us, and to always + * pass create=1 to get_block on writes + */ + ret = blockdev_direct_IO_flags(rw, iocb, inode, + iomap.iomap_target->bt_bdev, + iov, offset, nr_segs, + xfs_get_blocks_direct, + xfs_end_io_direct, + DIO_CREATE); if (unlikely(ret != -EIOCBQUEUED && iocb->private)) xfs_destroy_ioend(iocb->private);