From 063eba18f1037db103935f92f27ffba557680a49 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Pawe=C5=82=20Sikora?= Date: Fri, 30 Sep 2005 11:51:53 +0000 Subject: [PATCH] - add jfs support to utils/fstype. - TODO added (klibc loader crash). Changed files: klibc-fstype_jfs.patch -> 1.1 klibc.spec -> 1.40 --- klibc-fstype_jfs.patch | 171 +++++++++++++++++++++++++++++++++++++++++ klibc.spec | 6 ++ 2 files changed, 177 insertions(+) create mode 100644 klibc-fstype_jfs.patch diff --git a/klibc-fstype_jfs.patch b/klibc-fstype_jfs.patch new file mode 100644 index 0000000..47d5268 --- /dev/null +++ b/klibc-fstype_jfs.patch @@ -0,0 +1,171 @@ +--- utils/fstype.c.old 2005-09-13 14:50:59.000000000 -0400 ++++ utils/fstype.c 2005-09-13 17:42:33.000000000 -0400 +@@ -7,7 +7,7 @@ + * FSSIZE - filesystem size (if known) + * + * We currently detect (in order): +- * gzip, cramfs, romfs, xfs, minix, ext3, ext2, reiserfs ++ * gzip, cramfs, romfs, xfs, minix, ext3, ext2, reiserfs, jfs + * + * MINIX, ext3 and Reiserfs bits are currently untested. + */ +@@ -29,6 +29,12 @@ + #include "xfs_sb.h" + + /* ++ * Slightly cleaned up version of jfs_superblock to ++ * avoid pulling in other kernel header files. ++ */ ++#include "jfs_superblock.h" ++ ++/* + * reiserfs_fs.h is too sick to include directly. + * Use a cleaned up version. + */ +@@ -174,6 +180,19 @@ + return 0; + } + ++static int jfs_image(const unsigned char *buf, unsigned long *blocks) ++{ ++ const struct jfs_superblock *sb = ++ (const struct jfs_superblock *)buf; ++ ++ if (! strncmp(sb->s_magic,JFS_MAGIC, 4)) { ++ /* 512 is the VFS Block size */ ++ *blocks = __le32_to_cpu(sb->s_size) * 512;; ++ return 1; ++ } ++ return 0; ++} ++ + struct imagetype { + off_t block; + const char name[12]; +@@ -189,7 +208,8 @@ + { 1, "ext3", ext3_image }, + { 1, "ext2", ext2_image }, + { 8, "reiserfs", reiserfs_image }, +- { 64, "reiserfs", reiserfs_image } ++ { 64, "reiserfs", reiserfs_image }, ++ { 32, "jfs", jfs_image } + }; + + int main(int argc, char *argv[]) +--- /dev/null 2005-09-13 04:36:56.252809544 -0400 ++++ utils/jfs_superblock.h 2005-09-13 15:08:00.000000000 -0400 +@@ -0,0 +1,114 @@ ++/* ++ * Copyright (C) International Business Machines Corp., 2000-2003 ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See ++ * the GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++#ifndef _H_JFS_SUPERBLOCK ++#define _H_JFS_SUPERBLOCK ++ ++struct timestruc_t { ++ __le32 tv_sec; ++ __le32 tv_nsec; ++}; ++ ++/* ++ * make the magic number something a human could read ++ */ ++#define JFS_MAGIC "JFS1" /* Magic word */ ++ ++#define JFS_VERSION 2 /* Version number: Version 2 */ ++ ++#define LV_NAME_SIZE 11 /* MUST BE 11 for OS/2 boot sector */ ++ ++/* ++ * aggregate superblock ++ * ++ * The name superblock is too close to super_block, so the name has been ++ * changed to jfs_superblock. The utilities are still using the old name. ++ */ ++struct jfs_superblock { ++ char s_magic[4]; /* 4: magic number */ ++ __le32 s_version; /* 4: version number */ ++ ++ __le64 s_size; /* 8: aggregate size in hardware/LVM blocks; ++ * VFS: number of blocks ++ */ ++ __le32 s_bsize; /* 4: aggregate block size in bytes; ++ * VFS: fragment size ++ */ ++ __le16 s_l2bsize; /* 2: log2 of s_bsize */ ++ __le16 s_l2bfactor; /* 2: log2(s_bsize/hardware block size) */ ++ __le32 s_pbsize; /* 4: hardware/LVM block size in bytes */ ++ __le16 s_l2pbsize; /* 2: log2 of s_pbsize */ ++ __le16 pad; /* 2: padding necessary for alignment */ ++ ++ __le32 s_agsize; /* 4: allocation group size in aggr. blocks */ ++ ++ __le32 s_flag; /* 4: aggregate attributes: ++ * see jfs_filsys.h ++ */ ++ __le32 s_state; /* 4: mount/unmount/recovery state: ++ * see jfs_filsys.h ++ */ ++ __le32 s_compress; /* 4: > 0 if data compression */ ++ ++ __le64 s_ait2; /* 8: first extent of secondary ++ * aggregate inode table ++ */ ++ ++ __le64 s_aim2; /* 8: first extent of secondary ++ * aggregate inode map ++ */ ++ __le32 s_logdev; /* 4: device address of log */ ++ __le32 s_logserial; /* 4: log serial number at aggregate mount */ ++ __le64 s_logpxd; /* 8: inline log extent */ ++ ++ __le64 s_fsckpxd; /* 8: inline fsck work space extent */ ++ ++ struct timestruc_t s_time; /* 8: time last updated */ ++ ++ __le32 s_fsckloglen; /* 4: Number of filesystem blocks reserved for ++ * the fsck service log. ++ * N.B. These blocks are divided among the ++ * versions kept. This is not a per ++ * version size. ++ * N.B. These blocks are included in the ++ * length field of s_fsckpxd. ++ */ ++ char s_fscklog; /* 1: which fsck service log is most recent ++ * 0 => no service log data yet ++ * 1 => the first one ++ * 2 => the 2nd one ++ */ ++ char s_fpack[11]; /* 11: file system volume name ++ * N.B. This must be 11 bytes to ++ * conform with the OS/2 BootSector ++ * requirements ++ * Only used when s_version is 1 ++ */ ++ ++ /* extendfs() parameter under s_state & FM_EXTENDFS */ ++ __le64 s_xsize; /* 8: extendfs s_size */ ++ __le64 s_xfsckpxd; /* 8: extendfs fsckpxd */ ++ __le64 s_xlogpxd; /* 8: extendfs logpxd */ ++ /* - 128 byte boundary - */ ++ ++ char s_uuid[16]; /* 16: 128-bit uuid for volume */ ++ char s_label[16]; /* 16: volume label */ ++ char s_loguuid[16]; /* 16: 128-bit uuid for log device */ ++ ++}; ++ ++#endif /*_H_JFS_SUPERBLOCK */ diff --git a/klibc.spec b/klibc.spec index 72767f1..8086bbe 100644 --- a/klibc.spec +++ b/klibc.spec @@ -1,4 +1,8 @@ # +# TODO: +# - fix klibc loader crash: +# http://www.zytor.com/pipermail/klibc/2005-September/001150.html +# # Conditional build: %bcond_without dist_kernel # build without distribution kernel-headers # @@ -13,6 +17,7 @@ Source0: http://www.kernel.org/pub/linux/libs/klibc/Testing/%{name}-%{version}.t # Source0-md5: baa1f6e0b6acbf9576bb28cca5c32c89 Patch0: %{name}-ksh-quotation.patch Patch1: %{name}-klcc.patch +Patch2: %{name}-fstype_jfs.patch URL: http://www.zytor.com/mailman/listinfo/klibc/ %{?with_dist_kernel:BuildRequires: kernel-headers >= 2.4} BuildRequires: rpmbuild(macros) >= 1.153 @@ -86,6 +91,7 @@ Narz %setup -q %patch0 -p1 %patch1 -p1 +%patch2 -p0 %build cd include -- 2.44.0