SOURCES: klibc-fstype_jfs.patch (NEW) - add jfs support to utils/f...

pluto pluto at pld-linux.org
Fri Sep 30 13:51:58 CEST 2005


Author: pluto                        Date: Fri Sep 30 11:51:58 2005 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- add jfs support to utils/fstype.
- TODO added (klibc loader crash).

---- Files affected:
SOURCES:
   klibc-fstype_jfs.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/klibc-fstype_jfs.patch
diff -u /dev/null SOURCES/klibc-fstype_jfs.patch:1.1
--- /dev/null	Fri Sep 30 13:51:58 2005
+++ SOURCES/klibc-fstype_jfs.patch	Fri Sep 30 13:51:53 2005
@@ -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 */
================================================================



More information about the pld-cvs-commit mailing list