From 8f9d1da1a2fab7260efc926efde58a4c5212c0b9 Mon Sep 17 00:00:00 2001 From: Tomohiro Kusumi Date: Mon, 30 Jan 2023 00:32:28 -0800 Subject: [PATCH] usr.sbin/makefs: Set HAMMER2 inode mode using source inode which is also what other makefs fs do. --- usr.sbin/makefs/hammer2.c | 9 +++++---- usr.sbin/makefs/hammer2/hammer2.h | 10 ++++++---- usr.sbin/makefs/hammer2/hammer2_vnops.c | 18 ++++++++++-------- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/usr.sbin/makefs/hammer2.c b/usr.sbin/makefs/hammer2.c index c38223123b..657d747fbd 100644 --- a/usr.sbin/makefs/hammer2.c +++ b/usr.sbin/makefs/hammer2.c @@ -735,7 +735,7 @@ hammer2_populate_dir(struct m_vnode *dvp, const char *dir, fsnode *root, vp = NULL; error = hammer2_nmkdir(dvp, &vp, cur->name, - strlen(cur->name)); + strlen(cur->name), cur->inode->st.st_mode); if (error) errx(1, "hammer2_nmkdir(\"%s\") failed: %s", cur->name, strerror(error)); @@ -757,7 +757,7 @@ hammer2_populate_dir(struct m_vnode *dvp, const char *dir, fsnode *root, vp = NULL; error = hammer2_ncreate(dvp, &vp, cur->name, - strlen(cur->name)); + strlen(cur->name), cur->inode->st.st_mode); if (error) errx(1, "hammer2_ncreate(\"%s\") failed: %s", cur->name, strerror(error)); @@ -778,7 +778,8 @@ hammer2_populate_dir(struct m_vnode *dvp, const char *dir, fsnode *root, vp = NULL; error = hammer2_nsymlink(dvp, &vp, cur->name, - strlen(cur->name), cur->symlink); + strlen(cur->name), cur->symlink, + cur->inode->st.st_mode); if (error) errx(1, "hammer2_nsymlink(\"%s\") failed: %s", cur->name, strerror(error)); @@ -794,7 +795,7 @@ hammer2_populate_dir(struct m_vnode *dvp, const char *dir, fsnode *root, vp = NULL; error = hammer2_nmknod(dvp, &vp, cur->name, - strlen(cur->name), VFIFO); + strlen(cur->name), VFIFO, cur->inode->st.st_mode); if (error) errx(1, "hammer2_nmknod(\"%s\") failed: %s", cur->name, strerror(error)); diff --git a/usr.sbin/makefs/hammer2/hammer2.h b/usr.sbin/makefs/hammer2/hammer2.h index 3e66c64db7..73973c4c88 100644 --- a/usr.sbin/makefs/hammer2/hammer2.h +++ b/usr.sbin/makefs/hammer2/hammer2.h @@ -1997,13 +1997,15 @@ hammer2_vfsvolume_t *hammer2_get_volume(hammer2_dev_t *hmp, hammer2_off_t offset int hammer2_reclaim(struct m_vnode *vp); int hammer2_write(struct m_vnode *vp, void *buf, size_t size, off_t offset); int hammer2_nresolve(struct m_vnode *dvp, struct m_vnode **vpp, char *name, int nlen); -int hammer2_nmkdir(struct m_vnode *dvp, struct m_vnode **vpp, char *name, int nlen); +int hammer2_nmkdir(struct m_vnode *dvp, struct m_vnode **vpp, char *name, int nlen, + mode_t mode); int hammer2_nlink(struct m_vnode *dvp, struct m_vnode *vp, char *name, int nlen); -int hammer2_ncreate(struct m_vnode *dvp, struct m_vnode **vpp, char *name, int nlen); +int hammer2_ncreate(struct m_vnode *dvp, struct m_vnode **vpp, char *name, int nlen, + mode_t mode); int hammer2_nmknod(struct m_vnode *dvp, struct m_vnode **vpp, char *name, int nlen, - int type); + int type, mode_t mode); int hammer2_nsymlink(struct m_vnode *dvp, struct m_vnode **vpp, char *name, int nlen, - char *target); + char *target, mode_t mode); /* * hammer2_buf.c diff --git a/usr.sbin/makefs/hammer2/hammer2_vnops.c b/usr.sbin/makefs/hammer2/hammer2_vnops.c index cd6145c338..f5a6a6390c 100644 --- a/usr.sbin/makefs/hammer2/hammer2_vnops.c +++ b/usr.sbin/makefs/hammer2/hammer2_vnops.c @@ -1646,7 +1646,8 @@ hammer2_vop_nmkdir(struct vop_nmkdir_args *ap) } int -hammer2_nmkdir(struct m_vnode *dvp, struct m_vnode **vpp, char *name, int nlen) +hammer2_nmkdir(struct m_vnode *dvp, struct m_vnode **vpp, char *name, int nlen, + mode_t mode) { struct namecache nc = { .nc_name = name, @@ -1659,7 +1660,7 @@ hammer2_nmkdir(struct m_vnode *dvp, struct m_vnode **vpp, char *name, int nlen) uid_t va_gid = VNOVAL; //getgid(); struct vattr va = { .va_type = VDIR, - .va_mode = 0755, /* should be tunable */ + .va_mode = mode & ~S_IFMT, .va_uid = va_uid, .va_gid = va_gid, }; @@ -1911,7 +1912,8 @@ hammer2_vop_ncreate(struct vop_ncreate_args *ap) } int -hammer2_ncreate(struct m_vnode *dvp, struct m_vnode **vpp, char *name, int nlen) +hammer2_ncreate(struct m_vnode *dvp, struct m_vnode **vpp, char *name, int nlen, + mode_t mode) { struct namecache nc = { .nc_name = name, @@ -1924,7 +1926,7 @@ hammer2_ncreate(struct m_vnode *dvp, struct m_vnode **vpp, char *name, int nlen) uid_t va_gid = VNOVAL; //getgid(); struct vattr va = { .va_type = VREG, - .va_mode = 0644, /* should be tunable */ + .va_mode = mode & ~S_IFMT, .va_uid = va_uid, .va_gid = va_gid, }; @@ -2017,7 +2019,7 @@ hammer2_vop_nmknod(struct vop_nmknod_args *ap) int hammer2_nmknod(struct m_vnode *dvp, struct m_vnode **vpp, char *name, int nlen, - int type) + int type, mode_t mode) { struct namecache nc = { .nc_name = name, @@ -2030,7 +2032,7 @@ hammer2_nmknod(struct m_vnode *dvp, struct m_vnode **vpp, char *name, int nlen, uid_t va_gid = VNOVAL; //getgid(); struct vattr va = { .va_type = type, - .va_mode = 0644, /* should be tunable */ + .va_mode = mode & ~S_IFMT, .va_uid = va_uid, .va_gid = va_gid, }; @@ -2158,7 +2160,7 @@ hammer2_vop_nsymlink(struct vop_nsymlink_args *ap) int hammer2_nsymlink(struct m_vnode *dvp, struct m_vnode **vpp, char *name, int nlen, - char *target) + char *target, mode_t mode) { struct namecache nc = { .nc_name = name, @@ -2171,7 +2173,7 @@ hammer2_nsymlink(struct m_vnode *dvp, struct m_vnode **vpp, char *name, int nlen uid_t va_gid = VNOVAL; //getgid(); struct vattr va = { .va_type = VDIR, - .va_mode = 0755, /* should be tunable */ + .va_mode = mode & ~S_IFMT, .va_uid = va_uid, .va_gid = va_gid, }; -- 2.41.0