Received: by 10.223.185.116 with SMTP id b49csp710574wrg; Sat, 3 Mar 2018 05:58:18 -0800 (PST) X-Google-Smtp-Source: AG47ELsEMNXQ2Ta088+MTr5scnJUNL7GWmJbwvNY3ZxaMKDIYuwgXjZvAT7nqWUcZpgQsFj9TbYi X-Received: by 2002:a17:902:6b4c:: with SMTP id g12-v6mr8075722plt.363.1520085498580; Sat, 03 Mar 2018 05:58:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520085498; cv=none; d=google.com; s=arc-20160816; b=phBKmbY4cx2E5+M0CA1R1wCBCFFmkOAgeel0hpAy6LsZ4DP1P5mrmIge3qNIjX134C bECmwGtJmjx9U57EtoiHlsfgkcL2PYosNTVhJe6FjNiP4WrRqJAOdGiFCHFgVXkjvrDV RP6jVsK9aylJ+rV4ggREToYAY4tlp5f7uvN8NqIdw5JpiXTjSgL97bIlukkUCSpKgikt Lz01Nn7LQgyChhjNa8WC61x3W7EKTwafONVBnjWxiMOLrxcHY1wnwNPlYYngazGkyb3p Ra42gbuY6472YPIVnoedfH6GC8+JYAQz+3hrTGTA/5OnLSwzPpEg+QLv3B0KNIQWpCuE cdqQ== 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 :references:in-reply-to:date:cc:to:from:subject:message-id :dmarc-filter:arc-authentication-results; bh=kibhKAsKnHkaL1or9Zv1oRlIYn/yFWVU9UYJiD0PavQ=; b=Sl8tvMC695rrZNK8egxiZjpTu4lDrgSo5ie4uml79isN7Fb9jrZw/UZV2hAfziYOtp mnKBW2g3gxQJ7/ToEDV0FLz8jpfnxANKCa71/h8DUVOE0DHMW3XzF+kEJ72E1rhjlE7b /vBkzo533qsA5Oj9pMfL6k//drIiXT1jKQviZYFAMkRLi6wwUQT7I2q5e05nDKXEKic4 FSFeLYxTzoD61o8LnKMawsI4J3+cpH7AjE7kORb1n/iY8dZHACnp/+VUFUSCcsh66T/9 9c0qj/znrp1giP+EbXR8UgeC3Dd6w7/eh386DMlIKEcjI+JEMrwBJP3HGrHr/t79D3g7 Dlig== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e25si6701655pfn.82.2018.03.03.05.57.50; Sat, 03 Mar 2018 05:58:18 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751954AbeCCN4w (ORCPT + 99 others); Sat, 3 Mar 2018 08:56:52 -0500 Received: from mail.kernel.org ([198.145.29.99]:45010 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751847AbeCCN4v (ORCPT ); Sat, 3 Mar 2018 08:56:51 -0500 Received: from tleilax.poochiereds.net (cpe-71-70-156-158.nc.res.rr.com [71.70.156.158]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B742121783; Sat, 3 Mar 2018 13:56:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B742121783 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=jlayton@kernel.org Message-ID: <1520085408.4280.21.camel@kernel.org> Subject: Re: [PATCH v7 05/61] Export __set_page_dirty From: Jeff Layton To: Matthew Wilcox , Andrew Morton Cc: Matthew Wilcox , linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org Date: Sat, 03 Mar 2018 08:56:48 -0500 In-Reply-To: <20180219194556.6575-6-willy@infradead.org> References: <20180219194556.6575-1-willy@infradead.org> <20180219194556.6575-6-willy@infradead.org> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.26.5 (3.26.5-1.fc27) Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 2018-02-19 at 11:45 -0800, Matthew Wilcox wrote: > From: Matthew Wilcox > > XFS currently contains a copy-and-paste of __set_page_dirty(). Export > it from buffer.c instead. > > Signed-off-by: Matthew Wilcox > --- > fs/buffer.c | 3 ++- > fs/xfs/xfs_aops.c | 15 ++------------- > include/linux/mm.h | 1 + > 3 files changed, 5 insertions(+), 14 deletions(-) > > diff --git a/fs/buffer.c b/fs/buffer.c > index 9a73924db22f..0b487cdb7124 100644 > --- a/fs/buffer.c > +++ b/fs/buffer.c > @@ -594,7 +594,7 @@ EXPORT_SYMBOL(mark_buffer_dirty_inode); > * > * The caller must hold lock_page_memcg(). > */ > -static void __set_page_dirty(struct page *page, struct address_space *mapping, > +void __set_page_dirty(struct page *page, struct address_space *mapping, > int warn) > { > unsigned long flags; > @@ -608,6 +608,7 @@ static void __set_page_dirty(struct page *page, struct address_space *mapping, > } > spin_unlock_irqrestore(&mapping->tree_lock, flags); > } > +EXPORT_SYMBOL_GPL(__set_page_dirty); > > /* > * Add a page to the dirty page list. > diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c > index 9c6a830da0ee..31f2c4895a46 100644 > --- a/fs/xfs/xfs_aops.c > +++ b/fs/xfs/xfs_aops.c > @@ -1472,19 +1472,8 @@ xfs_vm_set_page_dirty( > newly_dirty = !TestSetPageDirty(page); > spin_unlock(&mapping->private_lock); > > - if (newly_dirty) { > - /* sigh - __set_page_dirty() is static, so copy it here, too */ > - unsigned long flags; > - > - spin_lock_irqsave(&mapping->tree_lock, flags); > - if (page->mapping) { /* Race with truncate? */ > - WARN_ON_ONCE(!PageUptodate(page)); > - account_page_dirtied(page, mapping); > - radix_tree_tag_set(&mapping->page_tree, > - page_index(page), PAGECACHE_TAG_DIRTY); > - } > - spin_unlock_irqrestore(&mapping->tree_lock, flags); > - } > + if (newly_dirty) > + __set_page_dirty(page, mapping, 1); > unlock_page_memcg(page); > if (newly_dirty) > __mark_inode_dirty(mapping->host, I_DIRTY_PAGES); > diff --git a/include/linux/mm.h b/include/linux/mm.h > index ad06d42adb1a..47b0fb0a6e41 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -1454,6 +1454,7 @@ extern int try_to_release_page(struct page * page, gfp_t gfp_mask); > extern void do_invalidatepage(struct page *page, unsigned int offset, > unsigned int length); > > +void __set_page_dirty(struct page *, struct address_space *, int warn); > int __set_page_dirty_nobuffers(struct page *page); > int __set_page_dirty_no_writeback(struct page *page); > int redirty_page_for_writepage(struct writeback_control *wbc, Acked-by: Jeff Layton