Date: Fri, 19 Feb 2016 16:40:46 -0800 From: Bryan Drewery <bdrewery@FreeBSD.org> To: Stefan Esser <se@FreeBSD.org>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r295800 - head/usr.bin/cap_mkdb Message-ID: <56C7B60E.8080002@FreeBSD.org> In-Reply-To: <201602190842.u1J8gDOc015177@repo.freebsd.org> References: <201602190842.u1J8gDOc015177@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --nepOibrStrSBLkOxNqg3SCE5Mv0cEvcD0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 2/19/2016 12:42 AM, Stefan Esser wrote: > Author: se > Date: Fri Feb 19 08:42:13 2016 > New Revision: 295800 > URL: https://svnweb.freebsd.org/changeset/base/295800 >=20 > Log: > Remove O_SYNC from the options passed to dbmopen(). Uh, this is a full revert of r293312's changes to cap_mkdb which were made for good reason. So this seems simply wrong without a better fix. > =20 > The output file is created as a temporary file that is moved over the= > existing file after completion. Thus there is no need to immediately > flush all created db records to the temporary file. This is not right either. Depending on the use of soft updates / journaling the data and metadata (file name / rename) may be written at different times. It is entirely possible to get a renamed file with no or junk content without an fsync. That's exactly what r293312 mentions in its commit message. > =20 > This speeds up creation of the termcap db by a factor of 40 on my > ZFS based /etc filesytem (from 25 seconds to 0.6 seconds). > =20 > I have compared multiple output files created with and without O_SYNC= > and they came out identical each time. Nonetheless it might be best > to MFC this change and the similar one for services_mkdb (r295465) at= > the same time when the changes to hash.c in review D5186 are merged. > =20 > MFC: 1 week >=20 > Modified: > head/usr.bin/cap_mkdb/cap_mkdb.c >=20 > Modified: head/usr.bin/cap_mkdb/cap_mkdb.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 > --- head/usr.bin/cap_mkdb/cap_mkdb.c Fri Feb 19 08:41:47 2016 (r295799)= > +++ head/usr.bin/cap_mkdb/cap_mkdb.c Fri Feb 19 08:42:13 2016 (r295800)= > @@ -119,7 +119,7 @@ main(int argc, char *argv[]) > (void)snprintf(buf, sizeof(buf), "%s.db", capname ? capname : *argv);= > if ((capname =3D strdup(buf)) =3D=3D NULL) > errx(1, "strdup failed"); > - if ((capdbp =3D dbopen(capname, O_CREAT | O_TRUNC | O_RDWR | O_SYNC, > + if ((capdbp =3D dbopen(capname, O_CREAT | O_TRUNC | O_RDWR, > DEFFILEMODE, DB_HASH, &openinfo)) =3D=3D NULL) > err(1, "%s", buf); > =20 >=20 --=20 Regards, Bryan Drewery --nepOibrStrSBLkOxNqg3SCE5Mv0cEvcD0 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBAgAGBQJWx7YOAAoJEDXXcbtuRpfP0eoIAKJjU/UcXWCvLBsNGRdxbyOM 5uk9H2Aue4TPjEST4SXuFE49mdWsqty5dC36UKxVyQONOUOI+BGRBApxPYqWRYRi K+DPz9FmBNbKgxv/De2FrF2zHabPg/f+PyMxCu/BnwtMui5SWYMmeHSeLV5G3KD6 RBm5/xAga2J4EtZR3NnIL/kIASFOOrExgVdC+7ln46WQFPomA5rkDfeYVGud4w05 V2puH9vnCtY6EaInRp1lAgR0eczsVV5EX0jqw1GOlgXRmUZYWoVi4HmT6UogLTbH v6rVwurm2OumY7OpmBzP6ZJXBQHOM5YZFOKaZQnbvpZLwZb7pUiEzmZEbT/vD+8= =aFoF -----END PGP SIGNATURE----- --nepOibrStrSBLkOxNqg3SCE5Mv0cEvcD0--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?56C7B60E.8080002>