Messages in this thread Patch in this message | | | Date | Fri, 22 Apr 2005 09:20:37 +0200 | From | Jörn Engel <> | Subject | [PATCH 5/10] squashfs: (void*)ify read_blocklist |
| |
Jörn
-- With a PC, I always felt limited by the software available. On Unix, I am limited only by my knowledge. -- Peter J. Schoenster
Signed-off-by: Jörn Engel <joern@wohnheim.fh-wedel.de> ---
fs/squashfs/inode.c | 16 ++++++++++------ include/linux/squashfs_fs_sb.h | 6 +++--- 2 files changed, 13 insertions(+), 9 deletions(-)
--- linux-2.6.12-rc3cow/fs/squashfs/inode.c~squashfs_cu5 2005-04-22 07:00:14.806604672 +0200 +++ linux-2.6.12-rc3cow/fs/squashfs/inode.c 2005-04-22 09:17:47.387021752 +0200 @@ -58,7 +58,7 @@ static struct dentry *squashfs_lookup(st struct nameidata *); static struct inode *squashfs_iget(struct super_block *s, squashfs_inode inode); static unsigned int read_blocklist(struct inode *inode, int index, - int readahead_blks, char *block_list, + int readahead_blks, void *block_list, unsigned short **block_p, unsigned int *bsize); static struct super_block *squashfs_get_sb(struct file_system_type *, int, const char *, void *); @@ -1116,7 +1116,7 @@ skip_read: #define SIZE 256 static unsigned int read_blocklist(struct inode *inode, int index, - int readahead_blks, char *block_list, + int readahead_blks, void *_block_list, unsigned short **block_p, unsigned int *bsize) { squashfs_sb_info *msBlk = inode->i_sb->s_fs_info; @@ -1125,6 +1125,7 @@ static unsigned int read_blocklist(struc int block_ptr = SQUASHFS_I(inode)->block_list_start; int offset = SQUASHFS_I(inode)->offset; unsigned int block = SQUASHFS_I(inode)->start_block; + unsigned int *block_list = _block_list; for (;;) { int blocks = (index + readahead_blks - i); @@ -1136,7 +1137,9 @@ static unsigned int read_blocklist(struc } if (msBlk->swap) { - unsigned char sblock_list[SIZE]; + unsigned int *sblock_list = kmalloc(SIZE, GFP_KERNEL); + if (!sblock_list) + return 0; if (!squashfs_get_cached_block(inode->i_sb, sblock_list, block_ptr, @@ -1144,10 +1147,11 @@ static unsigned int read_blocklist(struc &offset)) { ERROR("Unable to read block list [%d:%x]\n", block_ptr, offset); + kfree(sblock_list); return 0; } - SQUASHFS_SWAP_INTS(((unsigned int *)block_list), - ((unsigned int *)sblock_list), blocks); + SQUASHFS_SWAP_INTS(block_list, sblock_list, blocks); + kfree(sblock_list); } else if (!squashfs_get_cached_block(inode->i_sb, block_list, block_ptr, offset, @@ -1158,7 +1162,7 @@ static unsigned int read_blocklist(struc return 0; } - for (block_listp = (unsigned int *) block_list; i < index && + for (block_listp = block_list; i < index && blocks; i ++, block_listp ++, blocks --) block += SQUASHFS_COMPRESSED_SIZE_BLOCK(*block_listp); --- linux-2.6.12-rc3cow/include/linux/squashfs_fs_sb.h~squashfs_cu5 2005-04-22 07:00:14.693621848 +0200 +++ linux-2.6.12-rc3cow/include/linux/squashfs_fs_sb.h 2005-04-22 09:17:43.833561960 +0200 @@ -59,10 +59,10 @@ typedef struct squashfs_sb_info { struct semaphore fragment_mutex; wait_queue_head_t waitq; wait_queue_head_t fragment_wait_queue; - struct inode *(*iget)(struct super_block *s, squashfs_inode \ + struct inode *(*iget)(struct super_block *s, squashfs_inode inode); - unsigned int (*read_blocklist)(struct inode *inode, int \ - index, int readahead_blks, char *block_list, \ + unsigned int (*read_blocklist)(struct inode *inode, int + index, int readahead_blks, void *block_list, unsigned short **block_p, unsigned int *bsize); } squashfs_sb_info; #endif - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |