Module Name: src Committed By: christos Date: Sun Aug 27 16:35:51 UTC 2023
Modified Files: src/sys/ufs/ext2fs: ext2fs.h ext2fs_vfsops.c Log Message: - fix cgload/cgsave inconsistencies - add a constant for the rev 0 group descriptor size To generate a diff of this commit: cvs rdiff -u -r1.51 -r1.52 src/sys/ufs/ext2fs/ext2fs.h cvs rdiff -u -r1.224 -r1.225 src/sys/ufs/ext2fs/ext2fs_vfsops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/ufs/ext2fs/ext2fs.h diff -u src/sys/ufs/ext2fs/ext2fs.h:1.51 src/sys/ufs/ext2fs/ext2fs.h:1.52 --- src/sys/ufs/ext2fs/ext2fs.h:1.51 Sat Aug 26 01:22:50 2023 +++ src/sys/ufs/ext2fs/ext2fs.h Sun Aug 27 12:35:51 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ext2fs.h,v 1.51 2023/08/26 05:22:50 riastradh Exp $ */ +/* $NetBSD: ext2fs.h,v 1.52 2023/08/27 16:35:51 christos Exp $ */ /* * Copyright (c) 1982, 1986, 1993 @@ -444,6 +444,7 @@ struct ext2_gd { uint32_t reserved2_hi[3]; }; +#define E2FS_REV0_GD_SIZE (sizeof(struct ext2_gd) / 2) /* 32 */ #define E2FS_BG_INODE_UNINIT 0x0001 /* Inode bitmap not used/initialized */ #define E2FS_BG_BLOCK_UNINIT 0x0002 /* Block bitmap not used/initialized */ #define E2FS_BG_INODE_ZEROED 0x0004 /* On-disk inode table initialized */ Index: src/sys/ufs/ext2fs/ext2fs_vfsops.c diff -u src/sys/ufs/ext2fs/ext2fs_vfsops.c:1.224 src/sys/ufs/ext2fs/ext2fs_vfsops.c:1.225 --- src/sys/ufs/ext2fs/ext2fs_vfsops.c:1.224 Sat Aug 26 17:56:23 2023 +++ src/sys/ufs/ext2fs/ext2fs_vfsops.c Sun Aug 27 12:35:51 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: ext2fs_vfsops.c,v 1.224 2023/08/26 21:56:23 christos Exp $ */ +/* $NetBSD: ext2fs_vfsops.c,v 1.225 2023/08/27 16:35:51 christos Exp $ */ /* * Copyright (c) 1989, 1991, 1993, 1994 @@ -60,7 +60,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ext2fs_vfsops.c,v 1.224 2023/08/26 21:56:23 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ext2fs_vfsops.c,v 1.225 2023/08/27 16:35:51 christos Exp $"); #if defined(_KERNEL_OPT) #include "opt_compat_netbsd.h" @@ -179,8 +179,9 @@ e2fs_cgload(const char *ondisk, struct e } } else { for (int i = 0; i < lim; i++, optr++, iptr += sh) { - memcpy(optr, iptr, 32); - memset((char *)optr + 32, 0, sizeof(*optr) - 32); + memcpy(optr, iptr, E2FS_REV0_GD_SIZE); + memset((char *)optr + E2FS_REV0_GD_SIZE, 0, + sizeof(*optr) - E2FS_REV0_GD_SIZE); } } } @@ -202,11 +203,11 @@ e2fs_cgsave(const struct ext2_gd *inmemo if (shift_cg_entry_size > 6) { for (int i = 0; i < lim; i++, iptr++, optr += sh) { memcpy(optr, iptr, sizeof(*iptr)); - memset(optr + sizeof(*optr), 0, sh - sizeof(*iptr)); + memset(optr + sizeof(*iptr), 0, sh - sizeof(*iptr)); } } else { for (int i = 0; i < lim; i++, iptr++, optr += sh) { - memcpy(optr, iptr, 32); + memcpy(optr, iptr, E2FS_REV0_GD_SIZE); } } } @@ -653,7 +654,7 @@ ext2fs_reload(struct mount *mp, kauth_cr } e2fs_cgload(bp->b_data, &fs->e2fs_gd[i * fs->e2fs_bsize / sizeof(struct ext2_gd)], - fs->e2fs_bsize, 1 << fs->e2fs_group_desc_shift); + fs->e2fs_bsize, fs->e2fs_group_desc_shift); brelse(bp, 0); } @@ -769,7 +770,8 @@ ext2fs_mountfs(struct vnode *devvp, stru m_fs->e2fs_bsize, 0, &bp); if (error) goto out1; - e2fs_cgload(bp->b_data, &m_fs->e2fs_gd[i * sh], + e2fs_cgload(bp->b_data, &m_fs->e2fs_gd[i * m_fs->e2fs_bsize + / sizeof(struct ext2_gd)], m_fs->e2fs_bsize, m_fs->e2fs_group_desc_shift); brelse(bp, 0); bp = NULL;