while (!list_empty(&lad->lad_req_list)) {
bool wakeup = false;
- if (unlikely(lad->lad_exit ||
+ if (unlikely(test_bit(LAD_EXIT, &lad->lad_flags) ||
!thread_is_running(mthread)))
GOTO(cleanup, rc = lad->lad_post_result);
l_wait_event(athread->t_ctl_waitq,
!lfsck_assistant_req_empty(lad) ||
- lad->lad_exit ||
- lad->lad_to_post ||
- lad->lad_to_double_scan,
+ test_bit(LAD_EXIT, &lad->lad_flags) ||
+ test_bit(LAD_TO_POST, &lad->lad_flags) ||
+ test_bit(LAD_TO_DOUBLE_SCAN, &lad->lad_flags),
&lwi);
- if (unlikely(lad->lad_exit))
+ if (unlikely(test_bit(LAD_EXIT, &lad->lad_flags)))
GOTO(cleanup, rc = lad->lad_post_result);
if (!list_empty(&lad->lad_req_list))
continue;
- if (lad->lad_to_post) {
+ if (test_bit(LAD_TO_POST, &lad->lad_flags)) {
CDEBUG(D_LFSCK, "%s: %s LFSCK assistant thread post\n",
lfsck_lfsck2name(lfsck), lad->lad_name);
- if (unlikely(lad->lad_exit))
+ if (unlikely(test_bit(LAD_EXIT, &lad->lad_flags)))
GOTO(cleanup, rc = lad->lad_post_result);
- lad->lad_to_post = 0;
+ clear_bit(LAD_TO_POST, &lad->lad_flags);
LASSERT(lad->lad_post_result > 0);
/* Wakeup the master engine to go ahead. */
lad->lad_name, rc);
}
- if (lad->lad_to_double_scan) {
- lad->lad_to_double_scan = 0;
+ if (test_bit(LAD_TO_DOUBLE_SCAN, &lad->lad_flags)) {
+ clear_bit(LAD_TO_DOUBLE_SCAN, &lad->lad_flags);
atomic_inc(&lfsck->li_double_scan_count);
- lad->lad_in_double_scan = 1;
+ set_bit(LAD_IN_DOUBLE_SCAN, &lad->lad_flags);
wake_up_all(&mthread->t_ctl_waitq);
com->lc_new_checked = 0;
if (OBD_FAIL_CHECK(OBD_FAIL_LFSCK_NO_DOUBLESCAN))
GOTO(cleanup, rc = 0);
- while (lad->lad_in_double_scan) {
+ while (test_bit(LAD_IN_DOUBLE_SCAN, &lad->lad_flags)) {
rc = lfsck_assistant_query_others(env, com);
if (lfsck_phase2_next_ready(lad))
goto p2_next;
NULL, NULL);
rc = l_wait_event(athread->t_ctl_waitq,
lfsck_phase2_next_ready(lad) ||
- lad->lad_exit ||
+ test_bit(LAD_EXIT, &lad->lad_flags) ||
!thread_is_running(mthread),
&lwi);
- if (unlikely(lad->lad_exit ||
- !thread_is_running(mthread)))
+ if (unlikely(
+ test_bit(LAD_EXIT, &lad->lad_flags) ||
+ !thread_is_running(mthread)))
GOTO(cleanup, rc = 0);
if (rc == -ETIMEDOUT)
if (rc != 0)
GOTO(cleanup, rc);
- if (unlikely(lad->lad_exit ||
- !thread_is_running(mthread)))
+ if (unlikely(
+ test_bit(LAD_EXIT, &lad->lad_flags) ||
+ !thread_is_running(mthread)))
GOTO(cleanup, rc = 0);
}
}
if (rc < 0)
lad->lad_assistant_status = rc;
- if (lad->lad_exit && lad->lad_post_result <= 0)
+ if (test_bit(LAD_EXIT, &lad->lad_flags) && lad->lad_post_result <= 0)
lao->la_fill_pos(env, com, &lfsck->li_pos_checkpoint);
thread_set_flags(athread, SVC_STOPPING);
/* Under force exit case, some requests may be just freed without
* verification, those objects should be re-handled when next run.
* So not update the on-disk trace file under such case. */
- if (lad->lad_in_double_scan) {
- if (!lad->lad_exit)
+ if (test_bit(LAD_IN_DOUBLE_SCAN, &lad->lad_flags)) {
+ if (!test_bit(LAD_EXIT, &lad->lad_flags))
rc1 = lao->la_double_scan_result(env, com, rc);
CDEBUG(D_LFSCK, "%s: LFSCK assistant phase2 scan "
}
fini:
- if (lad->lad_in_double_scan)
+ if (test_bit(LAD_IN_DOUBLE_SCAN, &lad->lad_flags))
atomic_dec(&lfsck->li_double_scan_count);
spin_lock(&lad->lad_lock);
int lad_prefetched;
int lad_assistant_status;
int lad_post_result;
- unsigned int lad_to_post:1,
- lad_to_double_scan:1,
- lad_in_double_scan:1,
- lad_exit:1,
- lad_incomplete:1;
+ unsigned long lad_flags;
bool lad_advance_lock;
};
+enum {
+ LAD_TO_POST = 0,
+ LAD_TO_DOUBLE_SCAN = 1,
+ LAD_IN_DOUBLE_SCAN = 2,
+ LAD_EXIT = 3,
+ LAD_INCOMPLETE = 4,
+};
#define LFSCK_TMPBUF_LEN 64
if (likely(bitmap->size > index)) {
cfs_bitmap_set(bitmap, index);
- lad->lad_incomplete = 1;
+ set_bit(LAD_INCOMPLETE, &lad->lad_flags);
} else if (com->lc_type == LFSCK_TYPE_NAMESPACE) {
struct lfsck_namespace *ns = com->lc_file_ram;
int rc = 0;
ENTRY;
- if (!lad->lad_incomplete)
+ if (!test_bit(LAD_INCOMPLETE, &lad->lad_flags))
RETURN_EXIT;
/* If the MDT has ever failed to verfiy some OST-objects,
}
if (lo->ll_bitmap_size == 0) {
- lad->lad_incomplete = 0;
+ clear_bit(LAD_INCOMPLETE, &lad->lad_flags);
CFS_RESET_BITMAP(bitmap);
RETURN(0);
RETURN(rc >= 0 ? -EINVAL : rc);
if (cfs_bitmap_check_empty(bitmap))
- lad->lad_incomplete = 0;
+ clear_bit(LAD_INCOMPLETE, &lad->lad_flags);
else
- lad->lad_incomplete = 1;
+ set_bit(LAD_INCOMPLETE, &lad->lad_flags);
RETURN(0);
}
if (lfsck->li_master) {
struct lfsck_assistant_data *lad = com->lc_data;
- if (lad->lad_incomplete)
+ if (test_bit(LAD_INCOMPLETE, &lad->lad_flags))
lo->ll_status = LS_PARTIAL;
else
lo->ll_status = LS_COMPLETED;
if (rc < 0) {
struct lfsck_assistant_data *lad = com->lc_data;
- if (unlikely(lad->lad_exit)) {
+ if (unlikely(test_bit(LAD_EXIT, &lad->lad_flags))) {
rc = 0;
} else if (rc == -ENOTCONN || rc == -ESHUTDOWN ||
rc == -ETIMEDOUT || rc == -EHOSTDOWN ||
if (rc != 0 && bk->lb_param & LPF_FAILOUT)
RETURN(rc);
- if (unlikely(lad->lad_exit ||
+ if (unlikely(test_bit(LAD_EXIT, &lad->lad_flags) ||
!thread_is_running(&lfsck->li_thread)))
RETURN(0);
spin_lock(<ds->ltd_lock);
if (com->lc_lfsck->li_master) {
struct lfsck_assistant_data *lad = com->lc_data;
- lad->lad_incomplete = 0;
+ clear_bit(LAD_INCOMPLETE, &lad->lad_flags);
CFS_RESET_BITMAP(lad->lad_bitmap);
}
lad->lad_assistant_status = 0;
lad->lad_post_result = 0;
- lad->lad_to_post = 0;
- lad->lad_to_double_scan = 0;
- lad->lad_in_double_scan = 0;
- lad->lad_exit = 0;
+ lad->lad_flags = 0;
lad->lad_advance_lock = false;
thread_set_flags(athread, 0);
lad->lad_post_result = *result;
if (*result <= 0)
- lad->lad_exit = 1;
- lad->lad_to_post = 1;
+ set_bit(LAD_EXIT, &lad->lad_flags);
+ set_bit(LAD_TO_POST, &lad->lad_flags);
CDEBUG(D_LFSCK, "%s: waiting for assistant to do %s post, rc = %d\n",
lfsck_lfsck2name(com->lc_lfsck), lad->lad_name, *result);
struct l_wait_info lwi = { 0 };
if (status != LS_SCANNING_PHASE2)
- lad->lad_exit = 1;
+ set_bit(LAD_EXIT, &lad->lad_flags);
else
- lad->lad_to_double_scan = 1;
+ set_bit(LAD_TO_DOUBLE_SCAN, &lad->lad_flags);
CDEBUG(D_LFSCK, "%s: waiting for assistant to do %s double_scan, "
"status %d\n",
wake_up_all(&athread->t_ctl_waitq);
l_wait_event(mthread->t_ctl_waitq,
- lad->lad_in_double_scan ||
+ test_bit(LAD_IN_DOUBLE_SCAN, &lad->lad_flags) ||
thread_is_stopped(athread),
&lwi);
struct ptlrpc_thread *athread = &lad->lad_thread;
struct l_wait_info lwi = { 0 };
- lad->lad_exit = 1;
+ set_bit(LAD_EXIT, &lad->lad_flags);
wake_up_all(&athread->t_ctl_waitq);
l_wait_event(mthread->t_ctl_waitq,
thread_is_init(athread) ||
}
if (ns->ln_bitmap_size == 0) {
- lad->lad_incomplete = 0;
+ clear_bit(LAD_INCOMPLETE, &lad->lad_flags);
CFS_RESET_BITMAP(bitmap);
RETURN(0);
RETURN(rc >= 0 ? -EINVAL : rc);
if (cfs_bitmap_check_empty(bitmap))
- lad->lad_incomplete = 0;
+ clear_bit(LAD_INCOMPLETE, &lad->lad_flags);
else
- lad->lad_incomplete = 1;
+ set_bit(LAD_INCOMPLETE, &lad->lad_flags);
RETURN(0);
}
if (rc != 0)
GOTO(out, rc);
- lad->lad_incomplete = 0;
+ clear_bit(LAD_INCOMPLETE, &lad->lad_flags);
CFS_RESET_BITMAP(lad->lad_bitmap);
rc = lfsck_namespace_store(env, com);
int rc = 0;
ENTRY;
- if (!lad->lad_incomplete)
+ if (!test_bit(LAD_INCOMPLETE, &lad->lad_flags))
RETURN_EXIT;
set = ptlrpc_prep_set();