Group :: System/Configuration/Hardware
RPM: gpart
Main Changelog Spec Patches Sources Download Gear Bugs and FR Repocop
Patch: gpart-0.1h-reiserfs-3.6.patch
Download
Download
diff -rupN ./gpart-0.1h.orig/README ./gpart-0.1h/README
--- ./gpart-0.1h.orig/README Wed Feb 7 20:58:12 2001
+++ ./gpart-0.1h/README Fri Jan 10 16:29:43 2003
@@ -24,25 +24,25 @@
- Currently recognized partitions/filesystems types ---------------------
- Modname Typ Description
- fat 0x01 "Primary DOS with 12 bit FAT"
- 0x04 "Primary DOS with 16 bit FAT (<= 32MB)"
- 0x06 "Primary 'big' DOS (> 32MB)"
- 0x0B "DOS or Windows 95 with 32 bit FAT"
- 0x0C "DOS or Windows 95 with 32 bit FAT, LBA"
- ntfs 0x07 "OS/2 HPFS, NTFS, QNX or Advanced UNIX"
- hpfs 0x07 "OS/2 HPFS, NTFS, QNX or Advanced UNIX"
- ext2 0x83 "Linux ext2 filesystem"
- lswap 0x82 "Linux swap"
- bsddl 0xA5 "FreeBSD/NetBSD/386BSD"
- s86dl 0x82 "Solaris/x86 disklabel"
- minix 0x80 "Minix V1"
- 0x81 "Minix V2"
- rfs 0x83 "Reiser filesystem"
- hmlvm 0xFE "Linux LVM physical volumes"
- qnx4 0x4F "QNX 4.x"
- beos 0xEB "BeOS fs"
- xfs 0x83 "SGI XFS filesystem"
+ Modname Typ Description
+ fat 0x01 "Primary DOS with 12 bit FAT"
+ 0x04 "Primary DOS with 16 bit FAT (<= 32MB)"
+ 0x06 "Primary 'big' DOS (> 32MB)"
+ 0x0B "DOS or Windows 95 with 32 bit FAT"
+ 0x0C "DOS or Windows 95 with 32 bit FAT, LBA"
+ ntfs 0x07 "OS/2 HPFS, NTFS, QNX or Advanced UNIX"
+ hpfs 0x07 "OS/2 HPFS, NTFS, QNX or Advanced UNIX"
+ ext2 0x83 "Linux ext2 filesystem"
+ lswap 0x82 "Linux swap"
+ bsddl 0xA5 "FreeBSD/NetBSD/386BSD"
+ s86dl 0x82 "Solaris/x86 disklabel"
+ minix 0x80 "Minix V1"
+ 0x81 "Minix V2"
+ reiserfs 0x83 "ReiserFS filesystem"
+ hmlvm 0xFE "Linux LVM physical volumes"
+ qnx4 0x4F "QNX 4.x"
+ beos 0xEB "BeOS fs"
+ xfs 0x83 "SGI XFS filesystem"
diff -rupN ./gpart-0.1h.orig/man/gpart.man ./gpart-0.1h/man/gpart.man
--- ./gpart-0.1h.orig/man/gpart.man Wed Feb 7 20:54:18 2001
+++ ./gpart-0.1h/man/gpart.man Fri Jan 10 16:31:52 2003
@@ -63,8 +63,8 @@ MS Windows NT/2000 filesystem.
.I qnx4
QNX 4.x filesystem.
.TP
-.I rfs
-The Reiser filesystem (version 3.5.X, X > 11).
+.I reiserfs
+The Reiser filesystem (version 3.5.X, X > 11, 3.6.X).
.TP
.I s86dl
Sun Solaris on Intel platforms uses a sub-partitioning
diff -rupN ./gpart-0.1h.orig/src/Makefile ./gpart-0.1h/src/Makefile
--- ./gpart-0.1h.orig/src/Makefile Tue Jan 30 20:01:08 2001
+++ ./gpart-0.1h/src/Makefile Fri Jan 10 16:32:24 2003
@@ -19,7 +19,7 @@ CFLAGS+=-DGPART_LANG=\'$(GPART_LANG)\'
endif
-mod=ext2 lswap fat bsddl ntfs hpfs s86dl minix rfs hmlvm qnx4 beos xfs
+mod=ext2 lswap fat bsddl ntfs hpfs s86dl minix reiserfs hmlvm qnx4 beos xfs
modobj=$(foreach m,$(mod),gm_$(m).o)
obj=gpart.o gmodules.o disku.o l64seek.o $(modobj)
src=$(obj:.o=.c)
diff -rupN ./gpart-0.1h.orig/src/gm_reiserfs.c ./gpart-0.1h/src/gm_reiserfs.c
--- ./gpart-0.1h.orig/src/gm_reiserfs.c Thu Jan 1 03:00:00 1970
+++ ./gpart-0.1h/src/gm_reiserfs.c Fri Jan 10 17:25:30 2003
@@ -0,0 +1,91 @@
+/*
+ * gm_reiserfs.c -- gpart ReiserFS guessing module
+ *
+ * gpart (c) 1999-2001 Michail Brzitwa <mb@ichabod.han.de>
+ * Guess PC-type hard disk partitions.
+ *
+ * gpart 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, or (at your
+ * option) any later version.
+ *
+ * Created: 21.01.1999 <mb@ichabod.han.de>
+ * Modified: 26.12.2000 Francis Devereux <francis@devereux.tc>
+ * Added reiserfs 3.5.28 support.
+ * Modified: 10.01.2003 Yury Umanets <umka@namesys.com>
+ * Added reiserfs 3.6.x support.
+ *
+ */
+
+#include <string.h>
+#include <errno.h>
+#include "gpart.h"
+#include "gm_reiserfs.h"
+
+static const char rcsid[] = "$Id: gm_reiserfs.c,v 1.5 2003/01/10 16:38:08 mb Exp mb $";
+
+
+int reiserfs_init(disk_desc *d,g_module *m)
+{
+ if ((d == 0) || (m == 0))
+ return (0);
+
+ m->m_desc = "ReiserFS filesystem";
+ return (REISERFS_FIRST_BLOCK * 1024 + SB_V35_SIZE);
+}
+
+
+
+int reiserfs_term(disk_desc *d)
+{
+ return (1);
+}
+
+
+
+int reiserfs_gfun(disk_desc *d,g_module *m)
+{
+ struct reiserfs_super_block_v35 *sb;
+ dos_part_entry *pt = &m->m_part;
+ s64_t size;
+
+ m->m_guess = GM_NO;
+ sb = (struct reiserfs_super_blockv35 *)(d->d_sbuf + REISERFS_FIRST_BLOCK * 1024);
+ if (strncmp(sb->s_magic,REISERFS_SUPER_V35_MAGIC,12) == 0 ||
+ strncmp(sb->s_magic,REISERFS_SUPER_V36_MAGIC,12) == 0)
+ {
+ /*
+ * sanity checks.
+ */
+
+ if (sb->s_block_count < sb->s_free_blocks)
+ return (1);
+
+ if (sb->s_block_count < REISERFS_MIN_BLOCK_AMOUNT)
+ return (1);
+
+ if ((sb->s_state != REISERFS_VALID_FS) &&
+ (sb->s_state != REISERFS_ERROR_FS))
+ return (1);
+
+ if (sb->s_oid_maxsize % 2) /* must be even */
+ return (1);
+
+ if (sb->s_oid_maxsize < sb->s_oid_cursize)
+ return (1);
+
+ if ((sb->s_blocksize != 4096) && (sb->s_blocksize != 8192))
+ return (1);
+
+ /*
+ * ok.
+ */
+
+ m->m_guess = GM_YES;
+ pt->p_start = d->d_nsb;
+ size = sb->s_block_count; size *= sb->s_blocksize; size /= d->d_ssize;
+ pt->p_size = (unsigned long)size;
+ pt->p_typ = 0x83;
+ }
+ return (1);
+}
diff -rupN ./gpart-0.1h.orig/src/gm_reiserfs.h ./gpart-0.1h/src/gm_reiserfs.h
--- ./gpart-0.1h.orig/src/gm_reiserfs.h Thu Jan 1 03:00:00 1970
+++ ./gpart-0.1h/src/gm_reiserfs.h Fri Jan 10 17:25:55 2003
@@ -0,0 +1,82 @@
+/*
+ * gm_reiserfs.h -- gpart ReiserFS guessing module header
+ *
+ * gpart (c) 1999-2001 Michail Brzitwa <mb@ichabod.han.de>
+ * Guess PC-type hard disk partitions.
+ *
+ * gpart 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, or (at your
+ * option) any later version.
+ *
+ * Created: 21.01.1999 <mb@ichabod.han.de>
+ * Modified: 26.12.2000 Francis Devereux <francis@devereux.tc>
+ * Update support reiserfs version 3.5.28
+ * Modified: 10.01.2003 Yury Umanets <umka@namesys.com>
+ * Added reiserfs 3.6.x support.
+ *
+ */
+
+#ifndef _GM_reiserfs_H
+#define _GM_reiserfs_H
+
+/* imported from asm/types.h */
+typedef __signed__ char __s8;
+typedef unsigned char __u8;
+
+typedef __signed__ short __s16;
+typedef unsigned short __u16;
+
+typedef __signed__ int __s32;
+typedef unsigned int __u32;
+
+/*
+ * taken from ReiserFS v3.5.28, v3.6.x. Reiserfs Copyright 1996-2000 Hans Reiser
+ */
+
+#define REISERFS_SUPER_V35_MAGIC "ReIsErFs"
+#define REISERFS_SUPER_V36_MAGIC "ReIsEr2Fs"
+
+#define REISERFS_FIRST_BLOCK 64
+#define REISERFS_VALID_FS 1
+#define REISERFS_ERROR_FS 2
+#define REISERFS_MIN_BLOCK_AMOUNT 100
+
+struct reiserfs_super_block_v35
+{
+ __u32 s_block_count; /* blocks count */
+ __u32 s_free_blocks; /* free blocks count */
+ __u32 s_root_block; /* root block number */
+ __u32 s_journal_block; /* journal block number */
+ __u32 s_journal_dev; /* journal device number */
+ __u32 s_orig_journal_size; /* size of the journal on FS creation. used to make sure they don't overflow it */
+ __u32 s_journal_trans_max; /* max number of blocks in a transaction. */
+ __u32 s_journal_block_count; /* total size of the journal. can change over time */
+ __u32 s_journal_max_batch; /* max number of blocks to batch into a trans */
+ __u32 s_journal_max_commit_age; /* in seconds, how old can an async commit be */
+ __u32 s_journal_max_trans_age; /* in seconds, how old can a transaction be */
+ __u16 s_blocksize; /* block size */
+ __u16 s_oid_maxsize; /* max size of object id array, see get_objectid() commentary */
+ __u16 s_oid_cursize; /* current size of object id array */
+ __u16 s_state; /* valid or error */
+ char s_magic[12]; /* reiserfs magic string indicates that file system is reiserfs */
+ __u32 s_hash_function_code; /* indicate, what hash fuction is being use to sort names in a directory*/
+ __u16 s_tree_height; /* height of disk tree */
+ __u16 s_bmap_nr; /* amount of bitmap blocks needed to address each block of file system */
+ __u16 s_reserved;
+};
+
+#define SB_V35_SIZE (sizeof(struct reiserfs_super_block_v35))
+
+struct reiserfs_super_block_v36 {
+ struct reiserfs_super_block_v35 s_v35;
+ __u32 s_inode_generation;
+ __u32 s_flags;
+ char s_uuid[16];
+ char s_label[16];
+ char s_unused[88];
+};
+
+#define SB_V36_SIZE (sizeof(struct reiserfs_super_block_v36))
+
+#endif /* _GM_REISERFS_H */
diff -rupN ./gpart-0.1h.orig/src/gm_rfs.c ./gpart-0.1h/src/gm_rfs.c
--- ./gpart-0.1h.orig/src/gm_rfs.c Wed Feb 7 21:08:08 2001
+++ ./gpart-0.1h/src/gm_rfs.c Thu Jan 1 03:00:00 1970
@@ -1,88 +0,0 @@
-/*
- * gm_rfs.c -- gpart ReiserFS guessing module
- *
- * gpart (c) 1999-2001 Michail Brzitwa <mb@ichabod.han.de>
- * Guess PC-type hard disk partitions.
- *
- * gpart 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, or (at your
- * option) any later version.
- *
- * Created: 21.01.1999 <mb@ichabod.han.de>
- * Modified: 26.12.2000 Francis Devereux <francis@devereux.tc>
- * Added reiserfs 3.5.28 support.
- *
- */
-
-#include <string.h>
-#include <errno.h>
-#include "gpart.h"
-#include "gm_rfs.h"
-
-static const char rcsid[] = "$Id: gm_rfs.c,v 1.5 2001/02/07 18:08:08 mb Exp mb $";
-
-
-int rfs_init(disk_desc *d,g_module *m)
-{
- if ((d == 0) || (m == 0))
- return (0);
-
- m->m_desc = "Reiser filesystem";
- return (REISERFS_FIRST_BLOCK * 1024 + SB_SIZE);
-}
-
-
-
-int rfs_term(disk_desc *d)
-{
- return (1);
-}
-
-
-
-int rfs_gfun(disk_desc *d,g_module *m)
-{
- struct reiserfs_super_block *sb;
- dos_part_entry *pt = &m->m_part;
- s64_t size;
-
- m->m_guess = GM_NO;
- sb = (struct reiserfs_super_block *)(d->d_sbuf + REISERFS_FIRST_BLOCK * 1024);
- if (strncmp(sb->s_magic,REISERFS_SUPER_MAGIC,12) == 0)
- {
- /*
- * sanity checks.
- */
-
- if (sb->s_block_count < sb->s_free_blocks)
- return (1);
-
- if (sb->s_block_count < REISERFS_MIN_BLOCK_AMOUNT)
- return (1);
-
- if ((sb->s_state != REISERFS_VALID_FS) &&
- (sb->s_state != REISERFS_ERROR_FS))
- return (1);
-
- if (sb->s_oid_maxsize % 2) /* must be even */
- return (1);
-
- if (sb->s_oid_maxsize < sb->s_oid_cursize)
- return (1);
-
- if ((sb->s_blocksize != 4096) && (sb->s_blocksize != 8192))
- return (1);
-
- /*
- * ok.
- */
-
- m->m_guess = GM_YES;
- pt->p_start = d->d_nsb;
- size = sb->s_block_count; size *= sb->s_blocksize; size /= d->d_ssize;
- pt->p_size = (unsigned long)size;
- pt->p_typ = 0x83;
- }
- return (1);
-}
diff -rupN ./gpart-0.1h.orig/src/gm_rfs.h ./gpart-0.1h/src/gm_rfs.h
--- ./gpart-0.1h.orig/src/gm_rfs.h Mon Jan 29 16:34:35 2001
+++ ./gpart-0.1h/src/gm_rfs.h Thu Jan 1 03:00:00 1970
@@ -1,68 +0,0 @@
-/*
- * gm_rfs.h -- gpart ReiserFS guessing module header
- *
- * gpart (c) 1999-2001 Michail Brzitwa <mb@ichabod.han.de>
- * Guess PC-type hard disk partitions.
- *
- * gpart 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, or (at your
- * option) any later version.
- *
- * Created: 21.01.1999 <mb@ichabod.han.de>
- * Modified: 26.12.2000 Francis Devereux <francis@devereux.tc>
- * Update support reiserfs version 3.5.28
- *
- */
-
-#ifndef _GM_RFS_H
-#define _GM_RFS_H
-
-/* imported from asm/types.h */
-typedef __signed__ char __s8;
-typedef unsigned char __u8;
-
-typedef __signed__ short __s16;
-typedef unsigned short __u16;
-
-typedef __signed__ int __s32;
-typedef unsigned int __u32;
-
-/*
- * taken from ReiserFS v3.5.28. Reiserfs Copyright 1996-2000 Hans Reiser
- */
-
-#define REISERFS_SUPER_MAGIC "ReIsErFs"
-#define REISERFS_FIRST_BLOCK 64
-#define REISERFS_VALID_FS 1
-#define REISERFS_ERROR_FS 2
-#define REISERFS_MIN_BLOCK_AMOUNT 100
-
-struct reiserfs_super_block
-{
- __u32 s_block_count; /* blocks count */
- __u32 s_free_blocks; /* free blocks count */
- __u32 s_root_block; /* root block number */
- __u32 s_journal_block; /* journal block number */
- __u32 s_journal_dev; /* journal device number */
- __u32 s_orig_journal_size; /* size of the journal on FS creation. used to make sure they don't overflow it */
- __u32 s_journal_trans_max; /* max number of blocks in a transaction. */
- __u32 s_journal_block_count; /* total size of the journal. can change over time */
- __u32 s_journal_max_batch; /* max number of blocks to batch into a trans */
- __u32 s_journal_max_commit_age; /* in seconds, how old can an async commit be */
- __u32 s_journal_max_trans_age; /* in seconds, how old can a transaction be */
- __u16 s_blocksize; /* block size */
- __u16 s_oid_maxsize; /* max size of object id array, see get_objectid() commentary */
- __u16 s_oid_cursize; /* current size of object id array */
- __u16 s_state; /* valid or error */
- char s_magic[12]; /* reiserfs magic string indicates that file system is reiserfs */
- __u32 s_hash_function_code; /* indicate, what hash fuction is being use to sort names in a directory*/
- __u16 s_tree_height; /* height of disk tree */
- __u16 s_bmap_nr; /* amount of bitmap blocks needed to address each block of file system */
- __u16 s_reserved;
-};
-
-#define SB_SIZE (sizeof(struct reiserfs_super_block))
-
-
-#endif /* _GM_RFS_H */
diff -rupN ./gpart-0.1h.orig/src/gmodules.c ./gpart-0.1h/src/gmodules.c
--- ./gpart-0.1h.orig/src/gmodules.c Tue Jan 30 20:01:00 2001
+++ ./gpart-0.1h/src/gmodules.c Fri Jan 10 16:31:28 2003
@@ -154,7 +154,7 @@ void g_mod_addinternals()
GMODINS(bsddl);
GMODINS(lswap);
GMODINS(qnx4);
- GMODINS(rfs);
+ GMODINS(reiserfs);
GMODINS(ntfs);
GMODINS(hpfs);
GMODINS(minix);
diff -rupN ./gpart-0.1h.orig/src/gmodules.h ./gpart-0.1h/src/gmodules.h
--- ./gpart-0.1h.orig/src/gmodules.h Tue Jan 30 20:00:47 2001
+++ ./gpart-0.1h/src/gmodules.h Fri Jan 10 16:31:23 2003
@@ -63,7 +63,7 @@ g_module *g_mod_setweight(char *,float);
GMODDECL(bsddl); GMODDECL(ext2); GMODDECL(fat);
GMODDECL(hpfs); GMODDECL(lswap); GMODDECL(ntfs);
-GMODDECL(s86dl); GMODDECL(minix); GMODDECL(rfs);
+GMODDECL(s86dl); GMODDECL(minix); GMODDECL(reiserfs);
GMODDECL(hmlvm); GMODDECL(qnx4); GMODDECL(beos);
GMODDECL(xfs);