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>