From patchwork Mon Nov 22 03:00:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chengguang Xu X-Patchwork-Id: 12631177 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 73683C4332F for ; Mon, 22 Nov 2021 03:16:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238737AbhKVDTs (ORCPT ); Sun, 21 Nov 2021 22:19:48 -0500 Received: from sender2-op-o12.zoho.com.cn ([163.53.93.243]:12734 "EHLO sender2-op-o12.zoho.com.cn" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238655AbhKVDTi (ORCPT ); Sun, 21 Nov 2021 22:19:38 -0500 ARC-Seal: i=1; a=rsa-sha256; t=1637550055; cv=none; d=zoho.com.cn; s=zohoarc; b=JAoNsaN10azKlarTYcEUGo56chaltTpfY7UPE+s8Hqd9IxhC1VIeoWjhY+AQC/B7KR664M4M6UJOp0rj92dNwq8sEDrlZBHDNYAUHBgu25HKWY2g68cenXYxtxlKaF9CRYCAH6jUfJ+dPb4XQVWq6v8+wRWKS/Qd2NzLrcnMQjY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com.cn; s=zohoarc; t=1637550055; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=DtN3Ha9aqUUJBadIckugjDBrOSZBwL6KCrc5r2TTvV4=; b=WNnl/4D+vrUqYoLKxPwgn//BIejpS25Da2rTuhO1CszG5tbIc9RRmeOMKOZqJoKiRO2l0Y4y3XZYLwz+kHzq+o9BL66LSG+4x+ddMkruqa2RF290+cT2p82RcsuR9YZKEOwn6OW1dLKOBwNmnF4JUW7b3iIOT9rKcV+gVFCOdNs= ARC-Authentication-Results: i=1; mx.zoho.com.cn; dkim=pass header.i=mykernel.net; spf=pass smtp.mailfrom=cgxu519@mykernel.net; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1637550055; s=zohomail; d=mykernel.net; i=cgxu519@mykernel.net; h=From:To:Cc:Message-ID:Subject:Date:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Content-Type; bh=DtN3Ha9aqUUJBadIckugjDBrOSZBwL6KCrc5r2TTvV4=; b=aIa2TmSYPWRJkJ8o39TXMRAupUGzVj0+VMiElZ7tshKhhm9jYYr/el9QI1yzpsZL LtBGfVXgwt1Io5Q2HCESCjjYcGWrrN3mt06qs1GBGFYJBuSn8m9QOJaHsN0b89F3Cq0 lght/wPmV6vp20JQ7YBkP7MzoxPbm2gwp2LrE0EY= Received: from localhost.localdomain (81.71.33.115 [81.71.33.115]) by mx.zoho.com.cn with SMTPS id 1637550054768331.1330786271167; Mon, 22 Nov 2021 11:00:54 +0800 (CST) From: Chengguang Xu To: miklos@szeredi.hu, jack@suse.cz, amir73il@gmail.com Cc: linux-unionfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Chengguang Xu Message-ID: <20211122030038.1938875-2-cgxu519@mykernel.net> Subject: [RFC PATCH V6 1/7] ovl: setup overlayfs' private bdi Date: Mon, 22 Nov 2021 11:00:32 +0800 X-Mailer: git-send-email 2.27.0 In-Reply-To: <20211122030038.1938875-1-cgxu519@mykernel.net> References: <20211122030038.1938875-1-cgxu519@mykernel.net> MIME-Version: 1.0 X-ZohoCNMailClient: External Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org From: Chengguang Xu Setup overlayfs' private bdi so that we can collect overlayfs' own dirty inodes. Signed-off-by: Chengguang Xu Reviewed-by: Jan Kara --- fs/overlayfs/super.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c index 265181c110ae..18a12088a37b 100644 --- a/fs/overlayfs/super.c +++ b/fs/overlayfs/super.c @@ -1984,6 +1984,10 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent) if (!ofs) goto out; + err = super_setup_bdi(sb); + if (err) + goto out_err; + err = -ENOMEM; ofs->creator_cred = cred = prepare_creds(); if (!cred) From patchwork Mon Nov 22 03:00:33 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chengguang Xu X-Patchwork-Id: 12631169 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 015F0C433FE for ; Mon, 22 Nov 2021 03:16:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238642AbhKVDTg (ORCPT ); Sun, 21 Nov 2021 22:19:36 -0500 Received: from sender2-op-o12.zoho.com.cn ([163.53.93.243]:17241 "EHLO sender2-op-o12.zoho.com.cn" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229870AbhKVDTe (ORCPT ); Sun, 21 Nov 2021 22:19:34 -0500 X-Greylist: delayed 907 seconds by postgrey-1.27 at vger.kernel.org; Sun, 21 Nov 2021 22:19:34 EST ARC-Seal: i=1; a=rsa-sha256; t=1637550057; cv=none; d=zoho.com.cn; s=zohoarc; b=eY0YtbaY/soIiaCdiOOidKcTUawRhdshegAfy+e2SF+zGk0FgVesxbhhBSK9a+3Ew3Gbv4KiDcgiqLSvxV8412Flw4UBxDb+x6+2S6CeV17+6PYM0jXqX3me21nEoEH64cESOBT0gpSKf604guR3CluRLGcFBslPNRB8/de8tmM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com.cn; s=zohoarc; t=1637550057; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=hfXyzGcOlPoLrPQVGfEwV/ALvAXxxFIn8RyNQQA7A7g=; b=b5+R5pIYI8odWO+izB62xkuC0n+tIrpdri1lkcyN8fxOELuq8Gj3SJTeRMmgwoat1sOR/sIxZwXDBj5Au1CI2LUOvKPnOEQW0Aa5thcQlD5i7acAw66Kg8c7PPLYeEoQ026VsBnLdYJKw8OwSTAEN3gvOM9LBgr6+szYFk6kTzg= ARC-Authentication-Results: i=1; mx.zoho.com.cn; dkim=pass header.i=mykernel.net; spf=pass smtp.mailfrom=cgxu519@mykernel.net; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1637550057; s=zohomail; d=mykernel.net; i=cgxu519@mykernel.net; h=From:To:Cc:Message-ID:Subject:Date:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Content-Type; bh=hfXyzGcOlPoLrPQVGfEwV/ALvAXxxFIn8RyNQQA7A7g=; b=ZzVSTDZqosTiCkcBE6HP1ykz2ZzERDzcyRoc4VZ5bqJYXghqLO40M5/R1djxVSJl RA96GT4jY5hMKWEklMdlCx7WAptY+AhQbFjM+Dr9wPdJ9hQQrrnamYUhz0iSW/5Ws+C V+Q9ACXkT2RzGBiD/pMfz6SQM1z/+p1hN+EJ9b2w= Received: from localhost.localdomain (81.71.33.115 [81.71.33.115]) by mx.zoho.com.cn with SMTPS id 1637550055397164.47965855404595; Mon, 22 Nov 2021 11:00:55 +0800 (CST) From: Chengguang Xu To: miklos@szeredi.hu, jack@suse.cz, amir73il@gmail.com Cc: linux-unionfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Chengguang Xu Message-ID: <20211122030038.1938875-3-cgxu519@mykernel.net> Subject: [RFC PATCH V6 2/7] ovl: mark overlayfs inode dirty when it has upper Date: Mon, 22 Nov 2021 11:00:33 +0800 X-Mailer: git-send-email 2.27.0 In-Reply-To: <20211122030038.1938875-1-cgxu519@mykernel.net> References: <20211122030038.1938875-1-cgxu519@mykernel.net> MIME-Version: 1.0 X-ZohoCNMailClient: External Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org From: Chengguang Xu We simply mark overlayfs inode dirty when it has upper, it's much simpler than mark dirtiness on modification. Signed-off-by: Chengguang Xu Reviewed-by: Jan Kara --- fs/overlayfs/inode.c | 4 +++- fs/overlayfs/util.c | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c index 1f36158c7dbe..027ffc0a2539 100644 --- a/fs/overlayfs/inode.c +++ b/fs/overlayfs/inode.c @@ -778,8 +778,10 @@ void ovl_inode_init(struct inode *inode, struct ovl_inode_params *oip, { struct inode *realinode; - if (oip->upperdentry) + if (oip->upperdentry) { OVL_I(inode)->__upperdentry = oip->upperdentry; + mark_inode_dirty(inode); + } if (oip->lowerpath && oip->lowerpath->dentry) OVL_I(inode)->lower = igrab(d_inode(oip->lowerpath->dentry)); if (oip->lowerdata) diff --git a/fs/overlayfs/util.c b/fs/overlayfs/util.c index f48284a2a896..a1922af32a13 100644 --- a/fs/overlayfs/util.c +++ b/fs/overlayfs/util.c @@ -421,6 +421,7 @@ void ovl_inode_update(struct inode *inode, struct dentry *upperdentry) inode->i_private = upperinode; __insert_inode_hash(inode, (unsigned long) upperinode); } + mark_inode_dirty(inode); } static void ovl_dir_version_inc(struct dentry *dentry, bool impurity) From patchwork Mon Nov 22 03:00:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chengguang Xu X-Patchwork-Id: 12631175 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3E3A0C433FE for ; Mon, 22 Nov 2021 03:16:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238726AbhKVDTs (ORCPT ); Sun, 21 Nov 2021 22:19:48 -0500 Received: from sender2-op-o12.zoho.com.cn ([163.53.93.243]:12733 "EHLO sender2-op-o12.zoho.com.cn" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238653AbhKVDTi (ORCPT ); Sun, 21 Nov 2021 22:19:38 -0500 ARC-Seal: i=1; a=rsa-sha256; t=1637550057; cv=none; d=zoho.com.cn; s=zohoarc; b=ZLvWAFmEurggVznKbFKsinCgYfQW+1Vo5inGf9HzDE9HeZhoVYkaCjFGJROlVZtLCFhl2qULZmiCidHYcHGY/yipI2pCImTb+0n6tGWOMj+altjEJxtkkBuklJVKiS0q3uGtbZvhrsvtfT+Q77JTTpeoRSF307suDbGsHaYRPK4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com.cn; s=zohoarc; t=1637550057; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=w0m2Fx6wMRCtcv0P3H0nf5BfGoRc8ouSRTWclZNiTZU=; b=a+/3KggL76KvVv1p9WFiqdH5QGXiTesfMnkZ54u0aMc9q9x4b0ABqw62u84CpSsagjQT0wrMCAa4WLPkCxP4OkuwOcWGDcRC18YzsBaE8bTsaVyJFEV8yR377CSJLLbuFR1phM+UApQxr0uAciKaMnebaS7wdZyPicHhQE/FswA= ARC-Authentication-Results: i=1; mx.zoho.com.cn; dkim=pass header.i=mykernel.net; spf=pass smtp.mailfrom=cgxu519@mykernel.net; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1637550057; s=zohomail; d=mykernel.net; i=cgxu519@mykernel.net; h=From:To:Cc:Message-ID:Subject:Date:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Content-Type; bh=w0m2Fx6wMRCtcv0P3H0nf5BfGoRc8ouSRTWclZNiTZU=; b=Xm/zFMHfl/DYSG+CqEc9jRaE6j5a5TVbEYM/JBmi3fR71vG+1flUfgTpWyY3v3mk XR/xYCpIklXGD0X48u+alNvnv21cmE7XD9pbMpkDHajTYFJSeDRuvrk4cmP6wPOIsjm LQvApmii0Z0Oe6FAwCaPlGYbfRQcOgddA5ftnHzY= Received: from localhost.localdomain (81.71.33.115 [81.71.33.115]) by mx.zoho.com.cn with SMTPS id 1637550056065980.8003074971691; Mon, 22 Nov 2021 11:00:56 +0800 (CST) From: Chengguang Xu To: miklos@szeredi.hu, jack@suse.cz, amir73il@gmail.com Cc: linux-unionfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Chengguang Xu Message-ID: <20211122030038.1938875-4-cgxu519@mykernel.net> Subject: [RFC PATCH V6 3/7] ovl: implement overlayfs' own ->write_inode operation Date: Mon, 22 Nov 2021 11:00:34 +0800 X-Mailer: git-send-email 2.27.0 In-Reply-To: <20211122030038.1938875-1-cgxu519@mykernel.net> References: <20211122030038.1938875-1-cgxu519@mykernel.net> MIME-Version: 1.0 X-ZohoCNMailClient: External Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org From: Chengguang Xu Sync dirty data and meta of upper inode in overlayfs' ->write_inode() and redirty overlayfs' inode. Signed-off-by: Chengguang Xu Reviewed-by: Jan Kara --- fs/overlayfs/super.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c index 18a12088a37b..12acf0ec7395 100644 --- a/fs/overlayfs/super.c +++ b/fs/overlayfs/super.c @@ -15,6 +15,7 @@ #include #include #include +#include #include "overlayfs.h" MODULE_AUTHOR("Miklos Szeredi "); @@ -406,12 +407,32 @@ static int ovl_remount(struct super_block *sb, int *flags, char *data) return ret; } +static int ovl_write_inode(struct inode *inode, + struct writeback_control *wbc) +{ + struct ovl_fs *ofs = inode->i_sb->s_fs_info; + struct inode *upper_inode = ovl_inode_upper(inode); + int ret = 0; + + if (!upper_inode) + return 0; + + if (!ovl_should_sync(ofs)) + return 0; + + ret = write_inode_now(upper_inode, wbc->sync_mode == WB_SYNC_ALL); + mark_inode_dirty(inode); + + return ret; +} + static const struct super_operations ovl_super_operations = { .alloc_inode = ovl_alloc_inode, .free_inode = ovl_free_inode, .destroy_inode = ovl_destroy_inode, .drop_inode = generic_delete_inode, .put_super = ovl_put_super, + .write_inode = ovl_write_inode, .sync_fs = ovl_sync_fs, .statfs = ovl_statfs, .show_options = ovl_show_options, From patchwork Mon Nov 22 03:00:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chengguang Xu X-Patchwork-Id: 12631173 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0E5F2C433EF for ; Mon, 22 Nov 2021 03:16:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238675AbhKVDTr (ORCPT ); Sun, 21 Nov 2021 22:19:47 -0500 Received: from sender2-op-o12.zoho.com.cn ([163.53.93.243]:17257 "EHLO sender2-op-o12.zoho.com.cn" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238645AbhKVDTi (ORCPT ); Sun, 21 Nov 2021 22:19:38 -0500 ARC-Seal: i=1; a=rsa-sha256; t=1637550057; cv=none; d=zoho.com.cn; s=zohoarc; b=Fl90mNkZvga2F7Mr+U4bqhs5hnJmzoRXX+WHQau+M5yiCd8NIYvGL5Mf2zV/FKg2cf3adsXvRiHEOzPtBiX63uOqt5zwNmIs30gWOWgDYSmfuCFw5cwvHXRSav66Q7cT5pEGF+CVfQYNHZrt7X14CyQ7zRIsYazCfQq1QP8EX6E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com.cn; s=zohoarc; t=1637550057; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=ETuCEhivaI+lEwSropDYBcDfVuyeiGC5OUBN9BSSIMw=; b=eUYE5XrD4xulw+cr3kaOJ9jj2UlyqVweKn1L6AOe9+W8g9RSFkcOV0CxY/uJT3QruoIXyxVuz8cVNXPobfJX3q3DamFz6m8Q/r4OHLdsJEXfrU1yVEeyX73W25ltWZCZf9fqiGs6BhL33ik/h27rASZfM9x/Lp1/YDc3YfuqVq0= ARC-Authentication-Results: i=1; mx.zoho.com.cn; dkim=pass header.i=mykernel.net; spf=pass smtp.mailfrom=cgxu519@mykernel.net; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1637550057; s=zohomail; d=mykernel.net; i=cgxu519@mykernel.net; h=From:To:Cc:Message-ID:Subject:Date:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Content-Type; bh=ETuCEhivaI+lEwSropDYBcDfVuyeiGC5OUBN9BSSIMw=; b=JJS/K8NQm3AYXD6ZPKPIxXtPsn6Zfp+VBYC8tunQV8IRyDyVtWWa6NOEibmtd3ET 5ZHL3DOY5JfDl9GohbVBlKaXkcjMQSQRV5TjAL47qOIhanLV8irK+YQabMx+t0zDtiY Mfftzm9tQ5hiz2MKFwtfxTfGf41PxdzLzUN5tMXU= Received: from localhost.localdomain (81.71.33.115 [81.71.33.115]) by mx.zoho.com.cn with SMTPS id 1637550056708361.5401345405787; Mon, 22 Nov 2021 11:00:56 +0800 (CST) From: Chengguang Xu To: miklos@szeredi.hu, jack@suse.cz, amir73il@gmail.com Cc: linux-unionfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Chengguang Xu Message-ID: <20211122030038.1938875-5-cgxu519@mykernel.net> Subject: [RFC PATCH V6 4/7] ovl: set 'DONTCACHE' flag for overlayfs inode Date: Mon, 22 Nov 2021 11:00:35 +0800 X-Mailer: git-send-email 2.27.0 In-Reply-To: <20211122030038.1938875-1-cgxu519@mykernel.net> References: <20211122030038.1938875-1-cgxu519@mykernel.net> MIME-Version: 1.0 X-ZohoCNMailClient: External Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org From: Chengguang Xu Set 'DONTCACHE' flag to overlayfs inode so that upper inode to be always synced before eviction. Signed-off-by: Chengguang Xu --- fs/overlayfs/inode.c | 1 + 1 file changed, 1 insertion(+) diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c index 027ffc0a2539..c4472299d5df 100644 --- a/fs/overlayfs/inode.c +++ b/fs/overlayfs/inode.c @@ -791,6 +791,7 @@ void ovl_inode_init(struct inode *inode, struct ovl_inode_params *oip, ovl_copyattr(realinode, inode); ovl_copyflags(realinode, inode); ovl_map_ino(inode, ino, fsid); + d_mark_dontcache(inode); } static void ovl_fill_inode(struct inode *inode, umode_t mode, dev_t rdev) From patchwork Mon Nov 22 03:00:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chengguang Xu X-Patchwork-Id: 12631179 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E3D8BC433EF for ; Mon, 22 Nov 2021 03:16:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238687AbhKVDT6 (ORCPT ); Sun, 21 Nov 2021 22:19:58 -0500 Received: from sender2-op-o12.zoho.com.cn ([163.53.93.243]:17245 "EHLO sender2-op-o12.zoho.com.cn" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238800AbhKVDTy (ORCPT ); Sun, 21 Nov 2021 22:19:54 -0500 ARC-Seal: i=1; a=rsa-sha256; t=1637550058; cv=none; d=zoho.com.cn; s=zohoarc; b=OcCT/FXQWt1Sf02RjtxTYGWUyZ5qzig68yiCIaB2sCJX0vn7/uC4+rVahdkB0rLe99Xc/9MwDfSCCPBmwDqIEGTP1pnirV2m8fEDETNlRt9XV7AEKsA5JKFhAczkkMrLnJy/QZkgVLGSgxoFpIVdfUinDiT0p6ITUVJih/qJ9fA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com.cn; s=zohoarc; t=1637550058; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=XWwkiyQ/BdG5wh3JYtnpShMhf+wXumE4K+jIj9m+FGk=; b=ZbLHooThIHsNsVXBskT2daRkA7a/X1LJsK+XQDjVdTaNduBRsb2/c2qNwEypwj6qMk28YK5qhzGyz73tRjY5cGRcxuLIEpTsk5d08e+/AdGqun1Fg+dctaXz4o2uGqllaKNCn5b/AcYQmzkbfKfnSYJT1RqSWc4wb1fq66aeKrQ= ARC-Authentication-Results: i=1; mx.zoho.com.cn; dkim=pass header.i=mykernel.net; spf=pass smtp.mailfrom=cgxu519@mykernel.net; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1637550058; s=zohomail; d=mykernel.net; i=cgxu519@mykernel.net; h=From:To:Cc:Message-ID:Subject:Date:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Content-Type; bh=XWwkiyQ/BdG5wh3JYtnpShMhf+wXumE4K+jIj9m+FGk=; b=TWwVMN5mC8Gj16gbsmg0QsbXh5KaDGxMhVCwaFPMoZ9zMNVEiHrugRENJdg1fiob RrU+6LPUthrhLjRaVurwK67BXnRlps24nK8VTg+G8aIZlfgfjAQ087fdpP2tLSd2yRT R0+RBQzheaUWwv8kHT/3gdiVLsQf7N36XRrbfYhE= Received: from localhost.localdomain (81.71.33.115 [81.71.33.115]) by mx.zoho.com.cn with SMTPS id 1637550057358568.9885767482691; Mon, 22 Nov 2021 11:00:57 +0800 (CST) From: Chengguang Xu To: miklos@szeredi.hu, jack@suse.cz, amir73il@gmail.com Cc: linux-unionfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Chengguang Xu Message-ID: <20211122030038.1938875-6-cgxu519@mykernel.net> Subject: [RFC PATCH V6 5/7] fs: export wait_sb_inodes() Date: Mon, 22 Nov 2021 11:00:36 +0800 X-Mailer: git-send-email 2.27.0 In-Reply-To: <20211122030038.1938875-1-cgxu519@mykernel.net> References: <20211122030038.1938875-1-cgxu519@mykernel.net> MIME-Version: 1.0 X-ZohoCNMailClient: External Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org From: Chengguang Xu In order to wait syncing upper inodes we need to call wait_sb_inodes() in overlayfs' ->sync_fs. Signed-off-by: Chengguang Xu Reviewed-by: Jan Kara --- fs/fs-writeback.c | 3 ++- include/linux/writeback.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 81ec192ce067..0438c911241e 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -2505,7 +2505,7 @@ EXPORT_SYMBOL(__mark_inode_dirty); * completed by the time we have gained the lock and waited for all IO that is * in progress regardless of the order callers are granted the lock. */ -static void wait_sb_inodes(struct super_block *sb) +void wait_sb_inodes(struct super_block *sb) { LIST_HEAD(sync_list); @@ -2589,6 +2589,7 @@ static void wait_sb_inodes(struct super_block *sb) rcu_read_unlock(); mutex_unlock(&sb->s_sync_lock); } +EXPORT_SYMBOL(wait_sb_inodes); static void __writeback_inodes_sb_nr(struct super_block *sb, unsigned long nr, enum wb_reason reason, bool skip_if_busy) diff --git a/include/linux/writeback.h b/include/linux/writeback.h index d1f65adf6a26..d7aacd0434cf 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h @@ -198,6 +198,7 @@ void wakeup_flusher_threads_bdi(struct backing_dev_info *bdi, enum wb_reason reason); void inode_wait_for_writeback(struct inode *inode); void inode_io_list_del(struct inode *inode); +void wait_sb_inodes(struct super_block *sb); /* writeback.h requires fs.h; it, too, is not included from here. */ static inline void wait_on_inode(struct inode *inode) From patchwork Mon Nov 22 03:00:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chengguang Xu X-Patchwork-Id: 12631171 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 87C7DC433F5 for ; Mon, 22 Nov 2021 03:16:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238659AbhKVDTk (ORCPT ); Sun, 21 Nov 2021 22:19:40 -0500 Received: from sender2-op-o12.zoho.com.cn ([163.53.93.243]:17261 "EHLO sender2-op-o12.zoho.com.cn" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238512AbhKVDTh (ORCPT ); Sun, 21 Nov 2021 22:19:37 -0500 ARC-Seal: i=1; a=rsa-sha256; t=1637550059; cv=none; d=zoho.com.cn; s=zohoarc; b=XNhysrQBlWhysCnOSjN2/XVn0WnIuSEWhJIUJEImumLcYy7dR+OjpTuuq0wZUtsSnuU+mb1JfiGY1tZHjYTprK4siXNXgv5EYJmV7XLmbHSMhCDuTpJlenyqfiHoqcp98LSd7Nluxr/xRx4zAKapYqC5kOMsFXSuRq74zdqinWY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com.cn; s=zohoarc; t=1637550059; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=NN0J8syqY7HhBP+osWb94ylU37U4Vn/6TEJ/OnmUV+Q=; b=AgDaD7Ke3l5wOS2oBcwxb4vKC46uCisAbwrcaVBNeG65ytokCx8TkEtr+hizqw4n+GJnLutDzmp3hdi65ipfDDUbs/ssFbrFhmof6j1U9zLhTJ518gMDwQ5DCW3CQqimEYRsMzSKM3nORWegPez2Mzvi9db4INbtwOrdJQ4oCcw= ARC-Authentication-Results: i=1; mx.zoho.com.cn; dkim=pass header.i=mykernel.net; spf=pass smtp.mailfrom=cgxu519@mykernel.net; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1637550059; s=zohomail; d=mykernel.net; i=cgxu519@mykernel.net; h=From:To:Cc:Message-ID:Subject:Date:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Content-Type; bh=NN0J8syqY7HhBP+osWb94ylU37U4Vn/6TEJ/OnmUV+Q=; b=AZ+LVnmi2vzyCCwDb/gHh0BF5qaCv9+DmGf4pp3zbpqUv9rD6pL8HzJeLu0DTH3B ERRJRyPUJ6vYSBqQDiQWT5+uWv+Dxo+kNXrUSm0ep6+Wv2PSnbiHUr4ljLXCaOVrRRD E+R+LPjpXbMQORtjXVmzp1i6N/J3Z/gmzQN1CI0E= Received: from localhost.localdomain (81.71.33.115 [81.71.33.115]) by mx.zoho.com.cn with SMTPS id 1637550058013718.8663802684912; Mon, 22 Nov 2021 11:00:58 +0800 (CST) From: Chengguang Xu To: miklos@szeredi.hu, jack@suse.cz, amir73il@gmail.com Cc: linux-unionfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Chengguang Xu Message-ID: <20211122030038.1938875-7-cgxu519@mykernel.net> Subject: [RFC PATCH V6 6/7] ovl: introduce ovl_sync_upper_blockdev() Date: Mon, 22 Nov 2021 11:00:37 +0800 X-Mailer: git-send-email 2.27.0 In-Reply-To: <20211122030038.1938875-1-cgxu519@mykernel.net> References: <20211122030038.1938875-1-cgxu519@mykernel.net> MIME-Version: 1.0 X-ZohoCNMailClient: External Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org From: Chengguang Xu Introduce new helper ovl_sync_upper_blockdev() to sync upper blockdev. Signed-off-by: Chengguang Xu Reviewed-by: Jan Kara --- fs/overlayfs/super.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c index 12acf0ec7395..ccffcd96491d 100644 --- a/fs/overlayfs/super.c +++ b/fs/overlayfs/super.c @@ -258,6 +258,16 @@ static void ovl_put_super(struct super_block *sb) ovl_free_fs(ofs); } +static int ovl_sync_upper_blockdev(struct super_block *sb, int wait) +{ + if (!sb->s_bdev) + return 0; + + if (!wait) + return filemap_flush(sb->s_bdev->bd_inode->i_mapping); + return filemap_write_and_wait_range(sb->s_bdev->bd_inode->i_mapping, 0, LLONG_MAX); +} + /* Sync real dirty inodes in upper filesystem (if it exists) */ static int ovl_sync_fs(struct super_block *sb, int wait) { From patchwork Mon Nov 22 03:00:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chengguang Xu X-Patchwork-Id: 12631181 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5DFE0C433EF for ; Mon, 22 Nov 2021 03:18:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238705AbhKVDTm (ORCPT ); Sun, 21 Nov 2021 22:19:42 -0500 Received: from sender2-op-o12.zoho.com.cn ([163.53.93.243]:17263 "EHLO sender2-op-o12.zoho.com.cn" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238637AbhKVDTh (ORCPT ); Sun, 21 Nov 2021 22:19:37 -0500 ARC-Seal: i=1; a=rsa-sha256; t=1637550059; cv=none; d=zoho.com.cn; s=zohoarc; b=IfELBCtyhYXdJYLD821WMxeVm3FWdhn1emkZNIAK6p9G5lOv5LmeJ5UuvBF1WkengtFkk+fyyjcp7ksSXce6Rn0i1VoqeIX4bmWkE2zuiyD7RcFmkzIndB3HGQR19m2X/kGECHuWb/gf2kWRa4oDdG/fln6kmsMjbvhBDS9aK8c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com.cn; s=zohoarc; t=1637550059; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=x3rn9UpoZ7H4gQM/r9ta8j1G3E81TfSs5cv8aAEiDvI=; b=B9gSC4oPZ2QgwajSgoyyXnC1kgS8iZMGtMe2fwgh+QPNyZFCgsL35RzXh1Q3SL9zyOB3xkmmBui78NYpZGsGTQ+QJVJAS1qu6nyhBMlcSkADtJavBvdCQQRpTmF+C0D2BBPyGt6OIPiG1ptFL80iaZ2ZKC7vArc0uAB0O3ITQIM= ARC-Authentication-Results: i=1; mx.zoho.com.cn; dkim=pass header.i=mykernel.net; spf=pass smtp.mailfrom=cgxu519@mykernel.net; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1637550059; s=zohomail; d=mykernel.net; i=cgxu519@mykernel.net; h=From:To:Cc:Message-ID:Subject:Date:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Content-Type; bh=x3rn9UpoZ7H4gQM/r9ta8j1G3E81TfSs5cv8aAEiDvI=; b=AFTuzWH9SAxJTvrxcRm8cOuK/qxEpcQss/Y91kivBQYd/zdA5ny6VddbwfkDBmgE hYw5qUpln3MZaxCBe+FfwqjipusF+noZINF+x68eCtw16xRRhdwR5JMIKx/piOJraF0 kYfWdJ0c4Gkpu/8/wvCDDrW7bvFYtQrwQiZVkCLc= Received: from localhost.localdomain (81.71.33.115 [81.71.33.115]) by mx.zoho.com.cn with SMTPS id 1637550058672726.6063942120564; Mon, 22 Nov 2021 11:00:58 +0800 (CST) From: Chengguang Xu To: miklos@szeredi.hu, jack@suse.cz, amir73il@gmail.com Cc: linux-unionfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Chengguang Xu Message-ID: <20211122030038.1938875-8-cgxu519@mykernel.net> Subject: [RFC PATCH V6 7/7] ovl: implement containerized syncfs for overlayfs Date: Mon, 22 Nov 2021 11:00:38 +0800 X-Mailer: git-send-email 2.27.0 In-Reply-To: <20211122030038.1938875-1-cgxu519@mykernel.net> References: <20211122030038.1938875-1-cgxu519@mykernel.net> MIME-Version: 1.0 X-ZohoCNMailClient: External Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org From: Chengguang Xu Now overlayfs can only sync own dirty inodes during syncfs, so remove unnecessary sync_filesystem() on upper file system. Signed-off-by: Chengguang Xu Reviewed-by: Jan Kara --- fs/overlayfs/super.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c index ccffcd96491d..213b795a6a86 100644 --- a/fs/overlayfs/super.c +++ b/fs/overlayfs/super.c @@ -292,18 +292,14 @@ static int ovl_sync_fs(struct super_block *sb, int wait) /* * Not called for sync(2) call or an emergency sync (SB_I_SKIP_SYNC). * All the super blocks will be iterated, including upper_sb. - * - * If this is a syncfs(2) call, then we do need to call - * sync_filesystem() on upper_sb, but enough if we do it when being - * called with wait == 1. */ - if (!wait) - return 0; - upper_sb = ovl_upper_mnt(ofs)->mnt_sb; - down_read(&upper_sb->s_umount); - ret = sync_filesystem(upper_sb); + if (wait) + wait_sb_inodes(upper_sb); + if (upper_sb->s_op->sync_fs) + upper_sb->s_op->sync_fs(upper_sb, wait); + ret = ovl_sync_upper_blockdev(upper_sb, wait); up_read(&upper_sb->s_umount); return ret;