Re: Linux 2.6.7-rc2

From: Peter Osterlund
Date: Mon May 31 2004 - 04:24:28 EST


Linus Torvalds <torvalds@xxxxxxxx> 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@xxxxxxxxx
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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/