linux-unionfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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 14/15] ovl: Fix encryption/compression status of a metacopy only file
Date: Tue, 28 Nov 2017 10:59:58 -0500	[thread overview]
Message-ID: <20171128155959.20114-15-vgoyal@redhat.com> (raw)
In-Reply-To: <20171128155959.20114-1-vgoyal@redhat.com>

If file is metacopy only, it is possible that lower is encrypted while
other is not. In that case, report file as encrypted (despite the fact
that only data is encrypted while metadata is not).

Similarly if lower is compressed, report that in stat for a metacopy
only file.

Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
---
 fs/overlayfs/inode.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c
index da5cc2c6c413..5fbfb670963d 100644
--- a/fs/overlayfs/inode.c
+++ b/fs/overlayfs/inode.c
@@ -66,6 +66,23 @@ int ovl_setattr(struct dentry *dentry, struct iattr *attr)
 	return err;
 }
 
+#define OVL_STATX_ATTR_MASK	(STATX_ATTR_ENCRYPTED | STATX_ATTR_COMPRESSED)
+
+static void ovl_stat_fix_attributes(struct kstat *ustat, struct kstat *lstat) {
+	unsigned int attr_mask, attr;
+
+	attr_mask = lstat->attributes_mask & OVL_STATX_ATTR_MASK;
+	if (!attr_mask)
+		return;
+
+	attr = lstat->attributes & attr_mask;
+	if (!attr)
+		return;
+
+	ustat->attributes_mask |= attr_mask;
+	ustat->attributes |= attr;
+}
+
 int ovl_getattr(const struct path *path, struct kstat *stat,
 		u32 request_mask, unsigned int flags)
 {
@@ -123,8 +140,10 @@ int ovl_getattr(const struct path *path, struct kstat *stat,
 			else
 				stat->dev = ovl_get_pseudo_dev(dentry);
 
-			if (metacopy)
+			if (metacopy) {
 				stat->blocks = lowerstat.blocks;
+				ovl_stat_fix_attributes(stat, &lowerstat);
+			}
 		}
 		if (samefs) {
 			/*
-- 
2.13.6

  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 ` [PATCH v8 01/15] ovl: Do not look for OVL_XATTR_NLINK if index is not there Vivek Goyal
2017-11-28 19:09   ` 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 ` Vivek Goyal [this message]
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-15-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 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).