struct task_struct *lo_owner;
};
-static inline struct lov_layout_raid0 *lov_r0(struct lov_object *lov, int i)
+static inline const struct lu_fid *lov_object_fid(const struct lov_object *lov)
{
- LASSERT(lov->lo_type == LLT_COMP);
- LASSERTF(i < lov->u.composite.lo_entry_count,
- "entry %d entry_count %d\n", i,
- lov->u.composite.lo_entry_count);
-
- return &lov->u.composite.lo_entries[i].lle_raid0;
+ return lu_object_fid(&lov->lo_cl.co_lu);
}
static inline struct lov_stripe_md_entry *lov_lse(struct lov_object *lov, int i)
{
LASSERT(lov->lo_type == LLT_COMP);
LASSERTF(i < lov->u.composite.lo_entry_count,
- "entry %d entry_count %d\n", i,
- lov->u.composite.lo_entry_count);
+ DFID" entry %d, entry_count %d\n",
+ PFID(lov_object_fid(lov)),
+ i, lov->u.composite.lo_entry_count);
return &lov->u.composite.lo_entries[i];
}
+static inline struct lov_layout_raid0 *lov_r0(struct lov_object *lov, int i)
+{
+ return &lov_entry(lov, i)->lle_raid0;
+}
+
#define lov_for_layout_entry(lov, entry, start, end) \
for (entry = lov_entry(lov, start); \
entry <= lov_entry(lov, end); entry++)
static inline struct lov_mirror_entry *
lov_mirror_entry(struct lov_object *lov, int i)
{
- LASSERT(i < lov->u.composite.lo_mirror_count);
+ LASSERTF(i < lov->u.composite.lo_mirror_count,
+ DFID" entry %d, mirror_count %d\n",
+ PFID(lov_object_fid(lov)),
+ i, lov->u.composite.lo_mirror_count);
+
return &lov->u.composite.lo_mirrors[i];
}
static inline bool
is_index_within_mirror(struct lov_object *lov, int index, int mirror_index)
{
- struct lov_layout_composite *comp = &lov->u.composite;
- struct lov_mirror_entry *lre = &comp->lo_mirrors[mirror_index];
+ struct lov_mirror_entry *lre = lov_mirror_entry(lov, mirror_index);
return (index >= lre->lre_start && index <= lre->lre_end);
}
* need to iterate all components to see if there are
* multiple components covering the writing component
*/
- primary = &comp->lo_mirrors[comp->lo_preferred_mirror];
+ primary = lov_mirror_entry(obj, comp->lo_preferred_mirror);
LASSERT(!primary->lre_stale);
lov_foreach_mirror_layout_entry(obj, lle, primary) {
LASSERT(lle->lle_valid);
struct lov_layout_entry *lle;
bool found = false;
- lre = &comp->lo_mirrors[(index + i) % comp->lo_mirror_count];
+ lre = lov_mirror_entry(obj, (index + i) % comp->lo_mirror_count);
if (!lre->lre_valid)
continue;
LASSERT(lio->lis_mirror_index >= 0);
- lre = &comp->lo_mirrors[lio->lis_mirror_index];
+ lre = lov_mirror_entry(lov, lio->lis_mirror_index);
start_index = lre->lre_start;
end_index = lre->lre_end;
}