Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
LU-2868 lfsck: finish otable iteration if no more objects
[fs/lustre-release.git]
/
lustre
/
mdd
/
mdd_lfsck.c
diff --git
a/lustre/mdd/mdd_lfsck.c
b/lustre/mdd/mdd_lfsck.c
index
02ea968
..
bca6ce1
100644
(file)
--- a/
lustre/mdd/mdd_lfsck.c
+++ b/
lustre/mdd/mdd_lfsck.c
@@
-2118,12
+2118,17
@@
static int object_is_client_visible(const struct lu_env *env,
else if (IS_ERR(obj))
return PTR_ERR(obj);
else if (IS_ERR(obj))
return PTR_ERR(obj);
- /* XXX: need more processing for remote object in the future. */
- if (!mdd_object_exists(obj) || mdd_object_remote(obj)) {
+ if (!mdd_object_exists(obj)) {
mdd_object_put(env, obj);
return 0;
}
mdd_object_put(env, obj);
return 0;
}
+ /* Currently, only client visible directory can be remote. */
+ if (mdd_object_remote(obj)) {
+ mdd_object_put(env, obj);
+ return 1;
+ }
+
depth++;
}
return 0;
depth++;
}
return 0;
@@
-2213,12
+2218,19
@@
static int mdd_lfsck_prep(struct lu_env *env, struct md_lfsck *lfsck)
/* Init otable-based iterator. */
if (pos == NULL) {
rc = iops->load(env, lfsck->ml_di_oit, 0);
/* Init otable-based iterator. */
if (pos == NULL) {
rc = iops->load(env, lfsck->ml_di_oit, 0);
- GOTO(out, rc = (rc >= 0 ? 0 : rc));
+ if (rc > 0) {
+ lfsck->ml_oit_over = 1;
+ rc = 0;
+ }
+
+ GOTO(out, rc);
}
rc = iops->load(env, lfsck->ml_di_oit, pos->lp_oit_cookie);
if (rc < 0)
GOTO(out, rc);
}
rc = iops->load(env, lfsck->ml_di_oit, pos->lp_oit_cookie);
if (rc < 0)
GOTO(out, rc);
+ else if (rc > 0)
+ lfsck->ml_oit_over = 1;
if (fid_is_zero(&pos->lp_dir_parent))
GOTO(out, rc = 0);
if (fid_is_zero(&pos->lp_dir_parent))
GOTO(out, rc = 0);