b=12446
i=adilger
i=nathan
blocks to be written to disk. This behavior is controlled
using JBD2_FEATURE_ASYNC_COMMIT flag.
blocks to be written to disk. This behavior is controlled
using JBD2_FEATURE_ASYNC_COMMIT flag.
+Severity : minor
+Bugzilla : 12446
+Description: OSS needs mutliple precreate threads
+Details : Add ability to start more than one create thread per OSS.
+
--------------------------------------------------------------------------------
2007-08-10 Cluster File Systems, Inc. <info@clusterfs.com>
--------------------------------------------------------------------------------
2007-08-10 Cluster File Systems, Inc. <info@clusterfs.com>
CFS_MODULE_PARM(ost_num_threads, "i", int, 0444,
"number of OST service threads to start (deprecated)");
CFS_MODULE_PARM(ost_num_threads, "i", int, 0444,
"number of OST service threads to start (deprecated)");
+static int oss_num_create_threads;
+CFS_MODULE_PARM(oss_num_create_threads, "i", int, 0444,
+ "number of OSS create threads to start");
+
void oti_to_request(struct obd_trans_info *oti, struct ptlrpc_request *req)
{
struct oti_req_ack_lock *ack_lock;
void oti_to_request(struct obd_trans_info *oti, struct ptlrpc_request *req)
{
struct oti_req_ack_lock *ack_lock;
struct lprocfs_static_vars lvars;
int oss_min_threads;
int oss_max_threads;
struct lprocfs_static_vars lvars;
int oss_min_threads;
int oss_max_threads;
+ int oss_min_create_threads;
+ int oss_max_create_threads;
if (rc)
GOTO(out_service, rc = -EINVAL);
if (rc)
GOTO(out_service, rc = -EINVAL);
+ if (oss_num_create_threads) {
+ if (oss_num_create_threads > OSS_MAX_CREATE_THREADS)
+ oss_num_create_threads = OSS_MAX_CREATE_THREADS;
+ if (oss_num_create_threads < OSS_DEF_CREATE_THREADS)
+ oss_num_create_threads = OSS_DEF_CREATE_THREADS;
+ oss_min_create_threads = oss_max_create_threads =
+ oss_num_create_threads;
+ } else {
+ oss_min_create_threads = OSS_DEF_CREATE_THREADS;
+ oss_max_create_threads = OSS_MAX_CREATE_THREADS;
+ }
+
ost->ost_create_service =
ptlrpc_init_svc(OST_NBUFS, OST_BUFSIZE, OST_MAXREQSIZE,
OST_MAXREPSIZE, OST_CREATE_PORTAL,
OSC_REPLY_PORTAL,
OST_WATCHDOG_TIMEOUT, ost_handle, "ost_create",
ost->ost_create_service =
ptlrpc_init_svc(OST_NBUFS, OST_BUFSIZE, OST_MAXREQSIZE,
OST_MAXREPSIZE, OST_CREATE_PORTAL,
OSC_REPLY_PORTAL,
OST_WATCHDOG_TIMEOUT, ost_handle, "ost_create",
- obd->obd_proc_entry, ost_print_req, 1, 1,
+ obd->obd_proc_entry, ost_print_req,
+ oss_min_create_threads,
+ oss_max_create_threads,
"ll_ost_creat", LCT_DT_THREAD);
if (ost->ost_create_service == NULL) {
CERROR("failed to start OST create service\n");
"ll_ost_creat", LCT_DT_THREAD);
if (ost->ost_create_service == NULL) {
CERROR("failed to start OST create service\n");
struct ost_thread_local_cache *ost_tls(struct ptlrpc_request *r);
struct ost_thread_local_cache *ost_tls(struct ptlrpc_request *r);
+#define OSS_DEF_CREATE_THREADS 1UL
+#define OSS_MAX_CREATE_THREADS 16UL
+
/* Quota stuff */
extern quota_interface_t *quota_interface;
/* Quota stuff */
extern quota_interface_t *quota_interface;