Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3487119imm; Tue, 29 May 2018 08:04:46 -0700 (PDT) X-Google-Smtp-Source: AB8JxZo9zPmf685l0Cijb5C+BZO648JO2MsZRiAE36+jhJ3dvbrJj0B5DdVlaJ9H7E2o3Ok6JWug X-Received: by 2002:a63:7d43:: with SMTP id m3-v6mr14346731pgn.117.1527606286355; Tue, 29 May 2018 08:04:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527606286; cv=none; d=google.com; s=arc-20160816; b=Kiu12f93vqwArNISur0vWd4kcwPKT4UoTCMWt1lP8TTGXQVAqsgj+wKZBAiydvmKLP Np6ph16Rza0Mu41tX6HHREM8GLPU32FhEjfqgrg7Zr795VXH4z3MXu2MXBGfwzqOSSz+ A8oyXSlaHr6tyjpBIfKxyIlvAQaYjWsMVlkrGJ0b5dQDzYRPm7cvOhMlz+Hr/X3ZnmB7 8JoX5OpcJ/lPMTh01R5QalPePPXMJQF/r/cakPid/RVDs2F6b2txcZUSSzLJm1MqjLL5 AGLoxgIYim+0g+pryI3Ccon9wqYraNbUNpaao9oRjYlyVYtcC9vaozX2jXo7WasIbDAU N2WQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=s1PcickK35rYO0JJUkWR8abNTSGhGNi2S+32Hr4sI60=; b=PLQu4RAGyQ3qQN9rcDTFJZLkCIlsMMQR3Jek8kBxqUayV6ZDVWuLBHjSeF/qI/8B8T PgmOswEy9BfGjTPqGaEUZarY2ayc9F2Xui2tyR5PhuyXBea93fGOLWczsnMM6v6MKjAU zl9tv/x0TIM3z/SRSySx4poWQCmEPRr50SUVol/0LF21oHG2/V78TyPFwhZS/ao8JftQ XG4dWnZFsks4lDzwqkmzWyP7wyyufRwVzMfLEp688H1t7d7Ax4X2n1NHB+g6ERJfVjvB IukehXSBzIXKetf2lGUD8M9OMqj0h4wNWyOSqx3Z3Yvq98gb19a80ijP9ZLNxcxYsLwA /63A== 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=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i12-v6si25696962pgp.119.2018.05.29.08.04.31; Tue, 29 May 2018 08:04:46 -0700 (PDT) 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=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964873AbeE2O7C (ORCPT + 99 others); Tue, 29 May 2018 10:59:02 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:36936 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935773AbeE2OqV (ORCPT ); Tue, 29 May 2018 10:46:21 -0400 Received: by mail-wm0-f65.google.com with SMTP id l1-v6so41456291wmb.2 for ; Tue, 29 May 2018 07:46:21 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=s1PcickK35rYO0JJUkWR8abNTSGhGNi2S+32Hr4sI60=; b=bNHHOhKyG0OIS6NpTDQ626yEUjxJnbOf6HJgtHn0LcEWXl2kgfRQGt8Bc6owTNWu0H zABIYq7Yhrmo1Zx2J1ZzFQAKUiMKnW2OvwnMlTMNLxKmzuzIckZGBPBhRVaIx2SG5UIL vU0nhOhxaMM+cp1Rvwp/LfQsV25Td4dz35dn1DWqYchDmz4754I8xQy4EQSzJ0N+QVWX oIw60PBlDT1Ra3UXmmk5wzLa7qqhRgwyEp65SuyPiGAiz4sem0U9nw+hoefyJAOrIEYH 4fUi9Kq9rLhNigS0R/tFroJ6M6bJ5GaxJae5uid17wcdZEBwRW1xaVzD9RfRmSaZ7xC1 Yurg== X-Gm-Message-State: ALKqPwfjuVZUiuyc0yup42/rdqBmO/+Kxqw4lDAq6/XBPIwfqJAsXNCa 2mBVeod8G/NQQcxgjRVEtUlT+g== X-Received: by 2002:a1c:30ce:: with SMTP id w197-v6mr10355597wmw.22.1527605180578; Tue, 29 May 2018 07:46:20 -0700 (PDT) Received: from veci.piliscsaba.redhat.com (catv-176-63-54-97.catv.broadband.hu. [176.63.54.97]) by smtp.gmail.com with ESMTPSA id n71-v6sm20942227wmi.14.2018.05.29.07.46.19 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 29 May 2018 07:46:19 -0700 (PDT) From: Miklos Szeredi To: linux-unionfs@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 05/28] ovl: Copy up only metadata during copy up where it makes sense Date: Tue, 29 May 2018 16:45:49 +0200 Message-Id: <20180529144612.16675-6-mszeredi@redhat.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180529144612.16675-1-mszeredi@redhat.com> References: <20180529144612.16675-1-mszeredi@redhat.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Vivek Goyal If it makes sense to copy up only metadata during copy up, do it. This is done for regular files which are not opened for WRITE. Right now ->metacopy is set to 0 always. Last patch in the series will remove the hard coded statement and enable metacopy feature. Signed-off-by: Vivek Goyal Reviewed-by: Amir Goldstein Signed-off-by: Miklos Szeredi --- fs/overlayfs/copy_up.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/fs/overlayfs/copy_up.c b/fs/overlayfs/copy_up.c index c072a4c0cf08..38cfd1acc196 100644 --- a/fs/overlayfs/copy_up.c +++ b/fs/overlayfs/copy_up.c @@ -388,6 +388,7 @@ struct ovl_copy_up_ctx { bool tmpfile; bool origin; bool indexed; + bool metacopy; }; static int ovl_link_up(struct ovl_copy_up_ctx *c) @@ -507,7 +508,7 @@ static int ovl_copy_up_inode(struct ovl_copy_up_ctx *c, struct dentry *temp) return err; } - if (S_ISREG(c->stat.mode)) { + if (S_ISREG(c->stat.mode) && !c->metacopy) { struct path upperpath; ovl_path_upper(c->dentry, &upperpath); @@ -660,6 +661,26 @@ static int ovl_do_copy_up(struct ovl_copy_up_ctx *c) return err; } +static bool ovl_need_meta_copy_up(struct dentry *dentry, umode_t mode, + int flags) +{ + struct ovl_fs *ofs = dentry->d_sb->s_fs_info; + + /* TODO: Will enable metacopy in last patch of series */ + return false; + + if (!ofs->config.metacopy) + return false; + + if (!S_ISREG(mode)) + return false; + + if (flags && ((OPEN_FMODE(flags) & FMODE_WRITE) || (flags & O_TRUNC))) + return false; + + return true; +} + static int ovl_copy_up_one(struct dentry *parent, struct dentry *dentry, int flags) { @@ -681,6 +702,8 @@ static int ovl_copy_up_one(struct dentry *parent, struct dentry *dentry, if (err) return err; + ctx.metacopy = ovl_need_meta_copy_up(dentry, ctx.stat.mode, flags); + if (parent) { ovl_path_upper(parent, &parentpath); ctx.destdir = parentpath.dentry; -- 2.14.3