Messages in this thread | | | Subject | Re: Linux 2.6.7-rc2 | From | Peter Osterlund <> | Date | 31 May 2004 11:21:39 +0200 |
| |
Linus Torvalds <torvalds@osdl.org> writes:
> Andrew Morton: > o Add `make checkstack' target
The checkstack target itself works fine, but when I used it I found that nfs_writepage_sync and nfs_readpage_sync still use a lot of stack space:
0xc01aae14 nfs_writepage_sync: 900 0xc01a9492 nfs_readpage_sync: 872
Apparently, this recent fix
http://linux.bkbits.net:8080/linux-2.5/gnupatch@40ad0ce2ZBGzb_taAzCTOJ38IXxu-w
doesn't really help, at least not with the compilers I have tested, ie gcc 3.3.3 from FC2 and the gcc from RH9.
If I put "#if 0" around the *wdata assignment in nfs_writepage_sync, the stack usage goes down to 36, so it looks like gcc is building a temporary structure on the stack and then copies the whole thing to *wdata.
Does this construct save stack space for any version of gcc? Maybe the code should be changed to do a memset() followed by explicit initialization of the non-zero member variables instead.
#if 0 *wdata = (struct nfs_write_data) { .flags = how, .cred = NULL, .inode = inode, .args = { .fh = NFS_FH(inode), .lockowner = current->files, .pages = &page, .stable = NFS_FILE_SYNC, .pgbase = offset, .count = wsize, }, .res = { .fattr = &wdata->fattr, .verf = &wdata->verf, }, }; #endif
-- Peter Osterlund - petero2@telia.com http://w1.894.telia.com/~u89404340 - 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/
| |