From patchwork Tue Jun 21 21:34:52 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Trond Myklebust X-Patchwork-Id: 9191443 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 227E16075E for ; Tue, 21 Jun 2016 21:35:36 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 14ABA28342 for ; Tue, 21 Jun 2016 21:35:36 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0997B28383; Tue, 21 Jun 2016 21:35:36 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9D85028342 for ; Tue, 21 Jun 2016 21:35:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751709AbcFUVfc (ORCPT ); Tue, 21 Jun 2016 17:35:32 -0400 Received: from mail-io0-f195.google.com ([209.85.223.195]:33166 "EHLO mail-io0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751099AbcFUVf3 (ORCPT ); Tue, 21 Jun 2016 17:35:29 -0400 Received: by mail-io0-f195.google.com with SMTP id t74so3377359ioi.0 for ; Tue, 21 Jun 2016 14:35:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=ws+5DiVNCYUQ5YjVoPseo9nJokjjxqtkdFBsWtb+tHw=; b=EZ9Id7qA0t/bF6eGhqq1sSDf8ugLh4Kv1zZTkCJoO5SpZScXuwUfzhbjjJ9gkS/UKQ eCXuE8i7XYiyGlv9GkH4DrMI/OeGHXQcn6yFzSeXBnZP9hYsv65SlN6vaQ6NCJGFmaVR vmAFXAKcx80OgvzTSfnwyXUW8rHuCc2tb+KTnyPTW+EmNEsZ1wm69wRz5+S3q5Mjl91p HlNR3glohI+xJzAVYs+x3pk2BPhanlPln/4bumfJvvZTBHU859MLNyguUPPbtb24XMKM NMBFmkP8CFpN3WXYRubIEhQ4eOVYadFQnXAsly/k8urhE/F2x9kEQRb26cXvMXc2eLwU MW/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=ws+5DiVNCYUQ5YjVoPseo9nJokjjxqtkdFBsWtb+tHw=; b=Vwg9CDaeKUnZWrddfG4FaJtBd5RV8GWb0+5SmWScY51CK3vhtWL/60lhjeuL3TIU7r xVQPdfedMW1lBN9KdWON01PWWZIXOJUlcVPzJdFzpCeFBvw73chIW/ICZTc+SjtlnKHi 0xzA2ICzIWKHcAk+MkbmWyr7PoIHmttv3qA/Q3MyEOMtEx0T7b9/BpL6izO4lT9EqGJ7 p9H79xV77oShpelxxTZ4mUtPbCigCpsza+YA5clCAJuA/CilSEP+p5ljoa382ZlYTTCy xIXJimywMEQnOVRKoKr0c9ISLX7MsBlR/1TU9X8OfyF9JRHmUyrDKam54gHgeaMgDVpG m4Jw== X-Gm-Message-State: ALyK8tKSGYf6JlNkJ10Xc3nMfx952eXa//t6+cJqAJPLvj23nI7bTyg7Lqfw+hPxHv5+7Q== X-Received: by 10.107.52.133 with SMTP id b127mr36707528ioa.6.1466544928237; Tue, 21 Jun 2016 14:35:28 -0700 (PDT) Received: from leira.trondhjem.org.localdomain (c-68-49-162-121.hsd1.mi.comcast.net. [68.49.162.121]) by smtp.gmail.com with ESMTPSA id k4sm1684983iok.19.2016.06.21.14.35.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Jun 2016 14:35:27 -0700 (PDT) From: Trond Myklebust To: linux-nfs@vger.kernel.org Subject: [PATCH v2 11/12] NFS: Remove inode->i_dio_count from the NFS O_DIRECT code Date: Tue, 21 Jun 2016 17:34:52 -0400 Message-Id: <1466544893-12058-11-git-send-email-trond.myklebust@primarydata.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1466544893-12058-10-git-send-email-trond.myklebust@primarydata.com> References: <1466544893-12058-1-git-send-email-trond.myklebust@primarydata.com> <1466544893-12058-2-git-send-email-trond.myklebust@primarydata.com> <1466544893-12058-3-git-send-email-trond.myklebust@primarydata.com> <1466544893-12058-4-git-send-email-trond.myklebust@primarydata.com> <1466544893-12058-5-git-send-email-trond.myklebust@primarydata.com> <1466544893-12058-6-git-send-email-trond.myklebust@primarydata.com> <1466544893-12058-7-git-send-email-trond.myklebust@primarydata.com> <1466544893-12058-8-git-send-email-trond.myklebust@primarydata.com> <1466544893-12058-9-git-send-email-trond.myklebust@primarydata.com> <1466544893-12058-10-git-send-email-trond.myklebust@primarydata.com> Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Now that we can serialise O_DIRECT and write/truncate using the inode->i_rwsem, we no longer need inode->i_dio_count. Signed-off-by: Trond Myklebust --- fs/nfs/direct.c | 12 +++--------- fs/nfs/file.c | 2 -- fs/nfs/inode.c | 1 - 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c index 2333e9973802..92267316290a 100644 --- a/fs/nfs/direct.c +++ b/fs/nfs/direct.c @@ -385,11 +385,6 @@ static void nfs_direct_complete(struct nfs_direct_req *dreq, bool write) spin_unlock(&inode->i_lock); } - if (write) - nfs_zap_mapping(inode, inode->i_mapping); - - inode_dio_end(inode); - if (dreq->iocb) { long res = (long) dreq->error; if (!res) @@ -488,7 +483,6 @@ static ssize_t nfs_direct_read_schedule_iovec(struct nfs_direct_req *dreq, &nfs_direct_read_completion_ops); get_dreq(dreq); desc.pg_dreq = dreq; - inode_dio_begin(inode); while (iov_iter_count(iter)) { struct page **pagevec; @@ -540,7 +534,6 @@ static ssize_t nfs_direct_read_schedule_iovec(struct nfs_direct_req *dreq, * generic layer handle the completion. */ if (requested_bytes == 0) { - inode_dio_end(inode); nfs_direct_req_release(dreq); return result < 0 ? result : -EIO; } @@ -770,6 +763,7 @@ static void nfs_direct_commit_schedule(struct nfs_direct_req *dreq) static void nfs_direct_write_schedule_work(struct work_struct *work) { struct nfs_direct_req *dreq = container_of(work, struct nfs_direct_req, work); + struct inode *inode = dreq->inode; int flags = dreq->flags; dreq->flags = 0; @@ -781,6 +775,8 @@ static void nfs_direct_write_schedule_work(struct work_struct *work) nfs_direct_write_reschedule(dreq); break; default: + nfs_zap_mapping(inode, inode->i_mapping); + nfs_direct_complete(dreq, true); } } @@ -903,7 +899,6 @@ static ssize_t nfs_direct_write_schedule_iovec(struct nfs_direct_req *dreq, &nfs_direct_write_completion_ops); desc.pg_dreq = dreq; get_dreq(dreq); - inode_dio_begin(inode); NFS_I(inode)->write_io += iov_iter_count(iter); while (iov_iter_count(iter)) { @@ -964,7 +959,6 @@ static ssize_t nfs_direct_write_schedule_iovec(struct nfs_direct_req *dreq, * generic layer handle the completion. */ if (requested_bytes == 0) { - inode_dio_end(inode); nfs_direct_req_release(dreq); return result < 0 ? result : -EIO; } diff --git a/fs/nfs/file.c b/fs/nfs/file.c index b1dd7f2c64f4..fb7a1b0b6a20 100644 --- a/fs/nfs/file.c +++ b/fs/nfs/file.c @@ -276,7 +276,6 @@ nfs_file_fsync(struct file *file, loff_t start, loff_t end, int datasync) trace_nfs_fsync_enter(inode); - inode_dio_wait(inode); do { ret = filemap_write_and_wait_range(inode->i_mapping, start, end); if (ret != 0) @@ -364,7 +363,6 @@ start: /* * Wait for O_DIRECT to complete */ - inode_dio_wait(mapping->host); page = grab_cache_page_write_begin(mapping, index, flags); if (!page) diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index bd0390da3344..6bc65ffc3c6c 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c @@ -141,7 +141,6 @@ void nfs_evict_inode(struct inode *inode) int nfs_sync_inode(struct inode *inode) { - inode_dio_wait(inode); return nfs_wb_all(inode); } EXPORT_SYMBOL_GPL(nfs_sync_inode);