X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fosd%2Fosd_handler.c;h=454b9e3cfb01b3d044fb94d9389d8111186a7f83;hp=57c930cf8573ee2b6dc1c90018aaa1b260bcf498;hb=d57062541b587184daab88d544065e04e09ede0d;hpb=b8c8ce3d1082929360ad168db85ec687b3e07026 diff --git a/lustre/osd/osd_handler.c b/lustre/osd/osd_handler.c index 57c930c..454b9e3 100644 --- a/lustre/osd/osd_handler.c +++ b/lustre/osd/osd_handler.c @@ -3688,23 +3688,22 @@ static struct inode *osd_iget(struct osd_thread_info *info, if (inode == NULL) { CERROR("no inode\n"); inode = ERR_PTR(-EACCES); - } else if (is_bad_inode(inode)) { - CERROR("bad inode\n"); - iput(inode); - inode = ERR_PTR(-ENOENT); } else if (id->oii_gen != OSD_OII_NOGEN && inode->i_generation != id->oii_gen) { - CERROR("stale inode\n"); iput(inode); inode = ERR_PTR(-ESTALE); } else if (inode->i_nlink == 0) { /* due to parallel readdir and unlink, * we can have dead inode here. */ + CWARN("stale inode\n"); make_bad_inode(inode); iput(inode); inode = ERR_PTR(-ESTALE); + } else if (is_bad_inode(inode)) { + CERROR("bad inode %lx\n",inode->i_ino); + iput(inode); + inode = ERR_PTR(-ENOENT); } - return inode; }