[PATCH 5/10] squashfs: (void*)ify read_blocklist

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <[email protected]>
---

 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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux