[PATCH] 2.4 reiserfs 64bit and bigendian bugfixes

Oleg Drokin on behalf of Hans Reiser (reiser@namesys.com)
Mon, 11 Feb 2002 17:02:37 +0300


--4Ckj6UjgE2iN1+kY
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hello!

This patch solves known reiserfs 64bit issues. Also erroneous
le64_to_cpu converted to correct cpu_to_le64.

Bye,
Oleg

--4Ckj6UjgE2iN1+kY
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="64bit_and_bigendian_fixes.diff"

diff -uNr linux-2.4.18-pre9.orig/fs/reiserfs/journal.c linux-2.4.18-pre9/fs/reiserfs/journal.c
--- linux-2.4.18-pre9.orig/fs/reiserfs/journal.c Mon Feb 11 15:23:32 2002
+++ linux-2.4.18-pre9/fs/reiserfs/journal.c Mon Feb 11 15:24:38 2002
@@ -793,7 +793,7 @@
while(cn) {
if (cn->blocknr != 0) {
if (debug) {
- printk("block %lu, bh is %d, state %d\n", cn->blocknr, cn->bh ? 1: 0,
+ printk("block %lu, bh is %d, state %ld\n", cn->blocknr, cn->bh ? 1: 0,
cn->state) ;
}
fake_bh.b_blocknr = cn->blocknr ;
diff -uNr linux-2.4.18-pre9.orig/fs/reiserfs/procfs.c linux-2.4.18-pre9/fs/reiserfs/procfs.c
--- linux-2.4.18-pre9.orig/fs/reiserfs/procfs.c Mon Feb 11 15:23:29 2002
+++ linux-2.4.18-pre9/fs/reiserfs/procfs.c Mon Feb 11 15:24:38 2002
@@ -79,7 +79,7 @@
struct super_block *sb;
char *format;

- sb = procinfo_prologue( ( kdev_t ) ( int ) data );
+ sb = procinfo_prologue( ( kdev_t ) ( long ) data );
if( sb == NULL )
return -ENOENT;
if ( sb->u.reiserfs_sb.s_properties & (1 << REISERFS_3_6) ) {
@@ -143,7 +143,7 @@
struct reiserfs_sb_info *r;
int len = 0;

- sb = procinfo_prologue( ( kdev_t ) ( int ) data );
+ sb = procinfo_prologue( ( kdev_t ) ( long ) data );
if( sb == NULL )
return -ENOENT;
r = &sb->u.reiserfs_sb;
@@ -223,7 +223,7 @@
int len = 0;
int level;

- sb = procinfo_prologue( ( kdev_t ) ( int ) data );
+ sb = procinfo_prologue( ( kdev_t ) ( long ) data );
if( sb == NULL )
return -ENOENT;
r = &sb->u.reiserfs_sb;
@@ -302,7 +302,7 @@
struct reiserfs_sb_info *r = &sb->u.reiserfs_sb;
int len = 0;

- sb = procinfo_prologue( ( kdev_t ) ( int ) data );
+ sb = procinfo_prologue( ( kdev_t ) ( long ) data );
if( sb == NULL )
return -ENOENT;
r = &sb->u.reiserfs_sb;
@@ -343,7 +343,7 @@
int hash_code;
int len = 0;

- sb = procinfo_prologue( ( kdev_t ) ( int ) data );
+ sb = procinfo_prologue( ( kdev_t ) ( long ) data );
if( sb == NULL )
return -ENOENT;
sb_info = &sb->u.reiserfs_sb;
@@ -396,7 +396,7 @@
int len = 0;
int exact;

- sb = procinfo_prologue( ( kdev_t ) ( int ) data );
+ sb = procinfo_prologue( ( kdev_t ) ( long ) data );
if( sb == NULL )
return -ENOENT;
sb_info = &sb->u.reiserfs_sb;
@@ -447,7 +447,7 @@
struct reiserfs_super_block *rs;
int len = 0;

- sb = procinfo_prologue( ( kdev_t ) ( int ) data );
+ sb = procinfo_prologue( ( kdev_t ) ( long ) data );
if( sb == NULL )
return -ENOENT;
r = &sb->u.reiserfs_sb;
@@ -464,7 +464,7 @@
"s_journal_max_commit_age: \t%i\n"
"s_journal_max_trans_age: \t%i\n"
/* incore fields */
- "j_state: \t%i\n"
+ "j_state: \t%li\n"
"j_trans_id: \t%lu\n"
"j_mount_id: \t%lu\n"
"j_start: \t%lu\n"
@@ -588,7 +588,7 @@
{
return ( sb->u.reiserfs_sb.procdir ) ? create_proc_read_entry
( name, 0, sb->u.reiserfs_sb.procdir, func,
- ( void * ) ( int ) sb -> s_dev ) : NULL;
+ ( void * ) ( long ) sb -> s_dev ) : NULL;
}

void reiserfs_proc_unregister( struct super_block *sb, const char *name )
diff -uNr linux-2.4.18-pre9.orig/include/linux/reiserfs_fs.h linux-2.4.18-pre9/include/linux/reiserfs_fs.h
--- linux-2.4.18-pre9.orig/include/linux/reiserfs_fs.h Mon Feb 11 15:23:29 2002
+++ linux-2.4.18-pre9/include/linux/reiserfs_fs.h Mon Feb 11 15:53:07 2002
@@ -236,9 +236,9 @@
__u64 linear;
} __attribute__ ((__packed__)) offset_v2_esafe_overlay;

-static inline __u16 offset_v2_k_type( struct offset_v2 *v2 )
+static inline __u16 offset_v2_k_type( const struct offset_v2 *v2 )
{
- offset_v2_esafe_overlay tmp = *(offset_v2_esafe_overlay *)v2;
+ offset_v2_esafe_overlay tmp = *(const offset_v2_esafe_overlay *)v2;
tmp.linear = le64_to_cpu( tmp.linear );
return tmp.offset_v2.k_type;
}
@@ -248,12 +248,12 @@
offset_v2_esafe_overlay *tmp = (offset_v2_esafe_overlay *)v2;
tmp->linear = le64_to_cpu(tmp->linear);
tmp->offset_v2.k_type = type;
- tmp->linear = le64_to_cpu(tmp->linear);
+ tmp->linear = cpu_to_le64(tmp->linear);
}

-static inline loff_t offset_v2_k_offset( struct offset_v2 *v2 )
+static inline loff_t offset_v2_k_offset( const struct offset_v2 *v2 )
{
- offset_v2_esafe_overlay tmp = *(offset_v2_esafe_overlay *)v2;
+ offset_v2_esafe_overlay tmp = *(const offset_v2_esafe_overlay *)v2;
tmp.linear = le64_to_cpu( tmp.linear );
return tmp.offset_v2.k_offset;
}
@@ -262,7 +262,7 @@
offset_v2_esafe_overlay *tmp = (offset_v2_esafe_overlay *)v2;
tmp->linear = le64_to_cpu(tmp->linear);
tmp->offset_v2.k_offset = offset;
- tmp->linear = le64_to_cpu(tmp->linear);
+ tmp->linear = cpu_to_le64(tmp->linear);
}
#else
# define offset_v2_k_type(v2) ((v2)->k_type)
diff -uNr linux-2.4.18-pre9.orig/include/linux/reiserfs_fs_sb.h linux-2.4.18-pre9/include/linux/reiserfs_fs_sb.h
--- linux-2.4.18-pre9.orig/include/linux/reiserfs_fs_sb.h Mon Feb 11 15:23:32 2002
+++ linux-2.4.18-pre9/include/linux/reiserfs_fs_sb.h Mon Feb 11 15:52:02 2002
@@ -201,7 +201,7 @@
struct buffer_head *bh ; /* real buffer head */
kdev_t dev ; /* dev of real buffer head */
unsigned long blocknr ; /* block number of real buffer head, == 0 when buffer on disk */
- int state ;
+ long state ;
struct reiserfs_journal_list *jlist ; /* journal list this cnode lives in */
struct reiserfs_journal_cnode *next ; /* next in transaction list */
struct reiserfs_journal_cnode *prev ; /* prev in transaction list */
@@ -264,7 +264,7 @@
struct reiserfs_journal_cnode *j_last ; /* newest journal block */
struct reiserfs_journal_cnode *j_first ; /* oldest journal block. start here for traverse */

- int j_state ;
+ long j_state ;
unsigned long j_trans_id ;
unsigned long j_mount_id ;
unsigned long j_start ; /* start of current waiting commit (index into j_ap_blocks) */

--4Ckj6UjgE2iN1+kY--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/