struct buffer_head * sysv_getblk(struct inode * inode, unsigned int block, int create, char * *start) { struct super_block * sb = inode->i_sb; struct buffer_head * bh; if (block < 10) return inode_getblk(inode,block,create,start); block -= 10; if (block < sb->sv_ind_per_block) { bh = inode_getblk(inode,10,create,start); return block_getblk(inode, bh, block, create, start); } block -= sb->sv_ind_per_block; if (block < sb->sv_ind_per_block_2) { bh = inode_getblk(inode,11,create,start); bh = block_getblk(inode, bh, block >> sb->sv_ind_per_block_bits, create, start); return block_getblk(inode, bh, block & sb->sv_ind_per_block_1, create, start); }
struct buffer_head * minix_getblk(struct inode * inode, int block, int create) { struct buffer_head * bh; if (block<0) { printk("minix_getblk: block<0"); return NULL; } if (block >= 7+512+512*512) { printk("minix_getblk: block>big"); return NULL; } if (block < 7) return inode_getblk(inode,block,create); block -= 7; if (block < 512) { bh = inode_getblk(inode,7,create); return block_getblk(bh,block,create); } block -= 512; bh = inode_getblk(inode,8,create); bh = block_getblk(bh,block>>9,create); return block_getblk(bh,block & 511,create); }