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; _