1 /* PR rtl-optimization/45593 */ 2 /* Testcase by Arnaud Lacombe <lacombar@gmail.com> */ 3 4 typedef unsigned int __u32; 5 typedef __u32 __be32; printk(const char * s,...)6static inline __attribute__((always_inline)) int __attribute__((__cold__)) printk(const char *s, ...) { return 0; } 7 typedef struct journal_s journal_t; 8 typedef struct journal_header_s 9 { 10 __be32 h_magic; 11 __be32 h_blocktype; 12 __be32 h_sequence; 13 } journal_header_t; 14 typedef struct journal_superblock_s 15 { 16 journal_header_t s_header; 17 __be32 s_blocksize; 18 __be32 s_maxlen; 19 } journal_superblock_t; 20 struct journal_s 21 { 22 struct buffer_head *j_sb_buffer; 23 journal_superblock_t *j_superblock; 24 int j_format_version; 25 int j_blocksize; 26 unsigned int j_maxlen; 27 }; journal_fail_superblock(journal_t * journal)28static void journal_fail_superblock (journal_t *journal) 29 { 30 journal->j_sb_buffer = ((void *)0); 31 } journal_get_superblock(journal_t * journal)32static int journal_get_superblock(journal_t *journal) 33 { 34 struct buffer_head *bh; 35 journal_superblock_t *sb; 36 int err = -100; 37 bh = journal->j_sb_buffer; 38 if (!buffer_uptodate(bh)) { 39 if (!buffer_uptodate(bh)) { 40 printk ("JBD: IO error reading journal superblock\n"); 41 goto out; 42 } 43 } 44 err = -101; 45 if (sb->s_header.h_magic != (( __be32)(__u32)(0)) || 46 sb->s_blocksize != (( __be32)(__u32)(journal->j_blocksize))) { 47 printk("JBD: no valid journal superblock found\n"); 48 goto out; 49 } 50 switch((( __u32)(__be32)(sb->s_header.h_blocktype))) { 51 case 0: 52 case 1: 53 break; 54 default: 55 goto out; 56 } 57 if ((( __u32)(__be32)(sb->s_maxlen)) < journal->j_maxlen) 58 journal->j_maxlen = (( __u32)(__be32)(sb->s_maxlen)); 59 else if ((( __u32)(__be32)(sb->s_maxlen)) > journal->j_maxlen) { 60 printk ("JBD: journal file too short\n"); 61 goto out; 62 } 63 return 0; 64 out: 65 journal_fail_superblock(journal); 66 return err; 67 } load_superblock(journal_t * journal)68static int load_superblock(journal_t *journal) 69 { 70 journal_get_superblock(journal); 71 return 0; 72 } jbd2_journal_update_format(journal_t * journal)73int jbd2_journal_update_format (journal_t *journal) 74 { 75 journal_get_superblock(journal); 76 return 0; 77 } jbd2_journal_wipe(journal_t * journal,int write)78int jbd2_journal_wipe(journal_t *journal, int write) 79 { 80 load_superblock(journal); 81 return 0; 82 } 83