typedef unsigned long long u64; struct super_block { unsigned long s_blocksize; struct block_device *s_bdev; }; struct buffer_head { u64 b_blocknr; }; struct buffer_head *sb_bread(struct super_block *sb, u64 block) { return __bread(sb->s_bdev, block, sb->s_blocksize); } struct { int (*test) (struct sysv_sb_info *, struct buffer_head *); } flavours[] = { }; int sysv_fill_super(struct super_block *sb, void *data, int silent) { struct buffer_head *bh = 0; unsigned long blocknr; int size = 0; int i; for (i = 0; i < 1 && !size; i++) size = flavours[i].test(SYSV_SB(sb), bh); switch (size) { case 3: blocknr = bh->b_blocknr >> 1; bh = sb_bread(sb, blocknr); } }