 kernel/acct.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff -puN kernel/acct.c~statfs64-fix kernel/acct.c
--- 25/kernel/acct.c~statfs64-fix	2003-06-03 18:01:07.000000000 -0700
+++ 25-akpm/kernel/acct.c	2003-06-03 19:43:14.000000000 -0700
@@ -100,9 +100,11 @@ static void acct_timeout(unsigned long u
  */
 static int check_free_space(struct file *file)
 {
-	struct statfs sbuf;
+	struct kstatfs sbuf;
 	int res;
 	int act;
+	long long suspend;
+	long long resume;
 
 	spin_lock(&acct_globals.lock);
 	res = acct_globals.active;
@@ -114,9 +116,14 @@ static int check_free_space(struct file 
 	if (vfs_statfs(file->f_dentry->d_inode->i_sb, &sbuf))
 		return res;
 
-	if (sbuf.f_bavail <= SUSPEND * sbuf.f_blocks / 100)
+	suspend = SUSPEND * sbuf.f_blocks;
+	do_div(suspend, 100);
+	resume = RESUME * sbuf.f_blocks;
+	do_div(resume, 100);
+
+	if (sbuf.f_bavail <= suspend)
 		act = -1;
-	else if (sbuf.f_bavail >= RESUME * sbuf.f_blocks / 100)
+	else if (sbuf.f_bavail >= resume)
 		act = 1;
 	else
 		act = 0;

_
