EXIT;
}
-
-int ll_prep_inode(struct obd_export *exp, struct inode **inode,
- struct ptlrpc_request *req, int offset, struct super_block *sb)
-{
- struct lustre_md md;
- int rc = 0;
-
- rc = mdc_req2lustre_md(req, offset, exp, &md);
- if (rc)
- RETURN(rc);
-
- if (*inode)
- ll_update_inode(*inode, md.body, md.lsm);
- else {
- LASSERT(sb);
- *inode = ll_iget(sb, md.body->ino, &md);
- if (!*inode || is_bad_inode(*inode)) {
- /* free the lsm if we allocated one above */
- if (md.lsm != NULL)
- obd_free_memmd(exp, &md.lsm);
- /* XXX might need iput() for bad inode */
- rc = -ENOMEM;
- CERROR("new_inode -fatal: rc %d\n", rc);
- LBUG();
- }
- }
-
- RETURN(rc);
-}