X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fmgs%2Fmgs_nids.c;h=63c427fe3c4d3692f129cc8cbbc7eaf22a83bbee;hp=391f925b9c743b89fe53f799da33127b505b1af1;hb=df1d59429cbfd1ea2464e863458b6a4a268e516b;hpb=93a6346f8b73f68cb5bc02a3c826ac0e5b4c236e diff --git a/lustre/mgs/mgs_nids.c b/lustre/mgs/mgs_nids.c index 391f925..63c427f 100644 --- a/lustre/mgs/mgs_nids.c +++ b/lustre/mgs/mgs_nids.c @@ -414,10 +414,10 @@ static int mgs_nidtbl_init_fs(const struct lu_env *env, struct fs_db *fsdb) /* --------- Imperative Recovery relies on nidtbl stuff ------- */ void mgs_ir_notify_complete(struct fs_db *fsdb) { - struct timeval tv; - cfs_duration_t delta; + struct timeval tv; + cfs_duration_t delta; - cfs_atomic_set(&fsdb->fsdb_notify_phase, 0); + atomic_set(&fsdb->fsdb_notify_phase, 0); /* do statistic */ fsdb->fsdb_notify_count++; @@ -445,47 +445,47 @@ static int mgs_ir_notify(void *arg) set_user_nice(current, -2); - mgc_fsname2resid(fsdb->fsdb_name, &resid, CONFIG_T_RECOVER); - while (1) { - struct l_wait_info lwi = { 0 }; + mgc_fsname2resid(fsdb->fsdb_name, &resid, CONFIG_T_RECOVER); + while (1) { + struct l_wait_info lwi = { 0 }; - l_wait_event(fsdb->fsdb_notify_waitq, - fsdb->fsdb_notify_stop || - cfs_atomic_read(&fsdb->fsdb_notify_phase), - &lwi); - if (fsdb->fsdb_notify_stop) - break; + l_wait_event(fsdb->fsdb_notify_waitq, + fsdb->fsdb_notify_stop || + atomic_read(&fsdb->fsdb_notify_phase), + &lwi); + if (fsdb->fsdb_notify_stop) + break; - CDEBUG(D_MGS, "%s woken up, phase is %d\n", - name, cfs_atomic_read(&fsdb->fsdb_notify_phase)); + CDEBUG(D_MGS, "%s woken up, phase is %d\n", + name, atomic_read(&fsdb->fsdb_notify_phase)); - fsdb->fsdb_notify_start = cfs_time_current(); + fsdb->fsdb_notify_start = cfs_time_current(); mgs_revoke_lock(fsdb->fsdb_mgs, fsdb, CONFIG_T_RECOVER); - } + } complete(&fsdb->fsdb_notify_comp); - return 0; + return 0; } int mgs_ir_init_fs(const struct lu_env *env, struct mgs_device *mgs, struct fs_db *fsdb) { - cfs_task_t *task; + struct task_struct *task; - if (!ir_timeout) - ir_timeout = OBD_IR_MGS_TIMEOUT; + if (!ir_timeout) + ir_timeout = OBD_IR_MGS_TIMEOUT; - fsdb->fsdb_ir_state = IR_FULL; - if (cfs_time_before(cfs_time_current_sec(), - mgs->mgs_start_time + ir_timeout)) - fsdb->fsdb_ir_state = IR_STARTUP; - fsdb->fsdb_nonir_clients = 0; - CFS_INIT_LIST_HEAD(&fsdb->fsdb_clients); + fsdb->fsdb_ir_state = IR_FULL; + if (cfs_time_before(cfs_time_current_sec(), + mgs->mgs_start_time + ir_timeout)) + fsdb->fsdb_ir_state = IR_STARTUP; + fsdb->fsdb_nonir_clients = 0; + CFS_INIT_LIST_HEAD(&fsdb->fsdb_clients); - /* start notify thread */ + /* start notify thread */ fsdb->fsdb_mgs = mgs; - cfs_atomic_set(&fsdb->fsdb_notify_phase, 0); - cfs_waitq_init(&fsdb->fsdb_notify_waitq); + atomic_set(&fsdb->fsdb_notify_phase, 0); + init_waitqueue_head(&fsdb->fsdb_notify_waitq); init_completion(&fsdb->fsdb_notify_comp); task = kthread_run(mgs_ir_notify, fsdb, @@ -496,22 +496,22 @@ int mgs_ir_init_fs(const struct lu_env *env, struct mgs_device *mgs, CERROR("Start notify thread error %ld\n", PTR_ERR(task)); mgs_nidtbl_init_fs(env, fsdb); - return 0; + return 0; } void mgs_ir_fini_fs(struct mgs_device *mgs, struct fs_db *fsdb) { if (test_bit(FSDB_MGS_SELF, &fsdb->fsdb_flags)) - return; + return; - mgs_fsc_cleanup_by_fsdb(fsdb); + mgs_fsc_cleanup_by_fsdb(fsdb); - mgs_nidtbl_fini_fs(fsdb); + mgs_nidtbl_fini_fs(fsdb); - LASSERT(cfs_list_empty(&fsdb->fsdb_clients)); + LASSERT(cfs_list_empty(&fsdb->fsdb_clients)); - fsdb->fsdb_notify_stop = 1; - cfs_waitq_signal(&fsdb->fsdb_notify_waitq); + fsdb->fsdb_notify_stop = 1; + wake_up(&fsdb->fsdb_notify_waitq); wait_for_completion(&fsdb->fsdb_notify_comp); } @@ -563,14 +563,14 @@ int mgs_ir_update(const struct lu_env *env, struct mgs_device *mgs, } mutex_unlock(&fsdb->fsdb_mutex); - LASSERT(ergo(mti->mti_flags & LDD_F_IR_CAPABLE, notify)); - if (notify) { - CDEBUG(D_MGS, "Try to revoke recover lock of %s\n", - fsdb->fsdb_name); - cfs_atomic_inc(&fsdb->fsdb_notify_phase); - cfs_waitq_signal(&fsdb->fsdb_notify_waitq); - } - return 0; + LASSERT(ergo(mti->mti_flags & LDD_F_IR_CAPABLE, notify)); + if (notify) { + CDEBUG(D_MGS, "Try to revoke recover lock of %s\n", + fsdb->fsdb_name); + atomic_inc(&fsdb->fsdb_notify_phase); + wake_up(&fsdb->fsdb_notify_waitq); + } + return 0; } /* NID table can be cached by two entities: Clients and MDTs */