struct obd_import;
struct lustre_cache;
struct client_obd {
- struct semaphore cl_sem;
+ struct rw_semaphore cl_sem;
struct obd_uuid cl_target_uuid;
struct obd_import *cl_import; /* ptlrpc connection state */
int cl_conn_count;
/* for capability keys update */
struct lustre_capa_key *mds_capa_keys;
+ struct rw_semaphore mds_notify_lock;
};
/* lov objid */
spinlock_t obd_uncommitted_replies_lock;
cfs_timer_t obd_recovery_timer;
time_t obd_recovery_start; /* seconds */
- time_t obd_recovery_end; /* seconds */
+ time_t obd_recovery_end; /* seconds, for lprocfs_status */
time_t obd_recovery_max_time; /* seconds, bz13079 */
+ int obd_recovery_timeout;
/* new recovery stuff from CMD2 */
struct target_recovery_data obd_recovery_data;
enum obd_cleanup_stage {
/* Special case hack for MDS LOVs */
OBD_CLEANUP_EARLY,
-/* Precleanup stage 1, we must make sure all exports (other than the
- self-export) get destroyed. */
+/* can be directly mapped to .ldto_device_fini() */
OBD_CLEANUP_EXPORTS,
-/* Precleanup stage 2, do other type-specific cleanup requiring the
- self-export. */
- OBD_CLEANUP_SELF_EXP,
-/* FIXME we should eliminate the "precleanup" function and make them stages
- of the "cleanup" function. */
- OBD_CLEANUP_OBD,
};
/* get/set_info keys */
obd->obd_name, transno, error);
return;
}
- CDEBUG(D_HA, "%s: transno "LPU64" committed\n",
- obd->obd_name, transno);
if (transno > obd->obd_last_committed) {
+ CDEBUG(D_HA, "%s: transno "LPD64" committed\n",
+ obd->obd_name, transno);
obd->obd_last_committed = transno;
ptlrpc_commit_replies (obd);
+ } else {
+ CDEBUG(D_INFO, "%s: transno "LPD64" committed\n",
+ obd->obd_name, transno);
}
}