Date: Sun, 14 Dec 2008 20:21:01 +0100 From: Pawel Jakub Dawidek <pjd@FreeBSD.org> To: Ulf Lilleengen <lulf@FreeBSD.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r186038 - head/sbin/geom/misc Message-ID: <20081214192100.GB16926@garage.freebsd.pl> In-Reply-To: <200812131414.mBDEEu0A031376@svn.freebsd.org> References: <200812131414.mBDEEu0A031376@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--H+4ONPRPur6+Ovig Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sat, Dec 13, 2008 at 02:14:56PM +0000, Ulf Lilleengen wrote: > Author: lulf > Date: Sat Dec 13 14:14:56 2008 > New Revision: 186038 > URL: http://svn.freebsd.org/changeset/base/186038 >=20 > Log: > - When writing metadata to a geom provider, open the it as read-write s= ince it > might do subsequent reads from other providers. This stopped geli (and > probably other classes using g_metadata_store as well) from being put= on top > of gvinum raid5 volumes. > =20 > Note: > The reason it fails in the gvinum raid5 case is that gvinum will read b= ack the > old parity stripe before calculating the new parity stripe to be writte= n out > again. The write will then fail because the underlying disk to be read= is > opened write only. I think we discussed this in the past. In my opinion this change is incorrect. The intend here is to only write something, that's why I use O_WRONLY. If gvinum/raid5 needs also read something to satisfy the write, this is gvinum/raid5's internal detail and should be handled there. RAID5 by design needs to read before it can write (in most cases), does it mean that the O_WRONLY flag became bogus suddenly? No. The flag given to open(2) describes caller's intend, not provider's internals. > Modified: > head/sbin/geom/misc/subr.c >=20 > Modified: head/sbin/geom/misc/subr.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/sbin/geom/misc/subr.c Sat Dec 13 13:07:12 2008 (r186037) > +++ head/sbin/geom/misc/subr.c Sat Dec 13 14:14:56 2008 (r186038) > @@ -211,7 +211,7 @@ g_metadata_store(const char *name, u_cha > sector =3D NULL; > error =3D 0; > =20 > - fd =3D open(path, O_WRONLY); > + fd =3D open(path, O_RDWR); > if (fd =3D=3D -1) > return (errno); > mediasize =3D g_get_mediasize(name); --=20 Pawel Jakub Dawidek http://www.wheel.pl pjd@FreeBSD.org http://www.FreeBSD.org FreeBSD committer Am I Evil? Yes, I Am! --H+4ONPRPur6+Ovig Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.4 (FreeBSD) iD8DBQFJRVybForvXbEpPzQRAgc3AJ9DzXxiEepsESTEcxQpnh4UIrBKHQCg1n7F pr0qTfPiyIFilu/4mEZuAbQ= =IphU -----END PGP SIGNATURE----- --H+4ONPRPur6+Ovig--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20081214192100.GB16926>