X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Flfsck%2Flfsck_bookmark.c;h=79ab91c6aabd240998c32c9ba1ad175896debed6;hp=15a0afd6074d9e4005a78f5cc7d5472e3fdfef27;hb=fdda2ad13bf014ec7e492bda3b8276dfd85fcd6d;hpb=f6d744d259fe6bc0b8750127565fb13fb2e66c06 diff --git a/lustre/lfsck/lfsck_bookmark.c b/lustre/lfsck/lfsck_bookmark.c index 15a0afd..79ab91c 100644 --- a/lustre/lfsck/lfsck_bookmark.c +++ b/lustre/lfsck/lfsck_bookmark.c @@ -20,7 +20,7 @@ * GPL HEADER END */ /* - * Copyright (c) 2013, 2014, Intel Corporation. + * Copyright (c) 2013, 2015, Intel Corporation. */ /* * lustre/lfsck/lfsck_bookmark.c @@ -182,8 +182,20 @@ int lfsck_bookmark_setup(const struct lu_env *env, lfsck->li_bookmark_obj = obj; rc = lfsck_bookmark_load(env, lfsck); - if (rc == -ENODATA) + if (rc == 0) { + 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. */ + if (unlikely(mb->lb_async_windows == 0)) { + mb->lb_async_windows = LFSCK_ASYNC_WIN_DEFAULT; + mutex_lock(&lfsck->li_mutex); + rc = lfsck_bookmark_store(env, lfsck); + mutex_unlock(&lfsck->li_mutex); + } + } else if (rc == -ENODATA) { rc = lfsck_bookmark_init(env, lfsck); + } RETURN(rc); } @@ -314,6 +326,10 @@ int lfsck_set_param(const struct lu_env *env, struct lfsck_instance *lfsck, } if (start->ls_valid & LSV_ASYNC_WINDOWS) { + if (start->ls_async_windows < 1 || + start->ls_async_windows > LFSCK_ASYNC_WIN_MAX) + return -EINVAL; + if (bk->lb_async_windows != start->ls_async_windows) { bk->lb_async_windows = start->ls_async_windows; dirty = true;