Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 7 Sep 2009 13:37:25 +0400
From:      pluknet <pluknet@gmail.com>
To:        Konstantin Belousov <kib@freebsd.org>
Cc:        freebsd-stable <freebsd-stable@freebsd.org>
Subject:   Re: svn commit: r196210 - in stable/8/sys: . amd64/include/xen  cddl/contrib/opensolaris contrib/dev/acpica contrib/pf dev/ata dev/cxgb  dev/sound/usb dev/usb dev/usb/controller dev/usb/input dev/usb/mis...
Message-ID:  <a31046fc0909070237g65b26be3t1fe2d66322a42805@mail.gmail.com>
In-Reply-To: <200908141122.n7EBM9ml032712@svn.freebsd.org>
References:  <200908141122.n7EBM9ml032712@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
2009/8/14 Konstantin Belousov <kib@freebsd.org>:
> Author: kib
> Date: Fri Aug 14 11:22:09 2009
> New Revision: 196210
> URL: http://svn.freebsd.org/changeset/base/196210
>
> Log:
> =A0MFC r196206:
> =A0Take the number of allocated freeblks into consideration for
> =A0softdep_slowdown(), to prevent kernel memory exhaustioni on
> =A0mass-truncation.
>
> =A0Approved by: =A0re (rwatson)
>
[...]

Hi.

Is it scheduled to be merged to stable/7 (and even to stable/6, which
also has this issue)?

Thanks.

> Modified: stable/8/sys/ufs/ffs/ffs_softdep.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- stable/8/sys/ufs/ffs/ffs_softdep.c =A0Fri Aug 14 11:17:34 2009 =A0 =
=A0 =A0 =A0(r196209)
> +++ stable/8/sys/ufs/ffs/ffs_softdep.c =A0Fri Aug 14 11:22:09 2009 =A0 =
=A0 =A0 =A0(r196210)
> @@ -663,6 +663,8 @@ static int req_clear_inodedeps; =A0 =A0 /* synce
> =A0static int req_clear_remove; =A0 /* syncer process flush some freeblks=
 */
> =A0#define FLUSH_REMOVE =A0 =A0 =A0 =A0 =A0 2
> =A0#define FLUSH_REMOVE_WAIT =A0 =A0 =A03
> +static long num_freeblkdep; =A0 =A0/* number of freeblks workitems alloc=
ated */
> +
> =A0/*
> =A0* runtime statistics
> =A0*/
> @@ -2223,6 +2225,9 @@ softdep_setup_freeblocks(ip, length, fla
> =A0 =A0 =A0 =A0freeblks->fb_uid =3D ip->i_uid;
> =A0 =A0 =A0 =A0freeblks->fb_previousinum =3D ip->i_number;
> =A0 =A0 =A0 =A0freeblks->fb_devvp =3D ip->i_devvp;
> + =A0 =A0 =A0 ACQUIRE_LOCK(&lk);
> + =A0 =A0 =A0 num_freeblkdep++;
> + =A0 =A0 =A0 FREE_LOCK(&lk);
> =A0 =A0 =A0 =A0extblocks =3D 0;
> =A0 =A0 =A0 =A0if (fs->fs_magic =3D=3D FS_UFS2_MAGIC)
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0extblocks =3D btodb(fragroundup(fs, ip->i_=
din2->di_extsize));
> @@ -2815,6 +2820,7 @@ handle_workitem_freeblocks(freeblks, fla
>
> =A0 =A0 =A0 =A0ACQUIRE_LOCK(&lk);
> =A0 =A0 =A0 =A0WORKITEM_FREE(freeblks, D_FREEBLKS);
> + =A0 =A0 =A0 num_freeblkdep--;
> =A0 =A0 =A0 =A0FREE_LOCK(&lk);
> =A0}
>
> @@ -5768,7 +5774,8 @@ softdep_slowdown(vp)
> =A0 =A0 =A0 =A0max_softdeps_hard =3D max_softdeps * 11 / 10;
> =A0 =A0 =A0 =A0if (num_dirrem < max_softdeps_hard / 2 &&
> =A0 =A0 =A0 =A0 =A0 =A0num_inodedep < max_softdeps_hard &&
> - =A0 =A0 =A0 =A0 =A0 VFSTOUFS(vp->v_mount)->um_numindirdeps < maxindirde=
ps) {
> + =A0 =A0 =A0 =A0 =A0 VFSTOUFS(vp->v_mount)->um_numindirdeps < maxindirde=
ps &&
> + =A0 =A0 =A0 =A0 =A0 num_freeblkdep < max_softdeps_hard) {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0FREE_LOCK(&lk);
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0return (0);
> =A0 =A0 =A0 =A0}


--=20
wbr,
pluknet



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?a31046fc0909070237g65b26be3t1fe2d66322a42805>