* GPL HEADER END
*/
/*
- * Copyright (c) 2013, 2015, Intel Corporation.
+ * Copyright (c) 2013, 2017, Intel Corporation.
*/
/*
* lustre/lfsck/lfsck_bookmark.c
#include <lu_object.h>
#include <dt_object.h>
#include <lustre_fid.h>
-#include <lustre/lustre_user.h>
+#include <lu_target.h>
#include "lfsck_internal.h"
struct lfsck_instance *lfsck)
{
loff_t pos = 0;
- int len = sizeof(struct lfsck_bookmark);
- int rc;
+ int len = sizeof(struct lfsck_bookmark);
+ int rc;
rc = dt_record_read(env, lfsck->li_bookmark_obj,
lfsck_buf_get(env, &lfsck->li_bookmark_disk, len),
lfsck_bookmark_le_to_cpu(bm, &lfsck->li_bookmark_disk);
if (bm->lb_magic != LFSCK_BOOKMARK_MAGIC) {
- CDEBUG(D_LFSCK, "%s: invalid lfsck_bookmark magic "
- "%#x != %#x\n", lfsck_lfsck2name(lfsck),
- bm->lb_magic, LFSCK_BOOKMARK_MAGIC);
+ CDEBUG(D_LFSCK,
+ "%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;
}
/* return -ENODATA for empty lfsck_bookmark. */
rc = -ENODATA;
else
- CDEBUG(D_LFSCK, "%s: fail to load lfsck_bookmark, "
- "expected = %d: rc = %d\n",
+ CDEBUG(D_LFSCK,
+ "%s: fail to load lfsck_bookmark, expected = %d: rc = %d\n",
lfsck_lfsck2name(lfsck), len, rc);
}
return rc;
int lfsck_bookmark_store(const struct lu_env *env, struct lfsck_instance *lfsck)
{
- struct thandle *handle;
- struct dt_object *obj = lfsck->li_bookmark_obj;
- struct dt_device *dev = lfsck_obj2dev(obj);
- loff_t pos = 0;
- int len = sizeof(struct lfsck_bookmark);
- int rc;
+ struct thandle *handle;
+ struct dt_object *obj = lfsck->li_bookmark_obj;
+ struct dt_device *dev = lfsck_obj2dev(obj);
+ loff_t pos = 0;
+ int len = sizeof(struct lfsck_bookmark);
+ int rc;
+
ENTRY;
lfsck_bookmark_cpu_to_le(&lfsck->li_bookmark_disk,
{
struct dt_object *root;
struct dt_object *obj;
- int rc;
- ENTRY;
+ int rc;
+ ENTRY;
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))) {
+ if (unlikely(!dt_try_as_dir(env, root, true))) {
lfsck_object_put(env, root);
RETURN(-ENOTDIR);
struct lfsck_bookmark *mb = &lfsck->li_bookmark_ram;
/* It is upgraded from old release, set it as
- * LFSCK_ASYNC_WIN_DEFAULT to avoid memory pressure. */
+ * LFSCK_ASYNC_WIN_DEFAULT to avoid memory pressure.
+ */
if (unlikely(mb->lb_async_windows == 0)) {
mb->lb_async_windows = LFSCK_ASYNC_WIN_DEFAULT;
mutex_lock(&lfsck->li_mutex);
int lfsck_set_param(const struct lu_env *env, struct lfsck_instance *lfsck,
struct lfsck_start *start, bool reset)
{
- struct lfsck_bookmark *bk = &lfsck->li_bookmark_ram;
- int rc = 0;
- bool dirty = false;
+ struct lfsck_bookmark *bk = &lfsck->li_bookmark_ram;
+ int rc = 0;
+ bool dirty = false;
if (start == NULL) {
LASSERT(reset);
dirty = true;
}
+ if ((bk->lb_param & LPF_OST_ORPHAN) &&
+ !(start->ls_flags & LPF_OST_ORPHAN)) {
+ bk->lb_param &= ~LPF_OST_ORPHAN;
+ dirty = true;
+ } else if (!(bk->lb_param & LPF_OST_ORPHAN) &&
+ (start->ls_flags & LPF_OST_ORPHAN)) {
+ bk->lb_param |= LPF_OST_ORPHAN;
+ dirty = true;
+ }
+
if ((start->ls_valid & LSV_CREATE_OSTOBJ) || reset) {
if ((bk->lb_param & LPF_CREATE_OSTOBJ) &&
- !(start->ls_valid & LSV_CREATE_OSTOBJ)) {
+ !(start->ls_flags & LPF_CREATE_OSTOBJ)) {
bk->lb_param &= ~LPF_CREATE_OSTOBJ;
dirty = true;
} else if (!(bk->lb_param & LPF_CREATE_OSTOBJ) &&
if ((start->ls_valid & LSV_CREATE_MDTOBJ) || reset) {
if ((bk->lb_param & LPF_CREATE_MDTOBJ) &&
- !(start->ls_valid & LSV_CREATE_MDTOBJ)) {
+ !(start->ls_flags & LPF_CREATE_MDTOBJ)) {
bk->lb_param &= ~LPF_CREATE_MDTOBJ;
dirty = true;
} else if (!(bk->lb_param & LPF_CREATE_MDTOBJ) &&
if ((start->ls_valid & LSV_DELAY_CREATE_OSTOBJ) || reset) {
if ((bk->lb_param & LPF_DELAY_CREATE_OSTOBJ) &&
- !(start->ls_valid & LSV_DELAY_CREATE_OSTOBJ)) {
+ !(start->ls_flags & LPF_DELAY_CREATE_OSTOBJ)) {
bk->lb_param &= ~LPF_DELAY_CREATE_OSTOBJ;
dirty = true;
} else if (!(bk->lb_param & LPF_DELAY_CREATE_OSTOBJ) &&
if ((start->ls_valid & LSV_ERROR_HANDLE) || reset) {
if ((bk->lb_param & LPF_FAILOUT) &&
- !(start->ls_valid & LSV_ERROR_HANDLE)) {
+ !(start->ls_flags & LPF_FAILOUT)) {
bk->lb_param &= ~LPF_FAILOUT;
dirty = true;
- } else if (!(start->ls_flags & LPF_FAILOUT) &&
- (bk->lb_param & LPF_FAILOUT)) {
- bk->lb_param &= ~LPF_FAILOUT;
+ } else if (!(bk->lb_param & LPF_FAILOUT) &&
+ (start->ls_flags & LPF_FAILOUT)) {
+ bk->lb_param |= LPF_FAILOUT;
dirty = true;
}
}
if ((start->ls_valid & LSV_DRYRUN) || reset) {
if ((bk->lb_param & LPF_DRYRUN) &&
- !(start->ls_valid & LSV_DRYRUN)) {
- bk->lb_param &= ~LPF_DRYRUN;
- dirty = true;
- } else if (!(start->ls_flags & LPF_DRYRUN) &&
- (bk->lb_param & LPF_DRYRUN)) {
+ !(start->ls_flags & LPF_DRYRUN)) {
bk->lb_param &= ~LPF_DRYRUN;
lfsck->li_drop_dryrun = 1;
dirty = true;
+ } else if (!(bk->lb_param & LPF_DRYRUN) &&
+ (start->ls_flags & LPF_DRYRUN)) {
+ bk->lb_param |= LPF_DRYRUN;
+ dirty = true;
}
}
- if ((bk->lb_param & LPF_OST_ORPHAN) &&
- !(start->ls_flags & LPF_OST_ORPHAN)) {
- bk->lb_param &= ~LPF_OST_ORPHAN;
- dirty = true;
- } else if (!(bk->lb_param & LPF_OST_ORPHAN) &&
- (start->ls_flags & LPF_OST_ORPHAN)) {
- bk->lb_param |= LPF_OST_ORPHAN;
- dirty = true;
- }
-
if (start->ls_valid & LSV_SPEED_LIMIT) {
if (__lfsck_set_speed(lfsck, start->ls_speed_limit))
dirty = true;
}
if (start->ls_valid & LSV_ASYNC_WINDOWS) {
- if (start->ls_async_windows < 1 ||
- start->ls_async_windows > LFSCK_ASYNC_WIN_MAX)
+ if (start->ls_async_windows < 1)
return -EINVAL;
if (bk->lb_async_windows != start->ls_async_windows) {