Date: Wed, 20 Dec 2006 16:57:36 +0100 From: Pawel Jakub Dawidek <pjd@FreeBSD.org> To: Max Laier <max@love2party.net> Cc: Poul-Henning Kamp <phk@FreeBSD.org>, freebsd-geom@freebsd.org Subject: Re: gmirror comes up DEGRADED Message-ID: <20061220155736.GD88356@garage.freebsd.pl> In-Reply-To: <200612190241.13265.max@love2party.net> References: <200612161537.21348.max@love2party.net> <20061216170910.GC10541@garage.freebsd.pl> <200612190241.13265.max@love2party.net>
next in thread | previous in thread | raw e-mail | index | archive | help
--IDYEmSnFhs3mNXr+ Content-Type: text/plain; charset=iso-8859-2 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Dec 19, 2006 at 02:41:05AM +0100, Max Laier wrote: > On Saturday 16 December 2006 18:09, Pawel Jakub Dawidek wrote: > > On Sat, Dec 16, 2006 at 03:37:15PM +0100, Max Laier wrote: > > > Hi, > > > > > > I'm new to really playing with gmirror and friends, so please forgive > > > me if this is a FAQ - my searches didn't turn up anything. Please CC > > > me, for I'm not on the list. > > > > > > Following setup: 6.2-pre as of Wednesday > > > > > > ad0, ad2 250G ata on > > > atapci0@pci0:31:1: class=3D0x010180 card=3D0x80281043 chip=3D0x244b= 8086 > > > rev=3D0x05 hdr=3D0x00 > > > vendor =3D 'Intel Corporation' > > > device =3D '82801BA (ICH2) UltraATA/100 IDE Controller' > > > class =3D mass storage > > > subclass =3D ATA > > > > > > mirror/gm0 over ad0, ad2 > > > > > > mirror/gm0s1 spanning all of the available space on gm0 > > > mirror/gm0s1a spanning all of the available space on gm0s1 > > > > > > mirror/gm0s1a.bde gbde encryption on gm0s1a.bde > > > > > > Now if I wait for the mirror to get in sync and do a reboot, it comes > > > up DEGRADED and resyncs ad0 (again) :-\ Does that mean I have to > > > stop everything manually before rebooting? Is there a fundamental > > > error in the setup that I can remedy? How do you do this right? It > > > certainly is not a good idea to do it the other way round (i.e. > > > mirror two gbde provider), right? > > > > > > Any help greatly appreciated. > > > > If I read the code properly, the problem you are seeing is because gbde > > doesn't close its consumers on shutdown. It opens consumer r1w1e1 on > > attach, but it only close it on manual detach. This is wrong. It should > > open consumer on first provider open or should close it on shutdown. I > > decided not to touch gbde, so you need to ask phk@ or someone else to > > fix it. >=20 > Would it make sense to have a "graceful orphanization" for this kind of= =20 > things? i.e. an operation with a semantic like "somebody asked me to go= =20 > away, so next time you get the chance - could you do so as well (for I=20 > depend on you being okay with this)?" It seems overly complicated to ask= =20 > classes that don't require a state save to implement a dedicated hook to= =20 > go away on system shutdown. For a "graceful orphanization", however, all= =20 > you need to do is keep a flag in the softc, pass down the request and=20 > wait for the open count to drop to zero. Most classes don't have to open provider below immediately - they open them on first open of their providers. For example BSD class doesn't hold MBR provider open if not needed. When you open ad0s1a, BSD class opens ad0s1, then MBR class opens ad0. Some classes have to keep providers open all the time or it's just easier that way, because of complex error handling. MIRROR class for example may want to synchronize components even if its provider is not open. --=20 Pawel Jakub Dawidek http://www.wheel.pl pjd@FreeBSD.org http://www.FreeBSD.org FreeBSD committer Am I Evil? Yes, I Am! --IDYEmSnFhs3mNXr+ Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (FreeBSD) iD8DBQFFiV1wForvXbEpPzQRAiztAKCdgC6x3aFA3ou2bNLRfSP8RatQuACdEFGb EURZZ1Jk3xbtBbHo0K4yK0c= =K58B -----END PGP SIGNATURE----- --IDYEmSnFhs3mNXr+--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20061220155736.GD88356>