Convert the unsigned longs that are most responsible for bloating the stack usage on 64-bit systems. Nearly all places in the ext3/4 code which uses "unsigned long" is probably a bug, since on 32-bit systems a ulong a 32-bits, which means we are wasting stack space on 64-bit systems. Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
		
			
				
	
	
		
			31 lines
		
	
	
	
		
			672 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
	
		
			672 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 *  linux/fs/ext4/bitmap.c
 | 
						|
 *
 | 
						|
 * Copyright (C) 1992, 1993, 1994, 1995
 | 
						|
 * Remy Card (card@masi.ibp.fr)
 | 
						|
 * Laboratoire MASI - Institut Blaise Pascal
 | 
						|
 * Universite Pierre et Marie Curie (Paris VI)
 | 
						|
 */
 | 
						|
 | 
						|
#include <linux/buffer_head.h>
 | 
						|
#include <linux/jbd2.h>
 | 
						|
#include "ext4.h"
 | 
						|
 | 
						|
#ifdef EXT4FS_DEBUG
 | 
						|
 | 
						|
static const int nibblemap[] = {4, 3, 3, 2, 3, 2, 2, 1, 3, 2, 2, 1, 2, 1, 1, 0};
 | 
						|
 | 
						|
unsigned int ext4_count_free(struct buffer_head *map, unsigned int numchars)
 | 
						|
{
 | 
						|
	unsigned int i, sum = 0;
 | 
						|
 | 
						|
	if (!map)
 | 
						|
		return 0;
 | 
						|
	for (i = 0; i < numchars; i++)
 | 
						|
		sum += nibblemap[map->b_data[i] & 0xf] +
 | 
						|
			nibblemap[(map->b_data[i] >> 4) & 0xf];
 | 
						|
	return sum;
 | 
						|
}
 | 
						|
 | 
						|
#endif  /*  EXT4FS_DEBUG  */
 | 
						|
 |