From: Amir Goldstein <amir73il@gmail.com>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: Al Viro <viro@zeniv.linux.org.uk>,
linux-unionfs@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: [PATCH v2 00/20] Overlayfs inodes index
Date: Wed, 7 Jun 2017 10:51:04 +0300 [thread overview]
Message-ID: <1496821884-5178-1-git-send-email-amir73il@gmail.com> (raw)
Miklos,
This set is an independent series a top of current overlayfs-next.
I yanked all the dependencies from previous postings (consistent d_ino,
dir_lock, verify_lower) and included everything needed in this posting.
This work introcuding the inodes index opt-in feature, which provides:
- Hardlinks are not broken on copy up
- Infrastructure for overlayfs NFS export
Hardlink copy up tests including concurrent copy up of lower hardlinks
are available on my xfstests dev branch [1].
There are some more TODO items before this is ready for v4.13, but I'd
love to hear what you think about the direction this has taken so far.
Thanks,
Amir.
TODO:
- Consistency of lower and upper hardlinks (*)
- Cleanup stale and orphan index entries on mount (**)
- Document the inodes index feature
(*) When any lower hardlink has been copied up, we get the indexed
upper inode on lookup of all lower hardlinks and since they all
share the same overlay inode, they have the same 'realinode'.
Opening the lower hardlinks for read gives that lower inode
and not the indexed upper 'realinode'. The tests in [1] demostrate
this problem.
(**) A stale index entry has a missing or stale 'origin' xattr. An
orphan index entry has nlink 1 and all lower hardlinks are covered.
v2:
- Rebase on top of overalyfs-next with all dependencies
- Remove 'verify_lower' dependency and simplify
- Lookup index dentry on ovl_lookup()
- Don't hash broken overlay hardlinks by origin
- Fix nlink count of overlay inodes
- Constant st_ino for indexed hardlinks
v1:
- Upper/work dir exclusive lock
- Introduce verify_lower mount option
- Hash overlay inodes by origin
- Introduce inodes index feature
- Copy up hardlinks using inodes index
[1] https://github.com/amir73il/xfstests/commits/overlayfs-devel
Amir Goldstein (20):
vfs: introduce inode 'inuse' lock
ovl: get exclusive ownership on upper/work dirs
ovl: relax same fs constrain for ovl_check_origin()
ovl: generalize ovl_create_workdir()
ovl: introduce the inodes index dir feature
ovl: verify upper root dir matches lower root dir
ovl: verify index dir matches upper dir
ovl: lookup index entry for non-dir
ovl: move inode helpers to inode.c
ovl: use ovl_inode_init() for initializing new inode
ovl: hash overlay non-dir inodes by copy up origin inode
ovl: fix nlink leak in ovl_rename()
ovl: adjust overlay inode nlink for indexed inodes
ovl: defer upper dir lock to tempfile link
ovl: factor out ovl_copy_up_inode() helper
ovl: generalize ovl_copy_up_locked() using actors
ovl: generalize ovl_copy_up_one() using actors
ovl: implement index dir copy up method
ovl: handle race of concurrent lower hardlinks copy up
ovl: constant inode number for hardlinks
fs/inode.c | 74 ++++++
fs/overlayfs/Kconfig | 20 ++
fs/overlayfs/copy_up.c | 648 ++++++++++++++++++++++++++++++++++++++---------
fs/overlayfs/dir.c | 23 +-
fs/overlayfs/inode.c | 138 +++++++++-
fs/overlayfs/namei.c | 241 +++++++++++++++---
fs/overlayfs/overlayfs.h | 52 ++--
fs/overlayfs/ovl_entry.h | 7 +
fs/overlayfs/super.c | 194 ++++++++++++--
fs/overlayfs/util.c | 45 ++--
include/linux/fs.h | 16 ++
11 files changed, 1235 insertions(+), 223 deletions(-)
--
2.7.4
next reply other threads:[~2017-06-07 7:51 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-07 7:51 Amir Goldstein [this message]
2017-06-07 7:51 ` [PATCH v2 01/20] vfs: introduce inode 'inuse' lock Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 02/20] ovl: get exclusive ownership on upper/work dirs Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 03/20] ovl: relax same fs constrain for ovl_check_origin() Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 04/20] ovl: generalize ovl_create_workdir() Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 05/20] ovl: introduce the inodes index dir feature Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 06/20] ovl: verify upper root dir matches lower root dir Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 07/20] ovl: verify index dir matches upper dir Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 08/20] ovl: lookup index entry for non-dir Amir Goldstein
2017-06-08 12:11 ` Miklos Szeredi
2017-06-08 14:48 ` Amir Goldstein
2017-06-08 15:17 ` Miklos Szeredi
2017-06-08 16:09 ` Amir Goldstein
2017-06-09 8:43 ` Miklos Szeredi
2017-06-09 9:38 ` Amir Goldstein
2017-06-09 11:49 ` Miklos Szeredi
2017-06-09 13:14 ` Miklos Szeredi
2017-06-09 13:24 ` Amir Goldstein
2017-06-09 13:29 ` Miklos Szeredi
2017-06-09 22:56 ` Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 09/20] ovl: move inode helpers to inode.c Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 10/20] ovl: use ovl_inode_init() for initializing new inode Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 11/20] ovl: hash overlay non-dir inodes by copy up origin inode Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 12/20] ovl: fix nlink leak in ovl_rename() Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 13/20] ovl: adjust overlay inode nlink for indexed inodes Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 14/20] ovl: defer upper dir lock to tempfile link Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 15/20] ovl: factor out ovl_copy_up_inode() helper Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 16/20] ovl: generalize ovl_copy_up_locked() using actors Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 17/20] ovl: generalize ovl_copy_up_one() " Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 18/20] ovl: implement index dir copy up method Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 19/20] ovl: handle race of concurrent lower hardlinks copy up Amir Goldstein
2017-06-07 7:51 ` [PATCH v2 20/20] ovl: constant inode number for hardlinks Amir Goldstein
2017-06-07 7:54 ` [PATCH v2 00/20] Overlayfs inodes index Miklos Szeredi
2017-06-07 7:58 ` Amir Goldstein
2017-06-07 14:58 ` Amir Goldstein
2017-06-08 15:00 ` [PATCH v2 21/23] ovl: use inodes index on readonly mount Amir Goldstein
2017-06-08 15:00 ` [PATCH v2 22/23] ovl: move copy up helpers to copy_up.c Amir Goldstein
2017-06-08 15:00 ` [PATCH v2 23/23] ovl: copy up on read operations on indexed lower Amir Goldstein
2017-06-07 17:17 ` [PATCH v2 00/20] Overlayfs inodes index J. Bruce Fields
2017-06-07 18:36 ` Amir Goldstein
2017-06-07 18:59 ` J. Bruce Fields
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=1496821884-5178-1-git-send-email-amir73il@gmail.com \
--to=amir73il@gmail.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-unionfs@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=viro@zeniv.linux.org.uk \
/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