Loading fs/qnx4/inode.c +22 −34 Original line number Diff line number Diff line Loading @@ -179,46 +179,34 @@ static const char *qnx4_checkroot(struct super_block *sb) struct qnx4_inode_entry *rootdir; int rd, rl; int i, j; int found = 0; if (*(qnx4_sb(sb)->sb->RootDir.di_fname) != '/') { if (*(qnx4_sb(sb)->sb->RootDir.di_fname) != '/') return "no qnx4 filesystem (no root dir)."; } else { QNX4DEBUG((KERN_NOTICE "QNX4 filesystem found on dev %s.\n", sb->s_id)); rd = le32_to_cpu(qnx4_sb(sb)->sb->RootDir.di_first_xtnt.xtnt_blk) - 1; rl = le32_to_cpu(qnx4_sb(sb)->sb->RootDir.di_first_xtnt.xtnt_size); for (j = 0; j < rl; j++) { bh = sb_bread(sb, rd + j); /* root dir, first block */ if (bh == NULL) { if (bh == NULL) return "unable to read root entry."; } for (i = 0; i < QNX4_INODES_PER_BLOCK; i++) { rootdir = (struct qnx4_inode_entry *) (bh->b_data + i * QNX4_DIR_ENTRY_SIZE); rootdir = (struct qnx4_inode_entry *) bh->b_data; for (i = 0; i < QNX4_INODES_PER_BLOCK; i++, rootdir++) { QNX4DEBUG((KERN_INFO "rootdir entry found : [%s]\n", rootdir->di_fname)); if (!strcmp(rootdir->di_fname, QNX4_BMNAME)) { found = 1; if (strcmp(rootdir->di_fname, QNX4_BMNAME) != 0) continue; qnx4_sb(sb)->BitMap = kmemdup(rootdir, sizeof(struct qnx4_inode_entry), GFP_KERNEL); if (!qnx4_sb(sb)->BitMap) { brelse(bh); if (!qnx4_sb(sb)->BitMap) return "not enough memory for bitmap inode"; }/* keep bitmap inode known */ break; } /* keep bitmap inode known */ return NULL; } brelse(bh); if (found != 0) { break; } } if (found == 0) { return "bitmap file not found."; } } return NULL; } static int qnx4_fill_super(struct super_block *s, void *data, int silent) { Loading Loading
fs/qnx4/inode.c +22 −34 Original line number Diff line number Diff line Loading @@ -179,46 +179,34 @@ static const char *qnx4_checkroot(struct super_block *sb) struct qnx4_inode_entry *rootdir; int rd, rl; int i, j; int found = 0; if (*(qnx4_sb(sb)->sb->RootDir.di_fname) != '/') { if (*(qnx4_sb(sb)->sb->RootDir.di_fname) != '/') return "no qnx4 filesystem (no root dir)."; } else { QNX4DEBUG((KERN_NOTICE "QNX4 filesystem found on dev %s.\n", sb->s_id)); rd = le32_to_cpu(qnx4_sb(sb)->sb->RootDir.di_first_xtnt.xtnt_blk) - 1; rl = le32_to_cpu(qnx4_sb(sb)->sb->RootDir.di_first_xtnt.xtnt_size); for (j = 0; j < rl; j++) { bh = sb_bread(sb, rd + j); /* root dir, first block */ if (bh == NULL) { if (bh == NULL) return "unable to read root entry."; } for (i = 0; i < QNX4_INODES_PER_BLOCK; i++) { rootdir = (struct qnx4_inode_entry *) (bh->b_data + i * QNX4_DIR_ENTRY_SIZE); rootdir = (struct qnx4_inode_entry *) bh->b_data; for (i = 0; i < QNX4_INODES_PER_BLOCK; i++, rootdir++) { QNX4DEBUG((KERN_INFO "rootdir entry found : [%s]\n", rootdir->di_fname)); if (!strcmp(rootdir->di_fname, QNX4_BMNAME)) { found = 1; if (strcmp(rootdir->di_fname, QNX4_BMNAME) != 0) continue; qnx4_sb(sb)->BitMap = kmemdup(rootdir, sizeof(struct qnx4_inode_entry), GFP_KERNEL); if (!qnx4_sb(sb)->BitMap) { brelse(bh); if (!qnx4_sb(sb)->BitMap) return "not enough memory for bitmap inode"; }/* keep bitmap inode known */ break; } /* keep bitmap inode known */ return NULL; } brelse(bh); if (found != 0) { break; } } if (found == 0) { return "bitmap file not found."; } } return NULL; } static int qnx4_fill_super(struct super_block *s, void *data, int silent) { Loading