Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp1485590ybc; Tue, 19 Nov 2019 22:25:15 -0800 (PST) X-Google-Smtp-Source: APXvYqwR0DNo8mxsLbyDFVSKgrAA1MrkyQciDG4W+vyA98v6pSk4SkuU5AsWh4X9kt3aKwbpmBVV X-Received: by 2002:a17:906:6809:: with SMTP id k9mr3011535ejr.266.1574231115543; Tue, 19 Nov 2019 22:25:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574231115; cv=none; d=google.com; s=arc-20160816; b=PRSmBd6CGDw4ofZoX2SPQ205FTWA99uq4+9YfWq9okfGdJq/oHhTfW97PWcTY6xwd0 6CbtmsRTaMA+uNxjX6QVlMxTTqOQbpGNb9OvM+nGsRc2swZJJWCLj4Pb/XSJdc3hrBYu pKM4+PAtKlXXruL65hm6ANY/Z6/R55QLlbeyFRx5089BBm5JXh3EASuX83m5CFanwg3X 9xkhWH6xc+coqyZDhzonlRncUYCStD+mZYDvpmr9IWBEO44UEcUaMMbATWoCleoYiUkk n9QSc8oPyMY9Onwhe9EnC93COWXwY8DRRedMd5Emk6lQGAsN/NRGLQZN5uq9l2Ys4vBT +ZYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=3rIo71c070ClWh4gRodTKsEwPChjqWz/vyxycSDpOOA=; b=bVJq5BrRd2/pHU6KgW/2JWfjcvzgZVnb7nEOGd41XrtwP6xFQz4GzK2+rtJtQcfr5M kYkRd6oGReFz+XGgN4/Swr5iHASPC87WHb57xX/CTT45oCL5MR7xOqjoYhuAR8opNUm3 DR4YXihPzvRu5zEh93Eps85X6h0gjbxN0bEWxKVf9cXUhxwAQzY8p0tZQd3VzODZdhqe yfFTXdENpDJEWaS2blJ16/OMTmlaaRteBKYMUPoeHErWdRt8rPV1FpiAMCQG4AO+Ah9X Tars4MCZtX0lwtAvjG4HjFh4FmQL3U2WFG3CP0kYwlM7Zd3K+FlJ6vAvaVaL+EtJQC0P TbVA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p8si15592120edq.55.2019.11.19.22.24.51; Tue, 19 Nov 2019 22:25:15 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727450AbfKTGXi (ORCPT + 99 others); Wed, 20 Nov 2019 01:23:38 -0500 Received: from mga06.intel.com ([134.134.136.31]:49722 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726044AbfKTGXh (ORCPT ); Wed, 20 Nov 2019 01:23:37 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Nov 2019 22:23:37 -0800 X-IronPort-AV: E=Sophos;i="5.69,220,1571727600"; d="scan'208";a="204625878" Received: from iweiny-desk2.sc.intel.com (HELO localhost) ([10.3.52.157]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Nov 2019 22:23:37 -0800 From: ira.weiny@intel.com To: Andrew Morton Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Ira Weiny Subject: [PATCH] mm: Clean up filemap_write_and_wait() Date: Tue, 19 Nov 2019 22:23:34 -0800 Message-Id: <20191120062334.24687-1-ira.weiny@intel.com> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ira Weiny At some point filemap_write_and_wait() and filemap_write_and_wait_range() got the exact same implementation with the exception of the range being specified in *_range() Similar to other functions in fs.h which call *_range(..., 0, LLONG_MAX), change filemap_write_and_wait() to be a static inline which calls filemap_write_and_wait_range() Signed-off-by: Ira Weiny --- include/linux/fs.h | 6 +++++- mm/filemap.c | 34 ++++++---------------------------- 2 files changed, 11 insertions(+), 29 deletions(-) diff --git a/include/linux/fs.h b/include/linux/fs.h index 1175815da3df..1007742711e5 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2745,7 +2745,6 @@ static inline int filemap_fdatawait(struct address_space *mapping) extern bool filemap_range_has_page(struct address_space *, loff_t lstart, loff_t lend); -extern int filemap_write_and_wait(struct address_space *mapping); extern int filemap_write_and_wait_range(struct address_space *mapping, loff_t lstart, loff_t lend); extern int __filemap_fdatawrite_range(struct address_space *mapping, @@ -2755,6 +2754,11 @@ extern int filemap_fdatawrite_range(struct address_space *mapping, extern int filemap_check_errors(struct address_space *mapping); extern void __filemap_set_wb_err(struct address_space *mapping, int err); +static inline int filemap_write_and_wait(struct address_space *mapping) +{ + return filemap_write_and_wait_range(mapping, 0, LLONG_MAX); +} + extern int __must_check file_fdatawait_range(struct file *file, loff_t lstart, loff_t lend); extern int __must_check file_check_and_advance_wb_err(struct file *file); diff --git a/mm/filemap.c b/mm/filemap.c index 1f5731768222..f4d1a4fb63a6 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -632,33 +632,6 @@ static bool mapping_needs_writeback(struct address_space *mapping) return mapping->nrpages; } -int filemap_write_and_wait(struct address_space *mapping) -{ - int err = 0; - - if (mapping_needs_writeback(mapping)) { - err = filemap_fdatawrite(mapping); - /* - * Even if the above returned error, the pages may be - * written partially (e.g. -ENOSPC), so we wait for it. - * But the -EIO is special case, it may indicate the worst - * thing (e.g. bug) happened, so we avoid waiting for it. - */ - if (err != -EIO) { - int err2 = filemap_fdatawait(mapping); - if (!err) - err = err2; - } else { - /* Clear any previously stored errors */ - filemap_check_errors(mapping); - } - } else { - err = filemap_check_errors(mapping); - } - return err; -} -EXPORT_SYMBOL(filemap_write_and_wait); - /** * filemap_write_and_wait_range - write out & wait on a file range * @mapping: the address_space for the pages @@ -680,7 +653,12 @@ int filemap_write_and_wait_range(struct address_space *mapping, if (mapping_needs_writeback(mapping)) { err = __filemap_fdatawrite_range(mapping, lstart, lend, WB_SYNC_ALL); - /* See comment of filemap_write_and_wait() */ + /* + * Even if the above returned error, the pages may be + * written partially (e.g. -ENOSPC), so we wait for it. + * But the -EIO is special case, it may indicate the worst + * thing (e.g. bug) happened, so we avoid waiting for it. + */ if (err != -EIO) { int err2 = filemap_fdatawait_range(mapping, lstart, lend); -- 2.21.0