Index: sys/geom/label/g_label.c =================================================================== --- sys/geom/label/g_label.c (wersja 197737) +++ sys/geom/label/g_label.c (kopia robocza) @@ -271,6 +271,10 @@ g_label_taste(struct g_class *mp, struct g_provide G_LABEL_DEBUG(2, "Tasting %s.", pp->name); + /* Skip providers that are already open for writing. */ + if (pp->acw > 0) + return (NULL); + if (strcmp(pp->geom->class->name, mp->name) == 0) return (NULL); Index: sys/geom/uzip/g_uzip.c =================================================================== --- sys/geom/uzip/g_uzip.c (wersja 197737) +++ sys/geom/uzip/g_uzip.c (kopia robocza) @@ -363,6 +363,11 @@ g_uzip_taste(struct g_class *mp, struct g_provider g_trace(G_T_TOPOLOGY, "g_uzip_taste(%s,%s)", mp->name, pp->name); g_topology_assert(); + + /* Skip providers that are already open for writing. */ + if (pp->acw > 0) + return (NULL); + buf = NULL; /* Index: sys/geom/shsec/g_shsec.c =================================================================== --- sys/geom/shsec/g_shsec.c (wersja 197737) +++ sys/geom/shsec/g_shsec.c (kopia robocza) @@ -638,6 +638,10 @@ g_shsec_taste(struct g_class *mp, struct g_provide g_trace(G_T_TOPOLOGY, "%s(%s, %s)", __func__, mp->name, pp->name); g_topology_assert(); + /* Skip providers that are already open for writing. */ + if (pp->acw > 0) + return (NULL); + G_SHSEC_DEBUG(3, "Tasting %s.", pp->name); gp = g_new_geomf(mp, "shsec:taste"); Index: sys/geom/part/g_part.c =================================================================== --- sys/geom/part/g_part.c (wersja 197737) +++ sys/geom/part/g_part.c (kopia robocza) @@ -1459,6 +1459,10 @@ g_part_taste(struct g_class *mp, struct g_provider G_PART_TRACE((G_T_TOPOLOGY, "%s(%s,%s)", __func__, mp->name, pp->name)); g_topology_assert(); + /* Skip providers that are already open for writing. */ + if (pp->acw > 0) + return (NULL); + /* * Create a GEOM with consumer and hook it up to the provider. * With that we become part of the topology. Optain read access Index: sys/geom/stripe/g_stripe.c =================================================================== --- sys/geom/stripe/g_stripe.c (wersja 197737) +++ sys/geom/stripe/g_stripe.c (kopia robocza) @@ -912,6 +912,10 @@ g_stripe_taste(struct g_class *mp, struct g_provid g_trace(G_T_TOPOLOGY, "%s(%s, %s)", __func__, mp->name, pp->name); g_topology_assert(); + /* Skip providers that are already open for writing. */ + if (pp->acw > 0) + return (NULL); + G_STRIPE_DEBUG(3, "Tasting %s.", pp->name); gp = g_new_geomf(mp, "stripe:taste"); Index: sys/geom/concat/g_concat.c =================================================================== --- sys/geom/concat/g_concat.c (wersja 197737) +++ sys/geom/concat/g_concat.c (kopia robocza) @@ -599,6 +599,10 @@ g_concat_taste(struct g_class *mp, struct g_provid g_trace(G_T_TOPOLOGY, "%s(%s, %s)", __func__, mp->name, pp->name); g_topology_assert(); + /* Skip providers that are already open for writing. */ + if (pp->acw > 0) + return (NULL); + G_CONCAT_DEBUG(3, "Tasting %s.", pp->name); gp = g_new_geomf(mp, "concat:taste");