From patchwork Wed Jun 7 07:51:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amir Goldstein X-Patchwork-Id: 9770837 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 69E0C60364 for ; Wed, 7 Jun 2017 07:51:59 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5487B2848D for ; Wed, 7 Jun 2017 07:51:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 47B5628528; Wed, 7 Jun 2017 07:51:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EF66D2848D for ; Wed, 7 Jun 2017 07:51:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751547AbdFGHvq (ORCPT ); Wed, 7 Jun 2017 03:51:46 -0400 Received: from mail-wr0-f196.google.com ([209.85.128.196]:34874 "EHLO mail-wr0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751203AbdFGHvo (ORCPT ); Wed, 7 Jun 2017 03:51:44 -0400 Received: by mail-wr0-f196.google.com with SMTP id g76so468713wrd.2; Wed, 07 Jun 2017 00:51:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=IhOrA93BqRXt01Ekn/gJXwCfXHi9fzDxy4p/5peMS1s=; b=dwWh8O08fYG4hUrWyB4HDkpiv0fC5v6fM9jgmc09yROQPXaCUdUVmfLU/Qy8ZlPxz+ hUGa65DN/NBtriQXphDF62Alnkx1FidUbAZ7DBigT4vL2uNMLGA90wF79F6aqSIYfPmJ ex0mecL8vSwTwwfj/D83ulGNJpe3NtdBlpsptowHshAJVPMKpFqQ5xmQBudUoNw8WI/0 N2bQtqs8SEmVMgKWFvlUH9Hz1AkEu2Pn3XlftF43NQDR+NHJSU2NYeVkNtMTmIACsmUh HM1ZKJbxZTVtZa2ffWPDbqXCY/BMwlKN7rjzOPjW73v6J3wsuHCH6IE20nJdsZuDasXS lLhw== 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=IhOrA93BqRXt01Ekn/gJXwCfXHi9fzDxy4p/5peMS1s=; b=lfdZ522K1TlgTB9830t2RVzrhlleM/d5QHRtUSVTATwZfknAg9l/EGeJM1MDS4Zgtc K90RqzxQMcRAr6/N1R8yupuu754RwFWVP3dfLQa1G0mobE+hkLmtKpbAvOp63mNnWG1A XfgGn1y9Yer9Aet6NV0XE2oS9GK91hdIdHJj3ZCvbecIpGRFP1O76tDe4ZuSRIi7WUPx J0T4TzKtanvDd5NuQctuL/qBoXKcDF+U8EUSnDi5res4hJmE162wi3YfdHfMw15Mp/Ma axxKbVLFX/JAhMQiNhMYlqpvXFRFxgilvkmNxudhDwivnpmeBkoFTHDvp/Gl1xuP1DXO /Dbg== X-Gm-Message-State: AODbwcCM0/UaRd29UFTxbGZJf9YgUK9qN2oQvy3ObQG+J4gq8E1XWPXe EdFC2jcFH2Ys8w== X-Received: by 10.223.147.196 with SMTP id 62mr21057512wrp.107.1496821903363; Wed, 07 Jun 2017 00:51:43 -0700 (PDT) Received: from amir-VirtualBox.lan (bzq-79-179-137-123.red.bezeqint.net. [79.179.137.123]) by smtp.gmail.com with ESMTPSA id 91sm307202wrn.24.2017.06.07.00.51.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 07 Jun 2017 00:51:42 -0700 (PDT) From: Amir Goldstein To: Miklos Szeredi Cc: Al Viro , linux-unionfs@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: [PATCH v2 20/20] ovl: constant inode number for hardlinks Date: Wed, 7 Jun 2017 10:51:24 +0300 Message-Id: <1496821884-5178-21-git-send-email-amir73il@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1496821884-5178-1-git-send-email-amir73il@gmail.com> References: <1496821884-5178-1-git-send-email-amir73il@gmail.com> Sender: linux-fsdevel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP When inodes index feature is enabled, it is safe to return the copy up origin st_ino for indexed upper hardlinks, because all indexed upper hardlinks are represented by the same overlay inode as the copy up origin. Signed-off-by: Amir Goldstein --- fs/overlayfs/inode.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c index 6e85a2a7fcdc..8a30dc6cd42d 100644 --- a/fs/overlayfs/inode.c +++ b/fs/overlayfs/inode.c @@ -96,11 +96,14 @@ int ovl_getattr(const struct path *path, struct kstat *stat, WARN_ON_ONCE(stat->dev != lowerstat.dev); /* - * Lower hardlinks are broken on copy up to different + * Lower hardlinks may be broken on copy up to different * upper files, so we cannot use the lower origin st_ino * for those different files, even for the same fs case. + * Indexed upper inodes are safe and non-hardlinked + * origin inodes are safe. */ - if (is_dir || lowerstat.nlink == 1) + if (is_dir || lowerstat.nlink == 1 || + OVL_TYPE_INDEX(type)) stat->ino = lowerstat.ino; } stat->dev = dentry->d_sb->s_dev;