target->obd_name,
obd_uuid2str(&exp->exp_client_uuid),
obd_export_nid2str(exp),
- target->obd_max_recoverable_clients,
+ atomic_read(&target->obd_max_recoverable_clients),
timeout / 60, timeout % 60);
} else {
struct target_distribute_txn_data *tdtd;
connected = atomic_read(&target->obd_connected_clients);
in_progress = atomic_read(&target->obd_lock_replay_clients);
- known = target->obd_max_recoverable_clients;
+ known =
+ atomic_read(&target->obd_max_recoverable_clients);
stale = target->obd_stale_clients;
remaining = hrtimer_expires_remaining(timer);
left = ktime_divns(remaining, NSEC_PER_SEC);
* condition.
*/
if (new_mds_mds_conn)
- target->obd_max_recoverable_clients++;
+ atomic_inc(&target->obd_max_recoverable_clients);
+
if (atomic_inc_return(&target->obd_connected_clients) ==
- target->obd_max_recoverable_clients)
+ atomic_read(&target->obd_max_recoverable_clients))
wake_up(&target->obd_next_transno_waitq);
}
LCONSOLE_INFO("%s: Recovery over after %lld:%.02lld, of %d clients %d recovered and %d %s evicted.\n",
obd->obd_name, (s64)elapsed_time / 60,
(s64)elapsed_time % 60,
- obd->obd_max_recoverable_clients,
+ atomic_read(&obd->obd_max_recoverable_clients),
atomic_read(&obd->obd_connected_clients),
obd->obd_stale_clients,
obd->obd_stale_clients == 1 ? "was" : "were");
obd->obd_name,
obd->obd_recovery_timeout / 60,
obd->obd_recovery_timeout % 60,
- obd->obd_max_recoverable_clients,
- (obd->obd_max_recoverable_clients == 1) ? "" : "s",
- (obd->obd_max_recoverable_clients == 1) ? "s" : "");
+ atomic_read(&obd->obd_max_recoverable_clients),
+ (atomic_read(&obd->obd_max_recoverable_clients) == 1) ?
+ "" : "s",
+ (atomic_read(&obd->obd_max_recoverable_clients) == 1) ?
+ "s" : "");
}
/**
CDEBUG(D_HA,
"max: %d, connected: %d, completed: %d, queue_len: %d, req_transno: %llu, next_transno: %llu\n",
- obd->obd_max_recoverable_clients, connected, completed,
+ atomic_read(&obd->obd_max_recoverable_clients),
+ connected, completed,
queue_len, req_transno, next_transno);
if (obd->obd_abort_recovery) {
CDEBUG(D_HA,
"connected %d stale %d max_recoverable_clients %d abort %d expired %d\n",
- clnts, obd->obd_stale_clients, obd->obd_max_recoverable_clients,
+ clnts, obd->obd_stale_clients,
+ atomic_read(&obd->obd_max_recoverable_clients),
obd->obd_abort_recovery, obd->obd_recovery_expired);
if (!obd->obd_abort_recovery && !obd->obd_recovery_expired) {
- LASSERT(clnts <= obd->obd_max_recoverable_clients);
+ LASSERT(clnts <=
+ atomic_read(&obd->obd_max_recoverable_clients));
if (clnts + obd->obd_stale_clients <
- obd->obd_max_recoverable_clients)
+ atomic_read(&obd->obd_max_recoverable_clients))
return 0;
}
if (lut->lut_bottom->dd_rdonly)
return;
- if (obd->obd_max_recoverable_clients == 0) {
+ if (atomic_read(&obd->obd_max_recoverable_clients) == 0) {
/** Update server last boot epoch */
tgt_boot_epoch_update(lut);
return;
CDEBUG(D_HA, "RECOVERY: service %s, %d recoverable clients, "
"last_transno %llu\n", obd->obd_name,
- obd->obd_max_recoverable_clients, obd->obd_last_committed);
+ atomic_read(&obd->obd_max_recoverable_clients),
+ obd->obd_last_committed);
LASSERT(obd->obd_stopping == 0);
obd->obd_next_recovery_transno = obd->obd_last_committed + 1;
obd->obd_recovery_start = 0;
LASSERT(obd != NULL);
seq_printf(m, "status: ");
- if (obd->obd_max_recoverable_clients == 0) {
+ if (atomic_read(&obd->obd_max_recoverable_clients) == 0) {
seq_printf(m, "INACTIVE\n");
goto out;
}
ktime_get_real_seconds() - obd->obd_recovery_start);
/* Number of clients that have completed recovery */
seq_printf(m, "completed_clients: %d/%d\n",
- obd->obd_max_recoverable_clients -
+ atomic_read(&obd->obd_max_recoverable_clients) -
obd->obd_stale_clients,
- obd->obd_max_recoverable_clients);
+ atomic_read(&obd->obd_max_recoverable_clients));
seq_printf(m, "replayed_requests: %d\n",
obd->obd_replayed_requests);
seq_printf(m, "last_transno: %lld\n",
ktime_get_real_seconds()));
seq_printf(m, "connected_clients: %d/%d\n",
atomic_read(&obd->obd_connected_clients),
- obd->obd_max_recoverable_clients);
+ atomic_read(&obd->obd_max_recoverable_clients));
/* Number of clients that have completed recovery */
seq_printf(m, "req_replay_clients: %d\n",
atomic_read(&obd->obd_req_replay_clients));