On Mon, Dec 28, 2020 at 06:03:26PM +0800, Huang Jianan wrote: > > 在 2020/12/26 14:27, Gao Xiang 写道:
... > > + if (!cfg.mount_point || > > + /* have to drop the mountpoint for rootdir of canned fsconfig */ > > + (cfg.fs_config_file && IS_ROOT(inode))) { > > Hi Xiang, > > I have tested this patch with --fs-config-file, and the problem still > exists. > > IS_ROOT can't be used here to determine the root directory , because > inode->i_parent is null at this time. It will be set after this function. > Hi Jianan, Thanks for your report! Sorry for the troublesome. I need to turn back as the next version.... Very sorry about this! Thanks, Gao Xiang > Thanks, > > Jianan > > > + 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 >