lkml.org 
[lkml]   [2005]   [Aug]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] largefile support for accounting
Yes, our CSA customers reported same problem. CSA already incoporated
same fix to our kernel module code. :)

Cheers,
- jay


Peter Staubach wrote:
> Hi.
>
> There is a problem in the accounting subsystem in the kernel can not
> correctly handle files larger than 2GB. The output file containing
> the process accounting data can grow very large if the system is large
> enough and active enough. If the 2GB limit is reached, then the system
> simply stops storing process accounting data.
>
> Another annoying problem is that once the system reaches this 2GB limit,
> then every process which exits will receive a signal, SIGXFSZ. This
> signal is generated because an attempt was made to write beyond the limit
> for the file descriptor. This signal makes it look like every process
> has exited due to a signal, when in fact, they have not.
>
> The solution is to add the O_LARGEFILE flag to the list of flags used
> to open the accounting file. The rest of the accounting support is
> already largefile safe.
>
> The changes were tested by constructing a large file (just short of 2GB),
> enabling accounting, and then running enough commands to cause the
> accounting data generated to increase the size of the file to 2GB. Without
> the changes, the file grows to 2GB and the last command run in the test
> script appears to exit due a signal when it has not. With the changes,
> things work as expected and quietly.
>
> There are some user level changes required so that it can deal with
> largefiles, but those are being handled separately.
>
> Signed-off-by: Peter Staubach <staubach@redhat.com>
>
>
> ------------------------------------------------------------------------
>
> --- linux-2.6.12/kernel/acct.c.org 2005-06-17 15:48:29.000000000 -0400
> +++ linux-2.6.12/kernel/acct.c 2005-08-10 15:12:46.000000000 -0400
> @@ -220,7 +220,7 @@ asmlinkage long sys_acct(const char __us
> return (PTR_ERR(tmp));
> }
> /* Difference from BSD - they don't do O_APPEND */
> - file = filp_open(tmp, O_WRONLY|O_APPEND, 0);
> + file = filp_open(tmp, O_WRONLY | O_APPEND | O_LARGEFILE, 0);
> putname(tmp);
> if (IS_ERR(file)) {
> return (PTR_ERR(file));

-
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/

\
 
 \ /
  Last update: 2005-08-11 19:30    [W:0.036 / U:0.836 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site