Whamcloud - gitweb
LU-6943 clio: get rid of cl_req
[fs/lustre-release.git] / lustre / lov / lovsub_object.c
index e960cde..12aa04e 100644 (file)
@@ -125,13 +125,33 @@ static int lovsub_object_glimpse(const struct lu_env *env,
         RETURN(cl_object_glimpse(env, &los->lso_super->lo_cl, lvb));
 }
 
+/**
+ * Implementation of struct cl_object_operations::coo_req_attr_set() for lovsub
+ * layer. Lov and lovsub are responsible only for struct obdo::o_stripe_idx
+ * field, which is filled there.
+ */
+static void lovsub_req_attr_set(const struct lu_env *env, struct cl_object *obj,
+                               struct cl_req_attr *attr)
+{
+       struct lovsub_object *subobj = cl2lovsub(obj);
 
+       ENTRY;
+       cl_req_attr_set(env, &subobj->lso_super->lo_cl, attr);
+
+       /*
+        * There is no OBD_MD_* flag for obdo::o_stripe_idx, so set it
+        * unconditionally. It never changes anyway.
+        */
+       attr->cra_oa->o_stripe_idx = subobj->lso_index;
+       EXIT;
+}
 
 static const struct cl_object_operations lovsub_ops = {
        .coo_page_init    = lovsub_page_init,
        .coo_lock_init    = lovsub_lock_init,
        .coo_attr_update  = lovsub_attr_update,
-       .coo_glimpse      = lovsub_object_glimpse
+       .coo_glimpse      = lovsub_object_glimpse,
+       .coo_req_attr_set = lovsub_req_attr_set
 };
 
 static const struct lu_object_operations lovsub_lu_obj_ops = {