Whamcloud - gitweb
b: 1929
authorniu <niu>
Thu, 18 Sep 2003 07:55:58 +0000 (07:55 +0000)
committerniu <niu>
Thu, 18 Sep 2003 07:55:58 +0000 (07:55 +0000)
r: braam
Improve the code organization in llite.

lustre/llite/llite_lib.c

index ee16bba..b025ea9 100644 (file)
@@ -790,3 +790,32 @@ void ll_umount_begin(struct super_block *sb)
 
         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);
+}