Severity : normal
Frequency : rare
+Bugzilla : 12470
+Description: server LBUG when using old ost_num_threads parameter
+Details : Accept the old ost_num_threads parameter but warn that it
+ is deprecated, and fix an off-by-one error that caused an LBUG.
+
+Severity : normal
+Frequency : rare
Bugzilla : 11722
Description: Transient SCSI error results in persistent IO issue
Details : iobuf->dr_error is not reinitialized to 0 between two
CFS_MODULE_PARM(oss_num_threads, "i", int, 0444,
"number of OSS service threads to start");
+static int ost_num_threads;
+CFS_MODULE_PARM(ost_num_threads, "i", int, 0444,
+ "number of OST service threads to start (deprecated)");
+
void oti_to_request(struct obd_trans_info *oti, struct ptlrpc_request *req)
{
struct oti_req_ack_lock *ack_lock;
LASSERT(thread != NULL);
LASSERT(thread->t_data == NULL);
- LASSERT(thread->t_id <= OSS_THREADS_MAX);
+ LASSERTF(thread->t_id <= OSS_THREADS_MAX, "%u\n", thread->t_id);
OBD_ALLOC_PTR(tls);
if (tls != NULL) {
lprocfs_init_vars(ost, &lvars);
rc = class_register_type(&ost_obd_ops, lvars.module_vars,
LUSTRE_OSS_NAME);
+
+ if (ost_num_threads != 0 && oss_num_threads == 0) {
+ LCONSOLE_INFO("ost_num_threads module parameter is deprecated, "
+ "use oss_num_threads instead or unset both for "
+ "dynamic thread startup\n");
+ oss_num_threads = ost_num_threads;
+ }
+
RETURN(rc);
}
CDEBUG(D_RPCTRACE, "%s started %d min %d max %d running %d\n",
svc->srv_name, svc->srv_threads_started, svc->srv_threads_min,
svc->srv_threads_max, svc->srv_threads_running);
- if (svc->srv_threads_started >= svc->srv_threads_max)
+ if (svc->srv_threads_started >= svc->srv_threads_max)
RETURN(-EMFILE);
OBD_ALLOC(thread, sizeof(*thread));
RETURN(-EMFILE);
}
list_add(&thread->t_link, &svc->srv_threads);
- id = ++svc->srv_threads_started;
+ id = svc->srv_threads_started++;
spin_unlock(&svc->srv_lock);
thread->t_id = id;