2.4 reiserfs 64bit and bigendian bugfixes
PATCH 1/1 2.4 reiserfs 64bit and bigendian bugfixes
Hello!
This patch solves known reiserfs 64bit issues. Also erroneous le64_to_cpu converted to correct cpu_to_le64.
Bye,
Oleg
fs/reiserfs/journal.c +1 -1
@@ -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 ;
fs/reiserfs/procfs.c +9 -9
@@ -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 )
include/linux/reiserfs_fs.h +6 -6
@@ -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)
include/linux/reiserfs_fs_sb.h +2 -2
@@ -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) */