Whamcloud - gitweb
LU-9031 osd: handle jinode change for ldiskfs
[fs/lustre-release.git] / lustre / osd-ldiskfs / osd_handler.c
index 9265aec..d10626d 100644 (file)
@@ -385,6 +385,7 @@ int osd_get_lma(struct osd_thread_info *info, struct inode *inode,
 struct inode *osd_iget(struct osd_thread_info *info, struct osd_device *dev,
                       struct osd_inode_id *id)
 {
+       int rc;
        struct inode *inode = NULL;
 
        /* if we look for an inode withing a running
@@ -414,6 +415,9 @@ struct inode *osd_iget(struct osd_thread_info *info, struct osd_device *dev,
                LDISKFS_SB(osd_sb(dev))->s_es->s_volume_name, id->oii_ino);
                iput(inode);
                inode = ERR_PTR(-ENOENT);
+       } else if ((rc = osd_attach_jinode(inode))) {
+               iput(inode);
+               inode = ERR_PTR(rc);
        } else {
                ldiskfs_clear_inode_state(inode, LDISKFS_STATE_LUSTRE_DESTROY);
                if (id->oii_gen == OSD_OII_NOGEN)
@@ -1191,6 +1195,13 @@ found:
            (flags & SS_AUTO_PARTIAL || sf->sf_status == SS_SCANNING))
                osd_check_lmv(info, dev, inode, oic);
 
+       result = osd_attach_jinode(inode);
+       if (result) {
+               obj->oo_inode = NULL;
+               iput(inode);
+               GOTO(out, result);
+       }
+
        if (!ldiskfs_pdo)
                GOTO(out, result = 0);