From: Vivek Goyal <vgoyal@redhat.com>
To: linux-unionfs@vger.kernel.org
Cc: amir73il@gmail.com, miklos@szeredi.hu, vgoyal@redhat.com,
ebiederm@xmission.com
Subject: [RFC PATCH 0/9][V3] overlayfs: Delayed copy up of data
Date: Tue, 10 Oct 2017 11:32:15 -0400 [thread overview]
Message-ID: <1507649544-4539-1-git-send-email-vgoyal@redhat.com> (raw)
Hi,
This is V3 of patches.
Changes from V2:
- Got rid of boolean in ovl_getattr(). This will be changed again once
chandan's patches are merged (Amir).
- Moved index=on check much later in ovl_fill_super(). (Amir)
- Fixed an inode leak in case of returning -ESTALE.
- Added another patch to add read and write barrier around
setting/resetting of OVL_METACOPY bit. As we do lockless access in
ovl_copy_up_flags(), I think without this we can be subject to races.
Original description
--------------------
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.
Basically, I am relying on storing OVL_XATTR_ORIGIN in upper inode
during copy up. I use that information to get to lower inode later and
do data copy up when necessary.
I also store OVL_XATTR_METACOPY in upper inode to mark that only
metadata has been copied up and data copy up still might be required.
Any feedback is helpful.
Thanks
Vivek
Vivek Goyal (9):
ovl: ovl_check_setxattr() get rid of redundant -EOPNOTSUPP check
ovl: During copy up, first copy up metadata and then data
ovl: Provide a mount option metacopy=on/off for metadata copyup
ovl: Copy up only metadata during copy up where it makes sense
ovl: Set xattr OVL_XATTR_METACOPY on upper file
ovl: Fix ovl_getattr() to get number of blocks from lower
ovl: Introduce read/write barriers around metacopy flag update
ovl: Set OVL_METACOPY flag during ovl_lookup()
ovl: Return lower dentry if only metadata copy up took place
fs/overlayfs/Kconfig | 9 ++++
fs/overlayfs/copy_up.c | 114 ++++++++++++++++++++++++++++++++++++++---------
fs/overlayfs/inode.c | 12 ++++-
fs/overlayfs/namei.c | 40 +++++++++++++++++
fs/overlayfs/overlayfs.h | 8 +++-
fs/overlayfs/ovl_entry.h | 1 +
fs/overlayfs/super.c | 36 +++++++++++++++
fs/overlayfs/util.c | 53 +++++++++++++++++-----
8 files changed, 237 insertions(+), 36 deletions(-)
--
2.13.5
next reply other threads:[~2017-10-10 15:32 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-10 15:32 Vivek Goyal [this message]
2017-10-10 15:32 ` [PATCH 1/9] ovl: ovl_check_setxattr() get rid of redundant -EOPNOTSUPP check Vivek Goyal
2017-10-10 15:32 ` [PATCH 2/9] ovl: During copy up, first copy up metadata and then data Vivek Goyal
2017-10-10 15:32 ` [PATCH 3/9] ovl: Provide a mount option metacopy=on/off for metadata copyup Vivek Goyal
2017-10-11 1:36 ` Amir Goldstein
2017-10-11 13:57 ` Vivek Goyal
2017-10-11 16:29 ` Amir Goldstein
2017-10-11 16:53 ` Vivek Goyal
2017-10-11 17:36 ` Amir Goldstein
2017-10-11 18:34 ` Vivek Goyal
2017-10-11 20:29 ` Amir Goldstein
2017-10-12 13:23 ` Vivek Goyal
2017-10-12 13:39 ` Amir Goldstein
2017-10-10 15:32 ` [PATCH 4/9] ovl: Copy up only metadata during copy up where it makes sense Vivek Goyal
2017-10-10 15:32 ` [PATCH 5/9] ovl: Set xattr OVL_XATTR_METACOPY on upper file Vivek Goyal
2017-10-10 17:03 ` Amir Goldstein
2017-10-11 20:16 ` Vivek Goyal
2017-10-11 20:44 ` Amir Goldstein
2017-10-10 15:32 ` [PATCH 6/9] ovl: Fix ovl_getattr() to get number of blocks from lower Vivek Goyal
2017-10-10 15:32 ` [PATCH 7/9] ovl: Introduce read/write barriers around metacopy flag update Vivek Goyal
2017-10-10 17:12 ` Amir Goldstein
2017-10-11 20:27 ` Vivek Goyal
2017-10-11 21:08 ` Amir Goldstein
2017-10-13 18:27 ` Vivek Goyal
2017-10-14 6:05 ` Amir Goldstein
2017-10-14 7:00 ` Amir Goldstein
2017-10-16 13:24 ` Vivek Goyal
2017-10-16 13:24 ` Vivek Goyal
2017-10-16 13:31 ` Amir Goldstein
2017-10-10 15:32 ` [PATCH 8/9] ovl: Set OVL_METACOPY flag during ovl_lookup() Vivek Goyal
2017-10-10 15:32 ` [PATCH 9/9] ovl: Return lower dentry if only metadata copy up took place Vivek Goyal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1507649544-4539-1-git-send-email-vgoyal@redhat.com \
--to=vgoyal@redhat.com \
--cc=amir73il@gmail.com \
--cc=ebiederm@xmission.com \
--cc=linux-unionfs@vger.kernel.org \
--cc=miklos@szeredi.hu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).