From: Maurizio Lombardi Date: Mon, 21 Nov 2011 18:52:03 +0000 (+0100) Subject: mkfs.minix: inode numbers are 32-bit wide in V3 filesystems X-Git-Tag: v2.21-rc1~157^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=caa9cc8613e403a59ffe48a6abc77faac1369a66;p=thirdparty%2Futil-linux.git mkfs.minix: inode numbers are 32-bit wide in V3 filesystems --- diff --git a/disk-utils/mkfs.minix.c b/disk-utils/mkfs.minix.c index 826a7e9b78..502c420697 100644 --- a/disk-utils/mkfs.minix.c +++ b/disk-utils/mkfs.minix.c @@ -729,14 +729,25 @@ int main(int argc, char ** argv) { } check_mount(); /* is it already mounted? */ tmp = root_block; - *(short *)tmp = 1; - strcpy(tmp+2,"."); - tmp += dirsize; - *(short *)tmp = 1; - strcpy(tmp+2,".."); - tmp += dirsize; - *(short *)tmp = 2; - strcpy(tmp+2,".badblocks"); + if (fs_version == 3) { + *(uint32_t *)tmp = 1; + strcpy(tmp+4,"."); + tmp += dirsize; + *(uint32_t *)tmp = 1; + strcpy(tmp+4,".."); + tmp += dirsize; + *(uint32_t *)tmp = 2; + strcpy(tmp+4, ".badblocks"); + } else { + *(uint16_t *)tmp = 1; + strcpy(tmp+2,"."); + tmp += dirsize; + *(uint16_t *)tmp = 1; + strcpy(tmp+2,".."); + tmp += dirsize; + *(uint16_t *)tmp = 2; + strcpy(tmp+2, ".badblocks"); + } if (stat(device_name, &statbuf) < 0) err(MKFS_ERROR, _("%s: stat failed"), device_name); if (S_ISBLK(statbuf.st_mode))