From: wang di <di.w...@intel.com>

If an application attempts to remove millions of files in a
single directory it will fail. This failure was tracked down to
the nlink < 2 check in lmv_revalidate_slaves, because after
nlink reaches to maximum value of LDISKFS_LINK_MAX (65000),
the nlink broadcast back from the server will be reported as
one. The return value of 1 is not invalid so lets remove
the check.

Signed-off-by: wang di <di.w...@intel.com>
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-6984
Reviewed-on: http://review.whamcloud.com/16490
Reviewed-by: James Simmons <uja.o...@yahoo.com>
Reviewed-by: Jian Yu <jian...@intel.com>
Reviewed-by: Oleg Drokin <oleg.dro...@intel.com>
Signed-off-by: James Simmons <jsimm...@infradead.org>
---
 drivers/staging/lustre/lustre/lmv/lmv_intent.c | 16 +---------------
 1 file changed, 1 insertion(+), 15 deletions(-)

diff --git a/drivers/staging/lustre/lustre/lmv/lmv_intent.c 
b/drivers/staging/lustre/lustre/lmv/lmv_intent.c
index b1071cf..aa42066 100644
--- a/drivers/staging/lustre/lustre/lmv/lmv_intent.c
+++ b/drivers/staging/lustre/lustre/lmv/lmv_intent.c
@@ -220,21 +220,7 @@ int lmv_revalidate_slaves(struct obd_export *exp,
                        /* refresh slave from server */
                        body = req_capsule_server_get(&req->rq_pill,
                                                      &RMF_MDT_BODY);
-                       LASSERT(body);
-
-                       if (unlikely(body->mbo_nlink < 2)) {
-                               /*
-                                * If this is bad stripe, most likely due
-                                * to the race between close(unlink) and
-                                * getattr, let's return -EONENT, so llite
-                                * will revalidate the dentry see
-                                * ll_inode_revalidate_fini()
-                                */
-                               CDEBUG(D_INODE, "%s: nlink %d < 2 corrupt 
stripe %d "DFID":" DFID"\n",
-                                      obd->obd_name, body->mbo_nlink, i,
-                                      PFID(&lsm->lsm_md_oinfo[i].lmo_fid),
-                                      PFID(&lsm->lsm_md_oinfo[0].lmo_fid));
-
+                       if (!body) {
                                if (it.it_lock_mode && lockh) {
                                        ldlm_lock_decref(lockh, 
it.it_lock_mode);
                                        it.it_lock_mode = 0;
-- 
1.8.3.1

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to