On 17/01/2011 14:39, Lev Serebryakov wrote:
Hello, Ivan.
You wrote 17 января 2011 г., 16:30:43:

    I have mirrored PARTITION (/dev/ad4s1d + /dev/ad6s1d) with UFS with
label on it. This label is shown in /dev/ufs when geom_mirror is
loaded.

    When geom_mirror is NOT loaded both ad4s1d and ad6s1d are valid,
complete, clean filesystems, but here is no /dev/ufs entries for them,
and kernel can not mount FSes at all.
    And even worse: it sees ONE of all FSes and when "geom_mirror" is
    loaded, it puck up one of components from "/dev/ufs/home" instead of
    device node and everything hangs up due to loop (?)...
Yes, gmirror and glabel are known to interact badly because of such edge
cases - since glabel presents the whole underlying device in pretty much
the same way as the original device entry, gmirror cannot distinguish
between the two. You could use the "-h" argument to "gmirror create" to
get around this.
Since this is so common and has also bitten me in the past, I wonder if
some kind of avoidance detection mechanism could be created in gmirror?

   I think, it will be better if geom_label will create ufs/ufsid items
always (even if FS size is smaller that it's container (provider)
size), but create providers only as big as FS itself. It this case
geom_mirror will never see its metadata inside "UFS-based" providers
and geom_label will show FS labels even it it inside mirror when
geom_mirror is not loaded at all. Both problems are solved with one
solution :)

Ah but you see - the UFS metadata *does* record the correct file system size - and this size spans the entire container, just like /dev/adXsY etc. - so both glabel and gmirror behave correctly.

_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-geom
To unsubscribe, send any mail to "[email protected]"

Reply via email to