Function stack size usage (was [PATCH][1/2] SquashFS)

Phillip Lougher
2005-03-21T00:50:06Z

Andrew Morton wrote:
> Phillip Lougher <phillip@lougher.demon.co.uk> wrote:
>>
>>+static struct inode *squashfs_iget(struct super_block *s, squashfs_inode inode)
>>+{
>>+ struct inode *i;
>>+ squashfs_sb_info *msBlk = (squashfs_sb_info *)s->s_fs_info;
>>+ squashfs_super_block *sBlk = &msBlk->sBlk;
>>+ unsigned int block = SQUASHFS_INODE_BLK(inode) +
>>+ sBlk->inode_table_start;
>>+ unsigned int offset = SQUASHFS_INODE_OFFSET(inode);
>>+ unsigned int ino = SQUASHFS_MK_VFS_INODE(block
>>+ - sBlk->inode_table_start, offset);
>>+ unsigned int next_block, next_offset;
>>+ squashfs_base_inode_header inodeb;
>
>
> How much stack space is being used here? Perhaps you should run
> scripts/checkstack.pl across the whole thing.
>

A lot of the functions use a fair amount of stack (I never thought it
was excessive)... This is the result of running checkstack.pl against
the code on Intel.

0x00003a3c get_dir_index_using_name: 596
0x00000d80 squashfs_iget: 488
0x000044d8 squashfs_lookup: 380
0x00003d00 squashfs_readdir: 372
0x000020fe squashfs_fill_super: 316
0x000031b8 squashfs_readpage: 308
0x00002f5c read_blocklist: 296
0x00003634 squashfs_readpage4K: 284

A couple of these functions show a fair amount of stack use. What is
the maximum acceptable usage, i.e. do any of the above functions need
work to reduce their stack usage?

Thanks

Phillip