* [RFC PATCH] AOSP: erofs-utils: add fs_config support [not found] <20200928213549.17580-1-hsiangkao.ref@aol.com> @ 2020-09-28 21:35 ` Gao Xiang via Linux-erofs 2020-09-29 5:13 ` [PATCH v2] " Gao Xiang via Linux-erofs 0 siblings, 1 reply; 8+ messages in thread From: Gao Xiang via Linux-erofs @ 2020-09-28 21:35 UTC (permalink / raw) To: linux-erofs So that mkfs can directly generate images with fs_config. All code for AOSP is wraped up with WITH_ANDROID macro. Signed-off-by: Gao Xiang <hsiangkao@aol.com> --- originated from: https://github.com/hsiangkao/erofs-utils/commit/e30bee2993d35350406ed8b0e0bfd6e580edc734 with some cleanup, and haven't rebuilt with Android environment yet. include/erofs/config.h | 12 +++++++++ include/erofs/internal.h | 3 +++ lib/inode.c | 49 +++++++++++++++++++++++++++++++++++ lib/xattr.c | 56 ++++++++++++++++++++++++++++++++++++++++ mkfs/main.c | 29 ++++++++++++++++++++- 5 files changed, 148 insertions(+), 1 deletion(-) diff --git a/include/erofs/config.h b/include/erofs/config.h index 2f0974900be1..9902a089ab46 100644 --- a/include/erofs/config.h +++ b/include/erofs/config.h @@ -17,6 +17,13 @@ #include <selinux/label.h> #endif +#ifdef WITH_ANDROID +#include <selinux/android.h> +#include <private/android_filesystem_config.h> +#include <private/canned_fs_config.h> +#include <private/fs_config.h> +#endif + enum { FORCE_INODE_COMPACT = 1, FORCE_INODE_EXTENDED, @@ -40,6 +47,11 @@ struct erofs_configure { /* < 0, xattr disabled and INT_MAX, always use inline xattrs */ int c_inline_xattr_tolerance; u64 c_unix_timestamp; +#ifdef WITH_ANDROID + char *mount_point; + char *target_out_path; + char *fs_config_file; +#endif }; extern struct erofs_configure cfg; diff --git a/include/erofs/internal.h b/include/erofs/internal.h index 41da189ffac1..bc77c43719e8 100644 --- a/include/erofs/internal.h +++ b/include/erofs/internal.h @@ -127,6 +127,9 @@ struct erofs_inode { void *idata; void *compressmeta; +#ifdef WITH_ANDROID + uint64_t capabilities; +#endif }; static inline bool is_inode_layout_compression(struct erofs_inode *inode) diff --git a/lib/inode.c b/lib/inode.c index 5013184e66bf..597cbc7fc6dd 100644 --- a/lib/inode.c +++ b/lib/inode.c @@ -673,10 +673,59 @@ static u32 erofs_new_encode_dev(dev_t dev) return (minor & 0xff) | (major << 8) | ((minor & ~0xff) << 12); } +#ifdef WITH_ANDROID +int erofs_droid_inode_fsconfig(struct erofs_inode *inode, + struct stat64 *st, + const char *path) +{ + /* 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; + + inode->capabilities = 0; + if (cfg.fs_config_file) + canned_fs_config(erofs_fspath(path), + 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; + + 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); + return 0; +} +#else +static int erofs_droid_inode_fsconfig(struct erofs_inode *inode, + struct stat64 *st, + const char *path) +{ + return 0; +} +#endif + int erofs_fill_inode(struct erofs_inode *inode, struct stat64 *st, const char *path) { + int err = erofs_droid_inode_fsconfig(inode, st, path); + if (err) + return err; + inode->i_mode = st->st_mode; inode->i_uid = st->st_uid; inode->i_gid = st->st_gid; diff --git a/lib/xattr.c b/lib/xattr.c index 769ab9c716d0..0986e4674d81 100644 --- a/lib/xattr.c +++ b/lib/xattr.c @@ -196,6 +196,12 @@ static struct xattr_item *erofs_get_selabel_xattr(const char *srcpath, unsigned int len[2]; char *kvbuf, *fspath; +#ifdef WITH_ANDROID + if (cfg.mount_point) + ret = asprintf(&fspath, "/%s/%s", cfg.mount_point, + erofs_fspath(srcpath)); + else +#endif ret = asprintf(&fspath, "/%s", erofs_fspath(srcpath)); if (ret <= 0) return ERR_PTR(-ENOMEM); @@ -352,6 +358,52 @@ err: return ret; } +#ifdef WITH_ANDROID +static struct vfs_cap_data __set_caps(uint64_t capabilities) +{ + struct vfs_cap_data cap_data = {0}; + + if (capabilities == 0) + return cap_data; + + cap_data.magic_etc = VFS_CAP_REVISION_2 | VFS_CAP_FLAGS_EFFECTIVE; + cap_data.data[0].permitted = (uint32_t) capabilities; + cap_data.data[0].inheritable = 0; + cap_data.data[1].permitted = (uint32_t) (capabilities >> 32); + cap_data.data[1].inheritable = 0; + return cap_data; +} + +static int erofs_droid_xattr_set_caps(struct erofs_inode *inode) +{ + if (inode->capabilities) { + unsigned int len[2]; + char *kvbuf; + struct vfs_cap_data caps; + struct xattr_item *item; + + len[0] = sizeof("capability") - 1; + len[1] = sizeof(struct vfs_cap_data); + kvbuf = malloc(len[0] + len[1]); + if (!kvbuf) + return -ENOMEM; + + memcpy(kvbuf, "capability", len[0]); + caps = __set_caps(inode->capabilities); + memcpy(kvbuf + len[0], &caps, len[1]); + item = get_xattritem(EROFS_XATTR_INDEX_SECURITY, kvbuf, len); + if (IS_ERR(item)) + return PTR_ERR(item); + if (item) { + ret = erofs_xattr_add(ixattrs, item); + if (ret < 0) + return ret; + } + } + return 0; +} +#endif + int erofs_prepare_xattr_ibody(struct erofs_inode *inode) { int ret; @@ -366,6 +418,10 @@ int erofs_prepare_xattr_ibody(struct erofs_inode *inode) if (ret < 0) return ret; + ret = erofs_droid_xattr_set_caps(inode); + if (ret < 0) + return ret; + if (list_empty(ixattrs)) return 0; diff --git a/mkfs/main.c b/mkfs/main.c index 94bf1e6a2425..191003409b2f 100644 --- a/mkfs/main.c +++ b/mkfs/main.c @@ -35,6 +35,11 @@ static struct option long_options[] = { {"exclude-regex", required_argument, NULL, 3}, #ifdef HAVE_LIBSELINUX {"file-contexts", required_argument, NULL, 4}, +#endif +#ifdef WITH_ANDROID + {"mount-point", required_argument, NULL, 10}, + {"product-out", required_argument, NULL, 11}, + {"fs-config-file", required_argument, NULL, 12}, #endif {0, 0, 0, 0}, }; @@ -210,7 +215,21 @@ static int mkfs_parse_options_cfg(int argc, char *argv[]) if (opt && opt != -EBUSY) return opt; break; - +#ifdef WITH_ANDROID + case 10: + cfg.mount_point = optarg; + /* all trailing '/' should be deleted */ + opt = strlen(cfg.mount_point); + if (opt && optarg[opt - 1] == '/') + optarg[opt - 1] = '\0'; + break; + case 11: + cfg.target_out_path = optarg; + break; + case 12: + cfg.fs_config_file = optarg; + break; +#endif case 1: usage(); exit(0); @@ -404,6 +423,14 @@ int main(int argc, char **argv) return 1; } +#ifdef WITH_ANDROID + if (cfg.fs_config_file && + load_canned_fs_config(cfg.fs_config_file) < 0) { + erofs_err("failed to load fs config %s", cfg.fs_config_file); + return 1; + } +#endif + erofs_show_config(); erofs_set_fs_root(cfg.c_src_path); -- 2.24.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2] AOSP: erofs-utils: add fs_config support 2020-09-28 21:35 ` [RFC PATCH] AOSP: erofs-utils: add fs_config support Gao Xiang via Linux-erofs @ 2020-09-29 5:13 ` Gao Xiang via Linux-erofs 2020-10-07 15:02 ` Gao Xiang via Linux-erofs [not found] ` <7e4490c0-0a3d-0ceb-98ca-73d5eb69932d@aliyun.com> 0 siblings, 2 replies; 8+ messages in thread From: Gao Xiang via Linux-erofs @ 2020-09-29 5:13 UTC (permalink / raw) To: linux-erofs So that mkfs can directly generate images with fs_config. All code for AOSP is wraped up with WITH_ANDROID macro. Signed-off-by: Gao Xiang <hsiangkao@aol.com> --- changes since v1: - fix compile issues on Android / Linux build; - tested with Android system booting; include/erofs/config.h | 12 ++++++++++ include/erofs/internal.h | 3 +++ lib/inode.c | 49 +++++++++++++++++++++++++++++++++++++ lib/xattr.c | 52 ++++++++++++++++++++++++++++++++++++++++ mkfs/main.c | 29 +++++++++++++++++++++- 5 files changed, 144 insertions(+), 1 deletion(-) diff --git a/include/erofs/config.h b/include/erofs/config.h index 2f0974900be1..9902a089ab46 100644 --- a/include/erofs/config.h +++ b/include/erofs/config.h @@ -17,6 +17,13 @@ #include <selinux/label.h> #endif +#ifdef WITH_ANDROID +#include <selinux/android.h> +#include <private/android_filesystem_config.h> +#include <private/canned_fs_config.h> +#include <private/fs_config.h> +#endif + enum { FORCE_INODE_COMPACT = 1, FORCE_INODE_EXTENDED, @@ -40,6 +47,11 @@ struct erofs_configure { /* < 0, xattr disabled and INT_MAX, always use inline xattrs */ int c_inline_xattr_tolerance; u64 c_unix_timestamp; +#ifdef WITH_ANDROID + char *mount_point; + char *target_out_path; + char *fs_config_file; +#endif }; extern struct erofs_configure cfg; diff --git a/include/erofs/internal.h b/include/erofs/internal.h index 41da189ffac1..bc77c43719e8 100644 --- a/include/erofs/internal.h +++ b/include/erofs/internal.h @@ -127,6 +127,9 @@ struct erofs_inode { void *idata; void *compressmeta; +#ifdef WITH_ANDROID + uint64_t capabilities; +#endif }; static inline bool is_inode_layout_compression(struct erofs_inode *inode) diff --git a/lib/inode.c b/lib/inode.c index 5013184e66bf..597cbc7fc6dd 100644 --- a/lib/inode.c +++ b/lib/inode.c @@ -673,10 +673,59 @@ static u32 erofs_new_encode_dev(dev_t dev) return (minor & 0xff) | (major << 8) | ((minor & ~0xff) << 12); } +#ifdef WITH_ANDROID +int erofs_droid_inode_fsconfig(struct erofs_inode *inode, + struct stat64 *st, + const char *path) +{ + /* 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; + + inode->capabilities = 0; + if (cfg.fs_config_file) + canned_fs_config(erofs_fspath(path), + 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; + + 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); + return 0; +} +#else +static int erofs_droid_inode_fsconfig(struct erofs_inode *inode, + struct stat64 *st, + const char *path) +{ + return 0; +} +#endif + int erofs_fill_inode(struct erofs_inode *inode, struct stat64 *st, const char *path) { + int err = erofs_droid_inode_fsconfig(inode, st, path); + if (err) + return err; + inode->i_mode = st->st_mode; inode->i_uid = st->st_uid; inode->i_gid = st->st_gid; diff --git a/lib/xattr.c b/lib/xattr.c index 769ab9c716d0..b9ac223cc746 100644 --- a/lib/xattr.c +++ b/lib/xattr.c @@ -196,6 +196,12 @@ static struct xattr_item *erofs_get_selabel_xattr(const char *srcpath, unsigned int len[2]; char *kvbuf, *fspath; +#ifdef WITH_ANDROID + if (cfg.mount_point) + ret = asprintf(&fspath, "/%s/%s", cfg.mount_point, + erofs_fspath(srcpath)); + else +#endif ret = asprintf(&fspath, "/%s", erofs_fspath(srcpath)); if (ret <= 0) return ERR_PTR(-ENOMEM); @@ -352,6 +358,48 @@ err: return ret; } +#ifdef WITH_ANDROID +static int erofs_droid_xattr_set_caps(struct erofs_inode *inode) +{ + const u64 capabilities = inode->capabilities; + char *kvbuf; + unsigned int len[2]; + struct vfs_cap_data caps; + struct xattr_item *item; + + if (!capabilities) + return 0; + + len[0] = sizeof("capability") - 1; + len[1] = sizeof(caps); + + kvbuf = malloc(len[0] + len[1]); + if (!kvbuf) + return -ENOMEM; + + memcpy(kvbuf, "capability", len[0]); + caps.magic_etc = VFS_CAP_REVISION_2 | VFS_CAP_FLAGS_EFFECTIVE; + caps.data[0].permitted = (u32) capabilities; + caps.data[0].inheritable = 0; + caps.data[1].permitted = (u32) (capabilities >> 32); + caps.data[1].inheritable = 0; + memcpy(kvbuf + len[0], &caps, len[1]); + + item = get_xattritem(EROFS_XATTR_INDEX_SECURITY, kvbuf, len); + if (IS_ERR(item)) + return PTR_ERR(item); + if (!item) + return 0; + + return erofs_xattr_add(&inode->i_xattrs, item); +} +#else +static int erofs_droid_xattr_set_caps(struct erofs_inode *inode) +{ + return 0; +} +#endif + int erofs_prepare_xattr_ibody(struct erofs_inode *inode) { int ret; @@ -366,6 +414,10 @@ int erofs_prepare_xattr_ibody(struct erofs_inode *inode) if (ret < 0) return ret; + ret = erofs_droid_xattr_set_caps(inode); + if (ret < 0) + return ret; + if (list_empty(ixattrs)) return 0; diff --git a/mkfs/main.c b/mkfs/main.c index 94bf1e6a2425..191003409b2f 100644 --- a/mkfs/main.c +++ b/mkfs/main.c @@ -35,6 +35,11 @@ static struct option long_options[] = { {"exclude-regex", required_argument, NULL, 3}, #ifdef HAVE_LIBSELINUX {"file-contexts", required_argument, NULL, 4}, +#endif +#ifdef WITH_ANDROID + {"mount-point", required_argument, NULL, 10}, + {"product-out", required_argument, NULL, 11}, + {"fs-config-file", required_argument, NULL, 12}, #endif {0, 0, 0, 0}, }; @@ -210,7 +215,21 @@ static int mkfs_parse_options_cfg(int argc, char *argv[]) if (opt && opt != -EBUSY) return opt; break; - +#ifdef WITH_ANDROID + case 10: + cfg.mount_point = optarg; + /* all trailing '/' should be deleted */ + opt = strlen(cfg.mount_point); + if (opt && optarg[opt - 1] == '/') + optarg[opt - 1] = '\0'; + break; + case 11: + cfg.target_out_path = optarg; + break; + case 12: + cfg.fs_config_file = optarg; + break; +#endif case 1: usage(); exit(0); @@ -404,6 +423,14 @@ int main(int argc, char **argv) return 1; } +#ifdef WITH_ANDROID + if (cfg.fs_config_file && + load_canned_fs_config(cfg.fs_config_file) < 0) { + erofs_err("failed to load fs config %s", cfg.fs_config_file); + return 1; + } +#endif + erofs_show_config(); erofs_set_fs_root(cfg.c_src_path); -- 2.24.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2] AOSP: erofs-utils: add fs_config support 2020-09-29 5:13 ` [PATCH v2] " Gao Xiang via Linux-erofs @ 2020-10-07 15:02 ` Gao Xiang via Linux-erofs 2020-10-09 2:32 ` Gao Xiang via Linux-erofs [not found] ` <7e4490c0-0a3d-0ceb-98ca-73d5eb69932d@aliyun.com> 1 sibling, 1 reply; 8+ messages in thread From: Gao Xiang via Linux-erofs @ 2020-10-07 15:02 UTC (permalink / raw) To: Li Guifu, Li Guifu; +Cc: linux-erofs On Tue, Sep 29, 2020 at 01:13:02PM +0800, Gao Xiang wrote: > So that mkfs can directly generate images with fs_config. > All code for AOSP is wraped up with WITH_ANDROID macro. > > Signed-off-by: Gao Xiang <hsiangkao@aol.com> > --- > changes since v1: > - fix compile issues on Android / Linux build; > - tested with Android system booting; Guifu, some feedback on this? I'd like to merge it for AOSP preparation. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] AOSP: erofs-utils: add fs_config support 2020-10-07 15:02 ` Gao Xiang via Linux-erofs @ 2020-10-09 2:32 ` Gao Xiang via Linux-erofs 2020-10-10 7:31 ` Chao Yu 0 siblings, 1 reply; 8+ messages in thread From: Gao Xiang via Linux-erofs @ 2020-10-09 2:32 UTC (permalink / raw) To: Li Guifu, Li Guifu, linux-erofs On Wed, Oct 07, 2020 at 11:02:18PM +0800, Gao Xiang via Linux-erofs wrote: > On Tue, Sep 29, 2020 at 01:13:02PM +0800, Gao Xiang wrote: > > So that mkfs can directly generate images with fs_config. > > All code for AOSP is wraped up with WITH_ANDROID macro. > > > > Signed-off-by: Gao Xiang <hsiangkao@aol.com> > > --- > > changes since v1: > > - fix compile issues on Android / Linux build; > > - tested with Android system booting; > > Guifu, some feedback on this? > I'd like to merge it for AOSP preparation. I will merge this if still no response at the end of this week. Since this main logic has already been used by other Android vendors for months and I do need to go forward on AOSP stuff. Thanks, Gao Xiang > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] AOSP: erofs-utils: add fs_config support 2020-10-09 2:32 ` Gao Xiang via Linux-erofs @ 2020-10-10 7:31 ` Chao Yu 2020-10-10 12:18 ` Gao Xiang via Linux-erofs 0 siblings, 1 reply; 8+ messages in thread From: Chao Yu @ 2020-10-10 7:31 UTC (permalink / raw) To: Gao Xiang, Li Guifu, Li Guifu, linux-erofs On 2020/10/9 10:32, Gao Xiang via Linux-erofs wrote: > On Wed, Oct 07, 2020 at 11:02:18PM +0800, Gao Xiang via Linux-erofs wrote: >> On Tue, Sep 29, 2020 at 01:13:02PM +0800, Gao Xiang wrote: >>> So that mkfs can directly generate images with fs_config. >>> All code for AOSP is wraped up with WITH_ANDROID macro. >>> >>> Signed-off-by: Gao Xiang <hsiangkao@aol.com> >>> --- >>> changes since v1: >>> - fix compile issues on Android / Linux build; >>> - tested with Android system booting; >> >> Guifu, some feedback on this? >> I'd like to merge it for AOSP preparation. > > I will merge this if still no response at the end of this > week. Since this main logic has already been used by other > Android vendors for months and I do need to go forward on > AOSP stuff. Good job! :) Acked-by: Chao Yu <yuchao0@huawei.com> Thanks, > > Thanks, > Gao Xiang > >> > . > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] AOSP: erofs-utils: add fs_config support 2020-10-10 7:31 ` Chao Yu @ 2020-10-10 12:18 ` Gao Xiang via Linux-erofs 0 siblings, 0 replies; 8+ messages in thread From: Gao Xiang via Linux-erofs @ 2020-10-10 12:18 UTC (permalink / raw) To: Chao Yu; +Cc: linux-erofs Hi Chao, On Sat, Oct 10, 2020 at 03:31:47PM +0800, Chao Yu wrote: > On 2020/10/9 10:32, Gao Xiang via Linux-erofs wrote: > > On Wed, Oct 07, 2020 at 11:02:18PM +0800, Gao Xiang via Linux-erofs wrote: > > > On Tue, Sep 29, 2020 at 01:13:02PM +0800, Gao Xiang wrote: > > > > So that mkfs can directly generate images with fs_config. > > > > All code for AOSP is wraped up with WITH_ANDROID macro. > > > > > > > > Signed-off-by: Gao Xiang <hsiangkao@aol.com> > > > > --- > > > > changes since v1: > > > > - fix compile issues on Android / Linux build; > > > > - tested with Android system booting; > > > > > > Guifu, some feedback on this? > > > I'd like to merge it for AOSP preparation. > > > > I will merge this if still no response at the end of this > > week. Since this main logic has already been used by other > > Android vendors for months and I do need to go forward on > > AOSP stuff. > > Good job! :) > > Acked-by: Chao Yu <yuchao0@huawei.com> Thank you! I will merge this version since it will be of great help to reduce barrier for other potential Android vendors and promote this into a virtuous circle. BTW, I'm no longer contacting with Guifu by email, hoping that he could also seek some extra time on this like what we're doing now. Thanks, Gao Xiang > > Thanks, > > > > > Thanks, > > Gao Xiang > > > > > > > . > > ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <7e4490c0-0a3d-0ceb-98ca-73d5eb69932d@aliyun.com>]
* Re: [PATCH v2] AOSP: erofs-utils: add fs_config support [not found] ` <7e4490c0-0a3d-0ceb-98ca-73d5eb69932d@aliyun.com> @ 2020-10-11 8:53 ` Li GuiFu via Linux-erofs 2020-10-11 23:48 ` Gao Xiang via Linux-erofs 0 siblings, 1 reply; 8+ messages in thread From: Li GuiFu via Linux-erofs @ 2020-10-11 8:53 UTC (permalink / raw) To: Gao Xiang, linux-erofs 在 2020/10/10 0:33, Li GuiFu 写道: > > > 在 2020/9/29 13:13, Gao Xiang 写道: >> So that mkfs can directly generate images with fs_config. >> All code for AOSP is wraped up with WITH_ANDROID macro. >> >> Signed-off-by: Gao Xiang <hsiangkao@aol.com> >> --- >> changes since v1: >> - fix compile issues on Android / Linux build; >> - tested with Android system booting; >> >> include/erofs/config.h | 12 ++++++++++ >> include/erofs/internal.h | 3 +++ >> lib/inode.c | 49 +++++++++++++++++++++++++++++++++++++ >> lib/xattr.c | 52 ++++++++++++++++++++++++++++++++++++++++ >> mkfs/main.c | 29 +++++++++++++++++++++- >> 5 files changed, 144 insertions(+), 1 deletion(-) >> Please update the usage about mount-point ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] AOSP: erofs-utils: add fs_config support 2020-10-11 8:53 ` Li GuiFu via Linux-erofs @ 2020-10-11 23:48 ` Gao Xiang via Linux-erofs 0 siblings, 0 replies; 8+ messages in thread From: Gao Xiang via Linux-erofs @ 2020-10-11 23:48 UTC (permalink / raw) To: Li GuiFu; +Cc: linux-erofs On Sun, Oct 11, 2020 at 04:53:24PM +0800, Li GuiFu wrote: > > > 锟斤拷 2020/10/10 0:33, Li GuiFu 写锟斤拷: > > > > > > 锟斤拷 2020/9/29 13:13, Gao Xiang 写锟斤拷: > >> So that mkfs can directly generate images with fs_config. > >> All code for AOSP is wraped up with WITH_ANDROID macro. > >> > >> Signed-off-by: Gao Xiang <hsiangkao@aol.com> > >> --- > >> changes since v1: > >> - fix compile issues on Android / Linux build; > >> - tested with Android system booting; > >> > >> include/erofs/config.h | 12 ++++++++++ > >> include/erofs/internal.h | 3 +++ > >> lib/inode.c | 49 +++++++++++++++++++++++++++++++++++++ > >> lib/xattr.c | 52 ++++++++++++++++++++++++++++++++++++++++ > >> mkfs/main.c | 29 +++++++++++++++++++++- > >> 5 files changed, 144 insertions(+), 1 deletion(-) > >> > Please update the usage about mount-point Ok, make sense. since it has been merged, will add another patch to handle that. Thanks, Gao Xiang > ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-10-11 23:49 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <20200928213549.17580-1-hsiangkao.ref@aol.com> 2020-09-28 21:35 ` [RFC PATCH] AOSP: erofs-utils: add fs_config support Gao Xiang via Linux-erofs 2020-09-29 5:13 ` [PATCH v2] " Gao Xiang via Linux-erofs 2020-10-07 15:02 ` Gao Xiang via Linux-erofs 2020-10-09 2:32 ` Gao Xiang via Linux-erofs 2020-10-10 7:31 ` Chao Yu 2020-10-10 12:18 ` Gao Xiang via Linux-erofs [not found] ` <7e4490c0-0a3d-0ceb-98ca-73d5eb69932d@aliyun.com> 2020-10-11 8:53 ` Li GuiFu via Linux-erofs 2020-10-11 23:48 ` Gao Xiang via Linux-erofs
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).