diff --git a/lustre/mds/handler.c b/lustre/mds/handler.c index 6b20e03cc032c2e2877f7828ebdf893c390b09cc..045daa343c1f21fabe878ede2ff2d46e3bb74b4c 100644 --- a/lustre/mds/handler.c +++ b/lustre/mds/handler.c @@ -949,12 +949,12 @@ static int mds_getattr_name(int offset, struct ptlrpc_request *req, cleanup_phase = 2; /* dchild, dparent, locks */ fill_inode: - if (dparent) { - rc = mds_check_mds_num(obd, dparent->d_cache_inode, name, - namesize); - if (rc) - GOTO(cleanup, rc); - } + + /* let's make sure this name should leave on this mds node */ + rc = mds_check_mds_num(obd, dparent->d_inode, name, namesize); + if (rc) + GOTO(cleanup, rc); + if (!DENTRY_VALID(dchild)) { intent_set_disposition(rep, DISP_LOOKUP_NEG); /* in the intent case, the policy clears this error: