From: Amir Goldstein <amir73il@gmail.com>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: linux-unionfs@vger.kernel.org
Subject: [PATCH 00/17] Avoid breaking lower hardlinks on copy up
Date: Fri, 2 Jun 2017 17:04:27 +0300 [thread overview]
Message-ID: <1496412284-4113-1-git-send-email-amir73il@gmail.com> (raw)
Miklos,
This is the curernt pile. Since the pile is quite big, touches
many parts of the code and raises some user API questions, I wanted
to send it out early for review, so there are still some known issues.
I have improved hardlink copy up tests including concurrent copy
up of lower hardlinks on my xfstests dev branch [1].
This work does NOT assume samefs.
Known issues:
- Missing code on mount to verify/cleanup stale index entries
- Missing documentation
- Better handling of existing broken hardlink with origin (*)
- Non-upper alias content is inconsistent with upper aliases (**)
(*) Currently upper entries are hashed by origin inode if it is
known AND inodes index feature is enabled. This is not enough.
Need to also check that the origin inode in question is indexed.
(**) This is for the same reason that ro/rw fd content is inconsistent.
The 2 hardlink copy up xfstests fail because of that.
Need to lookup the index on lookup of non-upper and store it in
dentry for open RDONLY. Something like my rocopyup POC [2].
Probably not for v4.13 though...
[1] https://github.com/amir73il/xfstests/commits/overlayfs-devel
[2] https://github.com/amir73il/linux/commits/ovl-rocopyup
Amir Goldstein (17):
vfs: add helper wait_on_inode_inuse()
ovl: generalize ovl_create_workdir()
ovl: introduce the inodes index dir feature
ovl: verify index dir matches upper dir
ovl: create helper ovl_lookup_index()
ovl: move inode helpers to inode.c
ovl: create helpers for initializing hashed inode
ovl: use ovl_inode_init() for initializing new inode
ovl: allow hashing non upper inodes
ovl: allow hashing inodes by arbitrary key
ovl: hash overlay non-dir inodes by copy up origin inode
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
fs/inode.c | 24 ++
fs/overlayfs/Kconfig | 20 ++
fs/overlayfs/copy_up.c | 630 ++++++++++++++++++++++++++++++++++++++---------
fs/overlayfs/dir.c | 2 +-
fs/overlayfs/inode.c | 66 ++++-
fs/overlayfs/namei.c | 72 +++++-
fs/overlayfs/overlayfs.h | 43 +++-
fs/overlayfs/ovl_entry.h | 3 +
fs/overlayfs/super.c | 154 +++++++++---
fs/overlayfs/util.c | 26 +-
include/linux/fs.h | 1 +
11 files changed, 848 insertions(+), 193 deletions(-)
--
2.7.4
next reply other threads:[~2017-06-02 14:04 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-02 14:04 Amir Goldstein [this message]
2017-06-02 14:04 ` [PATCH 01/17] vfs: add helper wait_on_inode_inuse() Amir Goldstein
2017-06-02 14:04 ` [PATCH 02/17] ovl: generalize ovl_create_workdir() Amir Goldstein
2017-06-02 14:04 ` [PATCH 03/17] ovl: introduce the inodes index dir feature Amir Goldstein
2017-06-02 14:04 ` [PATCH 04/17] ovl: verify index dir matches upper dir Amir Goldstein
2017-06-02 14:04 ` [PATCH 05/17] ovl: create helper ovl_lookup_index() Amir Goldstein
2017-06-02 14:04 ` [PATCH 06/17] ovl: move inode helpers to inode.c Amir Goldstein
2017-06-02 14:04 ` [PATCH 07/17] ovl: create helpers for initializing hashed inode Amir Goldstein
2017-06-02 14:04 ` [PATCH 08/17] ovl: use ovl_inode_init() for initializing new inode Amir Goldstein
2017-06-02 14:04 ` [PATCH 09/17] ovl: allow hashing non upper inodes Amir Goldstein
2017-06-02 14:04 ` [PATCH 10/17] ovl: allow hashing inodes by arbitrary key Amir Goldstein
2017-06-02 14:04 ` [PATCH 11/17] ovl: hash overlay non-dir inodes by copy up origin inode Amir Goldstein
2017-06-05 12:42 ` Amir Goldstein
2017-06-02 14:04 ` [PATCH 12/17] ovl: defer upper dir lock to tempfile link Amir Goldstein
2017-06-02 14:04 ` [PATCH 13/17] ovl: factor out ovl_copy_up_inode() helper Amir Goldstein
2017-06-02 14:04 ` [PATCH 14/17] ovl: generalize ovl_copy_up_locked() using actors Amir Goldstein
2017-06-02 14:04 ` [PATCH 15/17] ovl: generalize ovl_copy_up_one() " Amir Goldstein
2017-06-02 14:04 ` [PATCH 16/17] ovl: implement index dir copy up method Amir Goldstein
2017-06-02 14:04 ` [PATCH 17/17] ovl: handle race of concurrent lower hardlinks copy up Amir Goldstein
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=1496412284-4113-1-git-send-email-amir73il@gmail.com \
--to=amir73il@gmail.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