From: Vivek Goyal <vgoyal@redhat.com>
To: linux-unionfs@vger.kernel.org
Cc: miklos@szeredi.hu, amir73il@gmail.com, vgoyal@redhat.com
Subject: [PATCH v8 01/15] ovl: Do not look for OVL_XATTR_NLINK if index is not there
Date: Tue, 28 Nov 2017 10:59:45 -0500 [thread overview]
Message-ID: <20171128155959.20114-2-vgoyal@redhat.com> (raw)
In-Reply-To: <20171128155959.20114-1-vgoyal@redhat.com>
Soon, we will be creating OVL_TYPE_ORIGIN entries even for hardlinked
files with index=off. That means, it is possible that there is no
index and hence no OVL_XATTR_NLINK set on upperdentry but lowerdentry
is still there. In that case current implementation gets -ENODATA
from vfs_getxattr)() and it warns and returns fallback. I can get
following warning.
"overlayfs: failed to get index nlink ....."
Pass another parameter to function and pass index dentry. If there is
no index dentry, that should mean that we never set OVL_XATTR_NLINK
and just return fallback.
Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
---
fs/overlayfs/inode.c | 6 +++++-
fs/overlayfs/namei.c | 2 +-
fs/overlayfs/overlayfs.h | 1 +
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c
index 00b6b294272a..8dcfe875ace8 100644
--- a/fs/overlayfs/inode.c
+++ b/fs/overlayfs/inode.c
@@ -544,6 +544,7 @@ int ovl_set_nlink_lower(struct dentry *dentry)
unsigned int ovl_get_nlink(struct dentry *lowerdentry,
struct dentry *upperdentry,
+ struct dentry *index,
unsigned int fallback)
{
int nlink_diff;
@@ -551,6 +552,9 @@ unsigned int ovl_get_nlink(struct dentry *lowerdentry,
char buf[13];
int err;
+ if (!index)
+ return fallback;
+
if (!lowerdentry || !upperdentry || d_inode(lowerdentry)->i_nlink == 1)
return fallback;
@@ -670,7 +674,7 @@ struct inode *ovl_get_inode(struct dentry *dentry, struct dentry *upperdentry,
goto out;
}
- nlink = ovl_get_nlink(lowerdentry, upperdentry,
+ nlink = ovl_get_nlink(lowerdentry, upperdentry, index,
realinode->i_nlink);
set_nlink(inode, nlink);
} else {
diff --git a/fs/overlayfs/namei.c b/fs/overlayfs/namei.c
index 5ef69bc09e0c..a11d77361bef 100644
--- a/fs/overlayfs/namei.c
+++ b/fs/overlayfs/namei.c
@@ -435,7 +435,7 @@ int ovl_verify_index(struct dentry *index, struct ovl_path *lower,
/* Check if index is orphan and don't warn before cleaning it */
if (d_inode(index)->i_nlink == 1 &&
- ovl_get_nlink(origin.dentry, index, 0) == 0)
+ ovl_get_nlink(origin.dentry, index, index, 0) == 0)
err = -ENOENT;
dput(origin.dentry);
diff --git a/fs/overlayfs/overlayfs.h b/fs/overlayfs/overlayfs.h
index 13eab09a6b6f..383bbd3b1fd0 100644
--- a/fs/overlayfs/overlayfs.h
+++ b/fs/overlayfs/overlayfs.h
@@ -275,6 +275,7 @@ int ovl_set_nlink_upper(struct dentry *dentry);
int ovl_set_nlink_lower(struct dentry *dentry);
unsigned int ovl_get_nlink(struct dentry *lowerdentry,
struct dentry *upperdentry,
+ struct dentry *index,
unsigned int fallback);
int ovl_setattr(struct dentry *dentry, struct iattr *attr);
int ovl_getattr(const struct path *path, struct kstat *stat,
--
2.13.6
next prev parent reply other threads:[~2017-11-28 16:00 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-28 15:59 [RFC PATCH v8 00/15] overlayfs: Delayed copy up of data Vivek Goyal
2017-11-28 15:59 ` Vivek Goyal [this message]
2017-11-28 19:09 ` [PATCH v8 01/15] ovl: Do not look for OVL_XATTR_NLINK if index is not there Amir Goldstein
2017-11-28 15:59 ` [PATCH v8 02/15] ovl: disable redirect_dir and index when no xattr support Vivek Goyal
2017-11-28 15:59 ` [PATCH v8 03/15] ovl: ovl_check_setxattr() get rid of redundant -EOPNOTSUPP check Vivek Goyal
2017-11-28 15:59 ` [PATCH v8 04/15] ovl: Create origin xattr on copy up for all files Vivek Goyal
2017-11-28 15:59 ` [PATCH v8 05/15] ovl: Provide a mount option metacopy=on/off for metadata copyup Vivek Goyal
2017-11-28 19:15 ` Amir Goldstein
2017-11-28 15:59 ` [PATCH v8 06/15] ovl: During copy up, first copy up metadata and then data Vivek Goyal
2017-11-28 15:59 ` [PATCH v8 07/15] ovl: Move the copy up helpers to copy_up.c Vivek Goyal
2017-11-28 19:16 ` Amir Goldstein
2017-11-28 15:59 ` [PATCH v8 08/15] ovl: Copy up only metadata during copy up where it makes sense Vivek Goyal
2017-11-28 15:59 ` [PATCH v8 09/15] ovl: Add helper ovl_already_copied_up() Vivek Goyal
2017-11-28 15:59 ` [PATCH v8 10/15] ovl: A new xattr OVL_XATTR_METACOPY for file on upper Vivek Goyal
2017-11-28 19:53 ` Amir Goldstein
2017-11-28 15:59 ` [PATCH v8 11/15] ovl: Fix ovl_getattr() to get number of blocks from lower Vivek Goyal
2017-11-28 15:59 ` [PATCH v8 12/15] ovl: Set OVL_UPPERDATA flag during ovl_lookup() Vivek Goyal
2017-11-28 15:59 ` [PATCH v8 13/15] ovl: Do not expose metacopy only upper dentry from d_real() Vivek Goyal
2017-11-28 15:59 ` [PATCH v8 14/15] ovl: Fix encryption/compression status of a metacopy only file Vivek Goyal
2017-11-28 15:59 ` [PATCH v8 15/15] ovl: Enable metadata only feature Vivek Goyal
2017-11-28 17:04 ` [RFC PATCH v8 00/15] overlayfs: Delayed copy up of data Amir Goldstein
2017-11-28 18:22 ` 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=20171128155959.20114-2-vgoyal@redhat.com \
--to=vgoyal@redhat.com \
--cc=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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.