+
+int ll_get_fid(struct obd_export *exp, struct lustre_id *idp,
+ char *filename, struct lustre_id *ret)
+{
+ struct ptlrpc_request *request = NULL;
+ struct mds_body *body;
+ int valid = 0;
+ int rc;
+
+ valid |= OBD_MD_FID;
+
+ rc = md_getattr_lock(exp, idp, filename, strlen(filename) + 1,
+ valid, 0, &request);
+ if (rc < 0) {
+ CDEBUG(D_INFO, "md_getattr_lock failed on %s: rc %d\n",
+ filename, rc);
+ return rc;
+ }
+
+ body = lustre_msg_buf(request->rq_repmsg, 0, sizeof(*body));
+ LASSERT(body != NULL);
+ LASSERT_REPSWABBED(request, 0);
+
+ *ret = body->id1;
+ ptlrpc_req_finished(request);
+
+ return rc;
+}