+/**
+ * This function will be used to get default LOV/LMV/Default LMV
+ * @valid will be used to indicate which stripe it will retrieve.
+ * If the directory does not have its own default layout, then the
+ * function will request the default layout from root FID.
+ * OBD_MD_MEA LMV stripe EA
+ * OBD_MD_DEFAULT_MEA Default LMV stripe EA
+ * otherwise Default LOV EA.
+ * Each time, it can only retrieve 1 stripe EA
+ **/
+int ll_dir_getstripe_default(struct inode *inode, void **plmm, int *plmm_size,
+ struct ptlrpc_request **request,
+ struct ptlrpc_request **root_request,
+ u64 valid)
+{
+ struct ptlrpc_request *req = NULL;
+ struct ptlrpc_request *root_req = NULL;
+ struct lov_mds_md *lmm = NULL;
+ int lmm_size = 0;
+ int rc = 0;
+ ENTRY;
+
+ rc = ll_dir_get_default_layout(inode, (void **)&lmm, &lmm_size,
+ &req, valid, 0);
+ if (rc == -ENODATA && !fid_is_root(ll_inode2fid(inode)) &&
+ !(valid & OBD_MD_MEA) && root_request != NULL) {
+ int rc2 = ll_dir_get_default_layout(inode, (void **)&lmm,
+ &lmm_size, &root_req, valid,
+ GET_DEFAULT_LAYOUT_ROOT);
+ if (rc2 == 0)
+ rc = 0;
+ }
+
+ *plmm = lmm;
+ *plmm_size = lmm_size;
+ *request = req;
+ if (root_request != NULL)
+ *root_request = root_req;
+
+ RETURN(rc);
+}
+
+/**
+ * This function will be used to get default LOV/LMV/Default LMV
+ * @valid will be used to indicate which stripe it will retrieve
+ * OBD_MD_MEA LMV stripe EA
+ * OBD_MD_DEFAULT_MEA Default LMV stripe EA
+ * otherwise Default LOV EA.
+ * Each time, it can only retrieve 1 stripe EA
+ **/
+int ll_dir_getstripe(struct inode *inode, void **plmm, int *plmm_size,
+ struct ptlrpc_request **request, u64 valid)
+{
+ struct ptlrpc_request *req = NULL;
+ struct lov_mds_md *lmm = NULL;
+ int lmm_size = 0;
+ int rc = 0;
+ ENTRY;
+
+ rc = ll_dir_get_default_layout(inode, (void **)&lmm, &lmm_size,
+ &req, valid, 0);
+
+ *plmm = lmm;
+ *plmm_size = lmm_size;
+ *request = req;
+
+ RETURN(rc);
+}
+