return -ENOMEM;
rc = ost_lock_get(exp, oa, begin, end - begin, ®ion->lh, LCK_PR, 0);
- if (rc)
+ if (rc) {
+ OBD_FREE_PTR(region);
return rc;
+ }
CDEBUG(D_OTHER, "ost lock [%llu,%llu], lh=%p\n",
begin, end, ®ion->lh);
lustre_msg_get_version(msg),
LUSTRE_OBD_VERSION);
break;
- case SEQ_QUERY:
- /* Note: client always use MDS_VERSION for FID request */
- rc = lustre_msg_check_version(msg, LUSTRE_MDS_VERSION);
- if (rc)
- CERROR("bad opc %u version %08x, expecting %08x\n",
- lustre_msg_get_opc(msg),
- lustre_msg_get_version(msg),
- LUSTRE_MDS_VERSION);
- break;
case OST_CREATE:
case OST_DESTROY:
case OST_GETATTR:
req_capsule_set(&req->rq_pill, &RQF_OST_GET_INFO_GENERIC);
rc = ost_get_info(req->rq_export, req);
break;
- case SEQ_QUERY:
- CDEBUG(D_INODE, "seq\n");
- rc = seq_handle(req);
- break;
case OST_QUOTACHECK:
CDEBUG(D_INODE, "quotacheck\n");
req_capsule_set(&req->rq_pill, &RQF_OST_QUOTACHECK);
if (rc)
RETURN(rc);
RETURN(ptlrpc_reply(req));
- case OBD_LOG_CANCEL:
- CDEBUG(D_INODE, "log cancel\n");
- req_capsule_set(&req->rq_pill, &RQF_LOG_CANCEL);
- if (OBD_FAIL_CHECK(OBD_FAIL_OBD_LOG_CANCEL_NET))
- RETURN(0);
- rc = llog_origin_handle_cancel(req);
- if (OBD_FAIL_CHECK(OBD_FAIL_OBD_LOG_CANCEL_REP))
- RETURN(0);
- req->rq_status = rc;
- rc = req_capsule_server_pack(&req->rq_pill);
- if (rc)
- RETURN(rc);
- RETURN(ptlrpc_reply(req));
case LDLM_ENQUEUE:
CDEBUG(D_INODE, "enqueue\n");
req_capsule_set(&req->rq_pill, &RQF_LDLM_ENQUEUE);
.cc_pattern = oss_cpts,
},
.psc_ops = {
- .so_req_handler = ost_handle,
+ .so_req_handler = tgt_request_handle,
.so_req_printer = target_print_req,
.so_hpreq_handler = NULL,
},
GOTO(out_io, rc);
}
- ping_evictor_start();
+#if 0
+ /* Object update service */
+ memset(&svc_conf, 0, sizeof(svc_conf));
+ svc_conf = (typeof(svc_conf)) {
+ .psc_name = "ost_out",
+ .psc_watchdog_factor = OSS_SERVICE_WATCHDOG_FACTOR,
+ .psc_buf = {
+ .bc_nbufs = OST_NBUFS,
+ .bc_buf_size = OUT_BUFSIZE,
+ .bc_req_max_size = OUT_MAXREQSIZE,
+ .bc_rep_max_size = OUT_MAXREPSIZE,
+ .bc_req_portal = OUT_PORTAL,
+ .bc_rep_portal = OSC_REPLY_PORTAL,
+ },
+ /*
+ * We'd like to have a mechanism to set this on a per-device
+ * basis, but alas...
+ */
+ .psc_thr = {
+ .tc_thr_name = "ll_ost_out",
+ .tc_thr_factor = OSS_CR_THR_FACTOR,
+ .tc_nthrs_init = OSS_CR_NTHRS_INIT,
+ .tc_nthrs_base = OSS_CR_NTHRS_BASE,
+ .tc_nthrs_max = OSS_CR_NTHRS_MAX,
+ .tc_nthrs_user = oss_num_create_threads,
+ .tc_cpu_affinity = 1,
+ .tc_ctx_tags = LCT_DT_THREAD,
+ },
+ .psc_cpt = {
+ .cc_pattern = oss_cpts,
+ },
+ .psc_ops = {
+ .so_req_handler = tgt_request_handle,
+ .so_req_printer = target_print_req,
+ .so_hpreq_handler = NULL,
+ },
+ };
+ ost->ost_out_service = ptlrpc_register_service(&svc_conf,
+ obd->obd_proc_entry);
+ if (IS_ERR(ost->ost_out_service)) {
+ rc = PTR_ERR(ost->ost_out_service);
+ CERROR("failed to start out service: %d\n", rc);
+ ost->ost_out_service = NULL;
+ GOTO(out_seq, rc);
+ }
+#endif
+ ping_evictor_start();
- RETURN(0);
+ RETURN(0);
out_io:
ptlrpc_unregister_service(ost->ost_io_service);
ost->ost_io_service = NULL;
ptlrpc_unregister_service(ost->ost_create_service);
ptlrpc_unregister_service(ost->ost_io_service);
ptlrpc_unregister_service(ost->ost_seq_service);
+#if 0
+ ptlrpc_unregister_service(ost->ost_out_service);
+#endif
ost->ost_service = NULL;
ost->ost_create_service = NULL;
ost->ost_io_service = NULL;
ost->ost_seq_service = NULL;
+ ost->ost_out_service = NULL;
mutex_unlock(&ost->ost_health_mutex);