Date: Fri, 19 Sep 1997 13:17:40 +0200 From: Poul-Henning Kamp <phk@critter.freebsd.dk> To: Bruce Evans <bde@zeta.org.au> Cc: cvs-all@freebsd.org, cvs-committers@freebsd.org, cvs-sys@freebsd.org Subject: Re: cvs commit: src/sys/ufs/ffs ffs_alloc.c Message-ID: <13315.874667860@critter.freebsd.dk> In-Reply-To: Your message of "Fri, 19 Sep 1997 20:57:49 %2B1000." <199709191057.UAA12942@godzilla.zeta.org.au>
next in thread | previous in thread | raw e-mail | index | archive | help
Thanks for the correction.
I've committed your change.
Poul-Henning
In message <199709191057.UAA12942@godzilla.zeta.org.au>, Bruce Evans writes:
>>phk 1997/09/18 11:07:45 PDT
>>
>> Modified files:
>> sys/ufs/ffs ffs_alloc.c
>> Log:
>> Ffs_alloc allow users to write one block beyond the limit.
>>
>> PR: 3398
>> Reviewed by: phk
>> Submitted by: Wolfram Schneider <wosch@apfel.de>
>
>This is completely wrong.
>
>1. ffs_alloc() actually allowed writing one block less one frag (normally
> 7 frags or 7/8 blocks) beyond the limit.
>2. freebufspace() gives the free space in frags, but `size' is in bytes,
> so the change results in approximately `size' fragments too many being
> reserved.
>3. ffs_realloccg() has the same bug but wasn't changed.
>
>Bruce
>
>Incompetely tested patches relative to the old version:
>
>diff -c2 ffs_alloc.c~ ffs_alloc.c
>*** ffs_alloc.c~ Wed Sep 3 11:16:21 1997
>--- ffs_alloc.c Fri Sep 19 19:15:49 1997
>***************
>*** 118,122 ****
> if (size == fs->fs_bsize && fs->fs_cstotal.cs_nbfree == 0)
> goto nospace;
>! if (cred->cr_uid != 0 && freespace(fs, fs->fs_minfree) <= 0)
> goto nospace;
> #ifdef QUOTA
>--- 118,123 ----
> if (size == fs->fs_bsize && fs->fs_cstotal.cs_nbfree == 0)
> goto nospace;
>! if (cred->cr_uid != 0 && freespace(fs, fs->fs_minfree) -
>! numfrags(fs, size) < 0)
> goto nospace;
> #ifdef QUOTA
>***************
>*** 188,192 ****
> panic("ffs_realloccg: missing credential");
> #endif /* DIAGNOSTIC */
>! if (cred->cr_uid != 0 && freespace(fs, fs->fs_minfree) <= 0)
> goto nospace;
> if ((bprev = ip->i_db[lbprev]) == 0) {
>--- 189,194 ----
> panic("ffs_realloccg: missing credential");
> #endif /* DIAGNOSTIC */
>! if (cred->cr_uid != 0 && freespace(fs, fs->fs_minfree) -
>! numfrags(fs, nsize - osize) < 0)
> goto nospace;
> if ((bprev = ip->i_db[lbprev]) == 0) {
--
Poul-Henning Kamp FreeBSD coreteam member
phk@FreeBSD.ORG "Real hackers run -current on their laptop."
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?13315.874667860>
