/* class_obd.c */
extern char obd_jobid_name[];
+extern unsigned int obd_lbug_on_eviction;
+extern unsigned int obd_dump_on_eviction;
+
+static inline bool do_dump_on_eviction(struct obd_device *exp_obd)
+{
+ if (obd_lbug_on_eviction &&
+ strncmp(exp_obd->obd_type->typ_name, LUSTRE_MGC_NAME,
+ strlen(LUSTRE_MGC_NAME))) {
+ CERROR("LBUG upon eviction\n");
+ LBUG();
+ }
+
+ return obd_dump_on_eviction;
+}
+
/* statfs_pack.c */
struct kstatfs;
void statfs_pack(struct obd_statfs *osfs, struct kstatfs *sfs);
atomic_read(&obd->obd_connected_clients),
obd->obd_stale_clients,
obd->obd_stale_clients == 1 ? "was" : "were");
+ if (obd->obd_stale_clients && do_dump_on_eviction(obd))
+ libcfs_debug_dumplog();
}
ldlm_reprocess_recovery_done(obd->obd_namespace);
lock->l_blast_sent,
obd_export_nid2str(export));
ldlm_lock_to_ns(lock)->ns_timeouts++;
- do_dump++;
+ if (do_dump_on_eviction(export->exp_obd))
+ do_dump++;
class_fail_export(export);
}
class_export_lock_put(export, lock);
}
spin_unlock_bh(&waiting_locks_spinlock);
- if (do_dump && obd_dump_on_eviction) {
+ if (do_dump) {
CERROR("dump the log upon eviction\n");
libcfs_debug_dumplog();
}
*/
static int ptlrpc_invalidate_import_thread(void *data)
{
- struct obd_import *imp = data;
+ struct obd_import *imp = data;
- ENTRY;
- CDEBUG(D_HA, "thread invalidate import %s to %s@%s\n",
- imp->imp_obd->obd_name, obd2cli_tgt(imp->imp_obd),
- imp->imp_connection->c_remote_uuid.uuid);
-
- ptlrpc_invalidate_import(imp);
+ ENTRY;
+ CDEBUG(D_HA, "thread invalidate import %s to %s@%s\n",
+ imp->imp_obd->obd_name, obd2cli_tgt(imp->imp_obd),
+ imp->imp_connection->c_remote_uuid.uuid);
- if (obd_dump_on_eviction) {
- CERROR("dump the log upon eviction\n");
- libcfs_debug_dumplog();
- }
+ if (do_dump_on_eviction(imp->imp_obd)) {
+ CERROR("dump the log upon eviction\n");
+ libcfs_debug_dumplog();
+ }
+ ptlrpc_invalidate_import(imp);
import_set_state(imp, LUSTRE_IMP_RECOVER);
- ptlrpc_import_recovery_state_machine(imp);
+ ptlrpc_import_recovery_state_machine(imp);
- class_import_put(imp);
- RETURN(0);
+ class_import_put(imp);
+ RETURN(0);
}
/**