Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3474641imm; Tue, 29 May 2018 07:53:31 -0700 (PDT) X-Google-Smtp-Source: ADUXVKK2S0+NYLjNSiFKbCNvVj6ZQXwDrlaLgCAUz15dqBC5RDt6Cu86tGGwpeB6NQRD4gPH7JcP X-Received: by 2002:a65:5a07:: with SMTP id y7-v6mr4737091pgs.177.1527605611368; Tue, 29 May 2018 07:53:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527605611; cv=none; d=google.com; s=arc-20160816; b=ys76et/5ywUYMmlkpNgBF/7R/OsyKcH0DxfmkOAl5LQmxL6jX6J2yTdqEYqLVqJo6t cQKyOxSKzAnRAxO0jcIcjjLv6NuhdMt3CYpcz9uylZC6Wcd8U71N8v+fAJZ0JHbx/5jQ dEBWL8R2YsrI4OMNQhTtXHrA0lbdPt0T9WNjfK9WNKw6wRE8C2BHOSFFVterhUOacAlZ 5mIAmEArWVjvJwVeNXynRacWhYrkgBfT3MkDpwXYQFATAlhBm5UjhjAiEXlWpB0jl9SB U8qapXeTuYB+rvmLXhKxkFIdW4CgV+7Ck/YoVEdkj9MOpbvJsczbpo4hO6C01esbb1i2 MqKw== 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=qAcMfB8axqtMPyfvE/mHGgT2K12GWLuk3/aVO2RHtQM=; b=NNOtp8D+8GAZiBMLIVSiV0pQJyfvCEFeTM6bthUlGuXsQlEML4VuztVKEn/IYlx/fZ F/2n/RgjIvA1ODFUAd7eLj2PdZHVFtgnK9M7NG5BJtmNlYWSslQ4oDPJFZfhGWo+yEVQ uLld4dtoLhmQgikQQ2STk9tB3le0AxRFPig3boPrUu1jeIkf4uL2i7pdTc7F0btKReTr bMUiNCkjIbg9bb8xqlKulA0qEEMx360FszEjkube70mPbJUUWKzAD8bfy0wRVjw2XlrS hUPP/261QOnabzl0aEihsNOiCsnvpRr2JeeXREGun89N2n56pjNfNhjjLp/INFDsrs6M 4Kjw== 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 m15-v6si25661094pgu.352.2018.05.29.07.53.17; Tue, 29 May 2018 07:53:31 -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 S964876AbeE2Ouj (ORCPT + 99 others); Tue, 29 May 2018 10:50:39 -0400 Received: from mail-wm0-f48.google.com ([74.125.82.48]:36436 "EHLO mail-wm0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S936644AbeE2Oqm (ORCPT ); Tue, 29 May 2018 10:46:42 -0400 Received: by mail-wm0-f48.google.com with SMTP id v131-v6so22156771wma.1 for ; Tue, 29 May 2018 07:46:41 -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=qAcMfB8axqtMPyfvE/mHGgT2K12GWLuk3/aVO2RHtQM=; b=DzYT81ir8KzWdEiwgeHggRHtsprg0KCgRsjfI3AVEPiSUHYYVb02iL71jhibFytFcs N8Eb+bZFSM81ZIL+pYM13B60tjLJd+Q99OhR+Z1FgM5rYdoHgJXfYcDYdFar8X34XbF+ 5FWyWzHezHBa9HtCa65jBWI3drXxUYvUB4TOPX0CS2KXYnhRGDc3fxPMadIkmUGrOH2/ BBGmiFp8SacMnw3fDTo34hPeCzAcd+ddNh8Ed7mNUKHogmVq63GjBnSteXYhiAW6QaxO BfD814Zabt8T9RJl37kqugBiEqCDLYB0Szy1X2YdPKiWuEV/4ri/AvxE5M0TzG1xWZ4Z WpFg== X-Gm-Message-State: ALKqPwd4BL08TlLbePr7JlZzJoA++KlMro2GtES46fCqVIBw/58YvoH7 c+WSef+8T8QEscdyEq4HJYVyXg== X-Received: by 2002:a1c:d106:: with SMTP id i6-v6mr6520753wmg.1.1527605200980; Tue, 29 May 2018 07:46:40 -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.39 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 29 May 2018 07:46:40 -0700 (PDT) From: Miklos Szeredi To: linux-unionfs@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 21/28] ovl: Do not set dentry type ORIGIN for broken hardlinks Date: Tue, 29 May 2018 16:46:05 +0200 Message-Id: <20180529144612.16675-22-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 a dentry has copy up origin, we set flag OVL_PATH_ORIGIN. So far this decision was easy that we had to check only for oe->numlower and if it is non-zero, we knew there is copy up origin. (For non-dir we installed origin dentry in lowerstack[0]). But we don't create ORGIN xattr for broken hardlinks (index=off). And with metacopy feature it is possible that we will install lowerstack[0] but ORIGIN xattr is not there. It is data dentry of upper metacopy dentry which has been found using regular name based lookup or using REDIRECT. So with addition of this new case, just presence of oe->numlower is not sufficient to guarantee that ORIGIN xattr is present. So to differentiate between two cases, look at OVL_CONST_INO flag. If this flag is set and upperdentry is there, that means it can be marked as type ORIGIN. OVL_CONST_INO is not set if lower hardlink is broken or will be broken over copy up. Signed-off-by: Vivek Goyal Reviewed-by: Amir Goldstein Signed-off-by: Miklos Szeredi --- fs/overlayfs/util.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/overlayfs/util.c b/fs/overlayfs/util.c index 61ace2de3019..1aa9e0c5a327 100644 --- a/fs/overlayfs/util.c +++ b/fs/overlayfs/util.c @@ -133,7 +133,8 @@ enum ovl_path_type ovl_path_type(struct dentry *dentry) * Non-dir dentry can hold lower dentry of its copy up origin. */ if (oe->numlower) { - type |= __OVL_PATH_ORIGIN; + if (ovl_test_flag(OVL_CONST_INO, d_inode(dentry))) + type |= __OVL_PATH_ORIGIN; if (d_is_dir(dentry) || !ovl_has_upperdata(d_inode(dentry))) type |= __OVL_PATH_MERGE; -- 2.14.3