Hi, all,
I know about the "foot shooting" prevention in geom(4)
when trying to update the MBR of a mounted disk.
I have a system with ad4 and ad6 mirrored and fdisk
partitions residing on the mirror to be booted alterningly:
hd30# gmirror status
Name Status Components
mirror/m0 COMPLETE ad4
ad6
hd30# mount
/dev/mirror/m0s1a on / (ufs, local, read-only)
devfs on /dev (devfs, local)
/dev/mirror/m0s3a on /etc (ufs, local)
/dev/mirror/m0s3d on /var (ufs, local, soft-updates)
hd30# boot0cfg -v /dev/mirror/m0
# flag start chs type end chs offset size
1 0x80 1: 0: 1 0xa5 1022:254:63 16065 16418430
2 0x00 1023: 0: 1 0xa5 1020:254:63 16434495 16418430
3 0x00 1021: 0: 1 0xa5 704:254:63 32852925 455539140
version=1.0 drive=0x80 mask=0xf ticks=182
options=packet,update,nosetdrv
default_selection=F1 (Slice 1)
OK, try to switch to slice 2:
hd30# boot0cfg -s 2 -v /dev/mirror/m0
boot0cfg: /dev/mirror/m0: Geom not found
boot0cfg: /dev/mirror/m0: ioctl DIOCSMBR: Operation not permitted
Known one, set debug flags and try again:
hd30# sysctl kern.geom.debugflags=0x10
kern.geom.debugflags: 0 -> 16
hd30# boot0cfg -s 2 -v /dev/mirror/m0
boot0cfg: /dev/mirror/m0: Geom not found
boot0cfg: /dev/mirror/m0: ioctl DIOCSMBR: Operation not permitted
Er ... well, what now?
Out of curiosity I tried:
hd30# boot0cfg -s 2 -v /dev/ad4
# flag start chs type end chs offset size
1 0x80 1: 0: 1 0xa5 1022:254:63 16065 16418430
2 0x00 1023: 0: 1 0xa5 1020:254:63 16434495 16418430
3 0x00 1021: 0: 1 0xa5 704:254:63 32852925 455539140
version=1.0 drive=0x80 mask=0xf ticks=182
options=packet,update,nosetdrv
default_selection=F2 (Slice 2)
hd30# boot0cfg -v /dev/ad6
# flag start chs type end chs offset size
1 0x80 1: 0: 1 0xa5 1022:254:63 16065 16418430
2 0x00 1023: 0: 1 0xa5 1020:254:63 16434495 16418430
3 0x00 1021: 0: 1 0xa5 704:254:63 32852925 455539140
version=1.0 drive=0x80 mask=0xf ticks=182
options=packet,update,nosetdrv
default_selection=F1 (Slice 1)
hd30# boot0cfg -s 2 -v /dev/ad6
# flag start chs type end chs offset size
1 0x80 1: 0: 1 0xa5 1022:254:63 16065 16418430
2 0x00 1023: 0: 1 0xa5 1020:254:63 16434495 16418430
3 0x00 1021: 0: 1 0xa5 704:254:63 32852925 455539140
version=1.0 drive=0x80 mask=0xf ticks=182
options=packet,update,nosetdrv
default_selection=F2 (Slice 2)
So, with the prevention removed it is possible to write to the
single disks, but not to the mirror as a whole.
Weird. Any ideas? What bad things can happen if I keep updating
the MBRs of both individual disks seperately - besides bad
karma and "See? I told you so!" in case I generate an inconsistent
state?
Thanks,
Patrick
--
punkt.de GmbH * Kaiserallee 13a * 76133 Karlsruhe
Tel. 0721 9109 0 * Fax 0721 9109 100
info@punkt.de http://www.punkt.de
Gf: J?rgen Egeling AG Mannheim 108285