}
lle->lle_comp_ops = &dom_ops;
break;
+ case LOV_PATTERN_FOREIGN:
+ lle->lle_comp_ops = NULL;
+ break;
default:
CERROR("%s: unknown composite layout entry type %i\n",
lov2obd(dev->ld_lov)->obd_name,
if (mirror_id == lre->lre_mirror_id) {
lre->lre_valid |= lle->lle_valid;
lre->lre_stale |= !lle->lle_valid;
+ lre->lre_foreign |=
+ lsme_is_foreign(lle->lle_lsme);
lre->lre_end = i;
continue;
}
LCME_FL_PREF_RD);
lre->lre_valid = lle->lle_valid;
lre->lre_stale = !lle->lle_valid;
+ lre->lre_foreign = lsme_is_foreign(lle->lle_lsme);
}
/* sanity check for FLR */
if (!lsme_inited(lle->lle_lsme))
continue;
+ if (lsme_is_foreign(lle->lle_lsme))
+ continue;
+
result = lle->lle_comp_ops->lco_init(env, dev, lov, index,
conf, lle);
if (result < 0)
if (lre->lre_stale)
continue;
+ if (lre->lre_foreign)
+ continue;
+
mirror_count++; /* valid mirror */
if (lre->lre_preferred || comp->lo_preferred_mirror < 0)
lov_layout_wait(env, lov);
if (comp->lo_entries)
- lov_foreach_layout_entry(lov, entry)
+ lov_foreach_layout_entry(lov, entry) {
+ if (lsme_is_foreign(entry->lle_lsme))
+ continue;
+
lov_delete_raid0(env, lov, entry);
+ }
RETURN(0);
}
lse->lsme_id, lse->lsme_pattern, lse->lsme_layout_gen,
lse->lsme_flags, lse->lsme_stripe_count,
lse->lsme_stripe_size);
- lov_print_raid0(env, cookie, p, lle);
+
+ if (!lsme_is_foreign(lse))
+ lov_print_raid0(env, cookie, p, lle);
}
return 0;