X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Flfsck%2Flfsck_bookmark.c;h=8275bf129f76178a30f6b694a4976137ab05707b;hp=204caa832387b8b2f57212a72bf2ce375d9ac16a;hb=0347ad57ee875b730c3ec0da203857a5c86fc394;hpb=11db1a551172f596d1d284e8496530f9ce24ac81 diff --git a/lustre/lfsck/lfsck_bookmark.c b/lustre/lfsck/lfsck_bookmark.c index 204caa8..8275bf1 100644 --- a/lustre/lfsck/lfsck_bookmark.c +++ b/lustre/lfsck/lfsck_bookmark.c @@ -74,9 +74,9 @@ static int lfsck_bookmark_load(const struct lu_env *env, lfsck_bookmark_le_to_cpu(bm, &lfsck->li_bookmark_disk); if (bm->lb_magic != LFSCK_BOOKMARK_MAGIC) { - CWARN("%.16s: invalid lfsck_bookmark magic " - "0x%x != 0x%x\n", lfsck_lfsck2name(lfsck), - bm->lb_magic, LFSCK_BOOKMARK_MAGIC); + CWARN("%s: invalid lfsck_bookmark magic %#x != %#x\n", + lfsck_lfsck2name(lfsck), bm->lb_magic, + LFSCK_BOOKMARK_MAGIC); /* Process it as new lfsck_bookmark. */ rc = -ENODATA; } @@ -85,7 +85,7 @@ static int lfsck_bookmark_load(const struct lu_env *env, /* return -ENODATA for empty lfsck_bookmark. */ rc = -ENODATA; else - CERROR("%.16s: fail to load lfsck_bookmark, " + CERROR("%s: fail to load lfsck_bookmark: " "expected = %d, rc = %d\n", lfsck_lfsck2name(lfsck), len, rc); } @@ -106,22 +106,22 @@ int lfsck_bookmark_store(const struct lu_env *env, struct lfsck_instance *lfsck) handle = dt_trans_create(env, lfsck->li_bottom); if (IS_ERR(handle)) { rc = PTR_ERR(handle); - CERROR("%.16s: fail to create trans for storing " - "lfsck_bookmark: %d\n,", lfsck_lfsck2name(lfsck), rc); + CERROR("%s: fail to create trans for storing lfsck_bookmark: " + "rc = %d\n", lfsck_lfsck2name(lfsck), rc); RETURN(rc); } rc = dt_declare_record_write(env, obj, len, 0, handle); if (rc != 0) { - CERROR("%.16s: fail to declare trans for storing " - "lfsck_bookmark: %d\n,", lfsck_lfsck2name(lfsck), rc); + CERROR("%s: fail to declare trans for storing lfsck_bookmark: " + "rc = %d\n", lfsck_lfsck2name(lfsck), rc); GOTO(out, rc); } rc = dt_trans_start_local(env, lfsck->li_bottom, handle); if (rc != 0) { - CERROR("%.16s: fail to start trans for storing " - "lfsck_bookmark: %d\n,", lfsck_lfsck2name(lfsck), rc); + CERROR("%s: fail to start trans for storing lfsck_bookmark: " + "rc = %d\n", lfsck_lfsck2name(lfsck), rc); GOTO(out, rc); } @@ -129,7 +129,7 @@ int lfsck_bookmark_store(const struct lu_env *env, struct lfsck_instance *lfsck) lfsck_buf_get(env, &lfsck->li_bookmark_disk, len), &pos, handle); if (rc != 0) - CERROR("%.16s: fail to store lfsck_bookmark, expected = %d, " + CERROR("%s: fail to store lfsck_bookmark: expected = %d, " "rc = %d\n", lfsck_lfsck2name(lfsck), len, rc); GOTO(out, rc); @@ -157,14 +157,25 @@ static int lfsck_bookmark_init(const struct lu_env *env, int lfsck_bookmark_setup(const struct lu_env *env, struct lfsck_instance *lfsck) { + struct dt_object *root; struct dt_object *obj; int rc; ENTRY; - obj = local_file_find_or_create(env, lfsck->li_los, - lfsck->li_local_root, + root = dt_locate(env, lfsck->li_bottom, &lfsck->li_local_root_fid); + if (IS_ERR(root)) + RETURN(PTR_ERR(root)); + + if (unlikely(!dt_try_as_dir(env, root))) { + lu_object_put(env, &root->do_lu); + + RETURN(-ENOTDIR); + } + + obj = local_file_find_or_create(env, lfsck->li_los, root, lfsck_bookmark_name, S_IFREG | S_IRUGO | S_IWUSR); + lu_object_put(env, &root->do_lu); if (IS_ERR(obj)) RETURN(PTR_ERR(obj));