From: Yue Hu <zbestahu@gmail.com>
To: Gao Xiang <hsiangkao@redhat.com>
Cc: Yue Hu <huyue2@yulong.com>,
zhangwen@yulong.com, linux-erofs@lists.ozlabs.org
Subject: Re: [PATCH v2] AOSP: erofs-utils: fix sub-directory prefix for canned fs_config
Date: Mon, 28 Dec 2020 19:46:56 +0800 [thread overview]
Message-ID: <20201228194656.000059dc.zbestahu@gmail.com> (raw)
In-Reply-To: <20201228105146.2939914-1-hsiangkao@redhat.com>
Hi Xiang,
Works fine to me for canned/non-canned fs_config.
Tested-by: Yue Hu <huyue2@yulong.com>
Thx.
On Mon, 28 Dec 2020 18:51:46 +0800
Gao Xiang <hsiangkao@redhat.com> wrote:
> From: Gao Xiang <hsiangkao@aol.com>
>
> "failed to find [%s] in canned fs_config" was observed by using
> "--fs-config-file" option as reported by Yue Hu [1].
>
> The root cause was that the mountpoint prefix to subdirectories is
> also needed if "--mount-point" presents. However, such prefix cannot
> be added by just using erofs_fspath().
>
> One exception is that the root directory itself needs to be handled
> specially for canned fs_config. For such case, the prefix of the root
> directory has to be dropped instead.
>
> [1]
> https://lkml.kernel.org/r/20201222020430.12512-1-zbestahu@gmail.com
>
> Link:
> https://lore.kernel.org/r/20201226062736.29920-1-hsiangkao@aol.com
> Fixes: 8a9e8046f170 ("AOSP: erofs-utils: add fs_config support")
> Reported-by: Yue Hu <huyue2@yulong.com> Signed-off-by: Gao Xiang
> <hsiangkao@aol.com> ---
> changes since v2:
> - fix IS_ROOT misuse reported by Jianan, very sorry about this since
> I know little about canned fs_config.
>
> (please kindly test again...)
>
> lib/inode.c | 39 +++++++++++++++++++++++++--------------
> 1 file changed, 25 insertions(+), 14 deletions(-)
>
> diff --git a/lib/inode.c b/lib/inode.c
> index 0c4839d..e6159c9 100644
> --- a/lib/inode.c
> +++ b/lib/inode.c
> @@ -696,32 +696,43 @@ int erofs_droid_inode_fsconfig(struct
> erofs_inode *inode, /* filesystem_config does not preserve file type
> bits */ mode_t stat_file_type_mask = st->st_mode & S_IFMT;
> unsigned int uid = 0, gid = 0, mode = 0;
> - char *fspath;
> + const char *fspath;
> + char *decorated = NULL;
>
> inode->capabilities = 0;
> + if (!cfg.fs_config_file && !cfg.mount_point)
> + return 0;
> +
> + if (!cfg.mount_point ||
> + /* have to drop the mountpoint for rootdir of canned
> fsconfig */
> + (cfg.fs_config_file && erofs_fspath(path)[0] == '\0')) {
> + fspath = erofs_fspath(path);
> + } else {
> + if (asprintf(&decorated, "%s/%s", cfg.mount_point,
> + erofs_fspath(path)) <= 0)
> + return -ENOMEM;
> + fspath = decorated;
> + }
> +
> if (cfg.fs_config_file)
> - canned_fs_config(erofs_fspath(path),
> + canned_fs_config(fspath,
> S_ISDIR(st->st_mode),
> cfg.target_out_path,
> &uid, &gid, &mode,
> &inode->capabilities);
> - else if (cfg.mount_point) {
> - if (asprintf(&fspath, "%s/%s", cfg.mount_point,
> - erofs_fspath(path)) <= 0)
> - return -ENOMEM;
> -
> + else
> fs_config(fspath, S_ISDIR(st->st_mode),
> cfg.target_out_path,
> &uid, &gid, &mode, &inode->capabilities);
> - free(fspath);
> - }
> - st->st_uid = uid;
> - st->st_gid = gid;
> - st->st_mode = mode | stat_file_type_mask;
>
> erofs_dbg("/%s -> mode = 0x%x, uid = 0x%x, gid = 0x%x, "
> "capabilities = 0x%" PRIx64 "\n",
> - erofs_fspath(path),
> - mode, uid, gid, inode->capabilities);
> + fspath, mode, uid, gid, inode->capabilities);
> +
> + if (decorated)
> + free(decorated);
> + st->st_uid = uid;
> + st->st_gid = gid;
> + st->st_mode = mode | stat_file_type_mask;
> return 0;
> }
> #else
next prev parent reply other threads:[~2020-12-28 11:47 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20201226062736.29920-1-hsiangkao.ref@aol.com>
2020-12-26 6:27 ` [PATCH] AOSP: erofs-utils: fix sub-directory prefix for canned fs_config Gao Xiang via Linux-erofs
2020-12-28 7:05 ` Yue Hu
2020-12-28 10:03 ` Huang Jianan
2020-12-28 10:48 ` Gao Xiang
2020-12-28 10:51 ` [PATCH v2] " Gao Xiang
2020-12-28 11:14 ` Huang Jianan
2020-12-28 11:20 ` Yue Hu
2020-12-28 11:32 ` Gao Xiang
2020-12-28 11:39 ` Yue Hu
2020-12-28 11:46 ` Yue Hu [this message]
2020-12-28 12:43 ` Gao Xiang
2020-12-31 16:31 ` Li GuiFu via Linux-erofs
2020-12-31 16:50 ` Gao Xiang
2020-12-31 16:46 ` Li GuiFu via Linux-erofs
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=20201228194656.000059dc.zbestahu@gmail.com \
--to=zbestahu@gmail.com \
--cc=hsiangkao@redhat.com \
--cc=huyue2@yulong.com \
--cc=linux-erofs@lists.ozlabs.org \
--cc=zhangwen@yulong.com \
/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.