X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;ds=sidebyside;f=lustre%2Fost%2Fost_handler.c;h=405d69cbdbbbbaba86da89d8835f0eeac8ac9276;hb=7eb9b5de99d4205fc4e83549728df8a53176ca70;hp=fc7d74d08b7802ba418400be49a1f8d0672a0edd;hpb=1b2547843817b4b7adbeb87ea9b070d9cac35c90;p=fs%2Flustre-release.git diff --git a/lustre/ost/ost_handler.c b/lustre/ost/ost_handler.c index fc7d74d..405d69c 100644 --- a/lustre/ost/ost_handler.c +++ b/lustre/ost/ost_handler.c @@ -1348,8 +1348,10 @@ static int lock_region(struct obd_export *exp, struct obdo *oa, 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); @@ -1817,15 +1819,6 @@ int ost_msg_check_version(struct lustre_msg *msg) 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: @@ -2461,10 +2454,6 @@ int ost_handle(struct ptlrpc_request *req) 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); @@ -2494,19 +2483,6 @@ int ost_handle(struct ptlrpc_request *req) 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); @@ -2797,7 +2773,7 @@ static int ost_setup(struct obd_device *obd, struct lustre_cfg* lcfg) .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, }, @@ -2811,9 +2787,55 @@ static int ost_setup(struct obd_device *obd, struct lustre_cfg* lcfg) 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; @@ -2844,10 +2866,14 @@ static int ost_cleanup(struct obd_device *obd) 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);