Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3488010imm; Tue, 29 May 2018 08:05:33 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJ6RTED/C7drdARRkvc/8O3IMrGjzI+feEhD0JaPAiIPRBS3sapuFs7DhwZvTYxT4LkNCNt X-Received: by 2002:a17:902:7c83:: with SMTP id y3-v6mr13432162pll.51.1527606333453; Tue, 29 May 2018 08:05:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527606333; cv=none; d=google.com; s=arc-20160816; b=JOr1TF4iG+77Ar9EHIh98fXGP9vTN9XWcCAEprr11qKln30zjC2/LUQ2Tue+EmAWzQ RGCRcKDVdt2e3ML2+3JfoDhFyn6k4U4XCYVuRyxqQ/UWGzDqwAiI+HBCrZynIj8/CeKS LATPnzEVzEhTrkc/Z56LPutQIPNxyeInsAVSEn6Rf7avd8SacAPMPxPiOqWDOpFLUqEa VBOyHNWUR2OcNRNnvv86Fe33qTOVg6l+9qLdf+6nktXkqIKNC16sL+Xy5VFRtNusLgIE cncVYkdkqXsEt60Oo6EE3eRuTTP2CatSV6/ucZLiza6IBL3Hym4Q7++t2mNSr6ZSx9yc yUWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=xFlCErCmH+lISq+vSL/pIbET5PEG4wu3w+qxw+1ObJo=; b=AvFz15UISJ3C3mkAJUXcdIrWyobjxswIR9AP0JGBDSp3pYQexOdtx/JRiNhklInrrK MA7X74bfB1j9cr8AdD7uKR3Lr6P7S/zgDgLEBo23BMa8evuR1PashrmnpLNBU9iAbJpB gaGt+sHabuwDv6ufa9wVspKDFHAEPJ8cFjxdHP8gWR0kVVX/OSlh57+OBrIfWXxYo0dW VezcIsE94XeRzoR6it/kWMXwTsMcvUHSnWItkG9sIgG1IiN/MZqgQuYTaX7WHAQhHzAa McozO6KhNPKVLjELwI9KP9AFZeoJhMmlxTDfqhxxbg5CpSI0qCixVgNgL81T2GmqQUPA +N8A== 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 24-v6si33143271pfp.161.2018.05.29.08.05.19; Tue, 29 May 2018 08:05:33 -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 S936592AbeE2PDe (ORCPT + 99 others); Tue, 29 May 2018 11:03:34 -0400 Received: from mail-wr0-f195.google.com ([209.85.128.195]:36717 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935283AbeE2OqP (ORCPT ); Tue, 29 May 2018 10:46:15 -0400 Received: by mail-wr0-f195.google.com with SMTP id f16-v6so10660190wrm.3 for ; Tue, 29 May 2018 07:46:15 -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; bh=xFlCErCmH+lISq+vSL/pIbET5PEG4wu3w+qxw+1ObJo=; b=KaXCVaPpgZP3pPUZwq7wFUI99skHy5LHe0HEiMNfmS5kaEeoJP7vnsOR6/lwB6pxqB zv5kEITBJ9HjnJAT9PW4depn+s2AqbkzCY4cwaYl//WIFZJru31KzJHXV68es5wjgyv+ KKNNEwPPJcOLqCqSIebbJ1oH5lw4A7fGE1QiN2O3NaE/mdAft7Mi682fzXuzz6z55YAm WXdao+5OCO9kDc2lO9tWSU8BdouF1bxBAEV/j4b9N9xgf7AzRhqlHISNcX9kN6Gt092Z u0i9zyR1QcKJAPZRHpFWjH1zzE2zcc6TsqREjkjt0Ck0uKaLh47wlsLhQ5ekQO+uMqKF IXhQ== X-Gm-Message-State: ALKqPwewtWMjow4mj09j6j430rQxt7rAberLZn4WK8dRWuCJb8IPcybr edlLhVWFkqEQdItZoZJO0M+VBg== X-Received: by 2002:adf:aadd:: with SMTP id i29-v6mr13314066wrc.149.1527605174517; Tue, 29 May 2018 07:46:14 -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.13 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 29 May 2018 07:46:13 -0700 (PDT) From: Miklos Szeredi To: linux-unionfs@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 00/28] overlayfs: Delayed copy up of data Date: Tue, 29 May 2018 16:45:44 +0200 Message-Id: <20180529144612.16675-1-mszeredi@redhat.com> X-Mailer: git-send-email 2.14.3 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In one of the recent converstions, people mentioned that chown/chmod lead to copy up files as well as data. We could optimize it so that only metadata is copied up during chown/chmod and data is copied up when file is opened for WRITE. This optimization potentially could be useful with containers and user namespaces. In popular scenario, people end up doing chown() on whole image directory tree based on container mappings. And this chown copies up everything, breaking sharing of page cache between containers. With these patches, only metadat is copied up during chown() and if file is opened for READ, d_real() returns lower dentry/inode. That way, different containers can still continue to use page cache. That's the use case I have in mind. --- Vivek Goyal (28): ovl: Initialize ovl_inode->redirect in ovl_get_inode() ovl: Move the copy up helpers to copy_up.c ovl: Provide a mount option metacopy=on/off for metadata copyup ovl: During copy up, first copy up metadata and then data ovl: Copy up only metadata during copy up where it makes sense ovl: Add helper ovl_already_copied_up() ovl: A new xattr OVL_XATTR_METACOPY for file on upper ovl: Use out_err instead of out_nomem ovl: Modify ovl_lookup() and friends to lookup metacopy dentry ovl: Copy up meta inode data from lowest data inode ovl: Add helper ovl_dentry_lowerdata() to get lower data dentry ovl: Fix ovl_getattr() to get number of blocks from lower ovl: Store lower data inode in ovl_inode ovl: Add helper ovl_inode_realdata() ovl: Open file with data except for the case of fsync ovl: Do not expose metacopy only dentry from d_real() ovl: Move some dir related ovl_lookup_single() code in else block ovl: Check redirects for metacopy files ovl: Treat metacopy dentries as type OVL_PATH_MERGE ovl: Add an inode flag OVL_CONST_INO ovl: Do not set dentry type ORIGIN for broken hardlinks ovl: Set redirect on metacopy files upon rename ovl: Set redirect on upper inode when it is linked ovl: Check redirect on index as well ovl: Disbale metacopy for MAP_SHARED mmap() ovl: Do not do metadata only copy-up for truncate operation ovl: Do not do metacopy only for ioctl modifying file attr ovl: Enable metadata only feature Documentation/filesystems/overlayfs.txt | 30 +++- fs/overlayfs/Kconfig | 19 +++ fs/overlayfs/copy_up.c | 160 ++++++++++++++++----- fs/overlayfs/dir.c | 74 +++++++--- fs/overlayfs/export.c | 3 + fs/overlayfs/file.c | 43 ++++-- fs/overlayfs/inode.c | 112 +++++++++------ fs/overlayfs/namei.c | 195 ++++++++++++++++---------- fs/overlayfs/overlayfs.h | 33 ++++- fs/overlayfs/ovl_entry.h | 6 +- fs/overlayfs/super.c | 62 +++++++- fs/overlayfs/util.c | 241 +++++++++++++++++++++++++++++++- 12 files changed, 780 insertions(+), 198 deletions(-) -- 2.14.3