X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fost%2Fost_handler.c;h=197381b1d93efc28b5b6feb37cd8b8f17c20bdb2;hb=8ca651d636c37339cc50bffa4532b7cbd0ead570;hp=cbe543b54e76887a6eb620c216e921ad1f72d045;hpb=c9590221dc43dd5e7a7ede389f0a7d9cf566e5bf;p=fs%2Flustre-release.git diff --git a/lustre/ost/ost_handler.c b/lustre/ost/ost_handler.c index cbe543b..197381b 100644 --- a/lustre/ost/ost_handler.c +++ b/lustre/ost/ost_handler.c @@ -98,8 +98,8 @@ static int ost_validate_obdo(struct obd_export *exp, struct obdo *oa, if (ioobj) ioobj->ioo_seq = FID_SEQ_OST_MDT0; /* remove fid_seq_is_rsvd() after FID-on-OST allows SEQ > 9 */ - } else if (oa == NULL || - !(fid_seq_is_rsvd(oa->o_seq) || fid_seq_is_idif(oa->o_seq))) { + } else if (oa == NULL || !(fid_seq_is_rsvd(oa->o_seq) || + fid_seq_is_mdt0(oa->o_seq))) { CERROR("%s: client %s sent invalid object "POSTID"\n", exp->exp_obd->obd_name, obd_export_nid2str(exp), oa ? oa->o_id : -1, oa ? oa->o_seq : -1); @@ -818,12 +818,11 @@ out: } else { /* reply out callback would free */ ptlrpc_req_drop_rs(req); - CWARN("%s: ignoring bulk IO comm error with %s@%s id %s - " - "client will retry\n", - exp->exp_obd->obd_name, - exp->exp_client_uuid.uuid, - exp->exp_connection->c_remote_uuid.uuid, - libcfs_id2str(req->rq_peer)); + LCONSOLE_WARN("%s: Bulk IO read error with %s (at %s), " + "client will retry: rc %d\n", + exp->exp_obd->obd_name, + obd_uuid2str(&exp->exp_client_uuid), + obd_export_nid2str(exp), rc); } /* send a bulk after reply to simulate a network delay or reordering * by a router */ @@ -998,7 +997,7 @@ static int ost_brw_write(struct ptlrpc_request *req, struct obd_trans_info *oti) no_reply = rc != 0; skip_transfer: - if (unlikely(client_cksum != 0 && rc == 0)) { + if (client_cksum != 0 && rc == 0) { static int cksum_counter; repbody->oa.o_valid |= OBD_MD_FLCKSUM | OBD_MD_FLFLAGS; repbody->oa.o_flags &= ~OBD_FL_CKSUM_ALL; @@ -1039,7 +1038,7 @@ skip_transfer: */ repbody->oa.o_valid &= ~(OBD_MD_FLMTIME | OBD_MD_FLATIME); - if (unlikely(client_cksum != server_cksum && rc == 0 && !mmap)) { + if (unlikely(client_cksum != server_cksum && rc == 0 && !mmap)) { int new_cksum = ost_checksum_bulk(desc, OST_WRITE, cksum_type); char *msg; char *via; @@ -1124,12 +1123,11 @@ out: } else { /* reply out callback would free */ ptlrpc_req_drop_rs(req); - CWARN("%s: ignoring bulk IO comm error with %s@%s id %s - " - "client will retry\n", - exp->exp_obd->obd_name, - exp->exp_client_uuid.uuid, - exp->exp_connection->c_remote_uuid.uuid, - libcfs_id2str(req->rq_peer)); + LCONSOLE_WARN("%s: Bulk IO write error with %s (at %s), " + "client will retry: rc %d\n", + exp->exp_obd->obd_name, + obd_uuid2str(&exp->exp_client_uuid), + obd_export_nid2str(exp), rc); } cfs_memory_pressure_clr(); RETURN(rc); @@ -1584,7 +1582,7 @@ static int ost_filter_recovery_request(struct ptlrpc_request *req, RETURN(0); default: - DEBUG_REQ(D_ERROR, req, "not permitted during recovery"); + DEBUG_REQ(D_WARNING, req, "not permitted during recovery"); *process = -EAGAIN; RETURN(0); } @@ -2061,6 +2059,12 @@ int ost_handle(struct ptlrpc_request *req) struct obd_device *obd = NULL; ENTRY; + /* OST module is kept between remounts, but the last reference + * to specific module (say, osd or ofd) kills all related keys + * from the environment. so we have to refill it until the root + * cause is fixed properly */ + lu_env_refill(req->rq_svc_thread->t_env); + LASSERT(current->journal_info == NULL); /* primordial rpcs don't affect server recovery */ @@ -2396,7 +2400,7 @@ static int ost_setup(struct obd_device *obd, struct lustre_cfg* lcfg) lprocfs_ost_init_vars(&lvars); lprocfs_obd_setup(obd, lvars.obd_vars); - cfs_sema_init(&ost->ost_health_sem, 1); + cfs_mutex_init(&ost->ost_health_mutex); if (oss_num_threads) { /* If oss_num_threads is set, it is the min and the max. */ @@ -2513,13 +2517,13 @@ static int ost_cleanup(struct obd_device *obd) /* there is no recovery for OST OBD, all recovery is controlled by * obdfilter OBD */ LASSERT(obd->obd_recovering == 0); - cfs_down(&ost->ost_health_sem); + cfs_mutex_lock(&ost->ost_health_mutex); ptlrpc_unregister_service(ost->ost_service); ptlrpc_unregister_service(ost->ost_create_service); ptlrpc_unregister_service(ost->ost_io_service); ost->ost_service = NULL; ost->ost_create_service = NULL; - cfs_up(&ost->ost_health_sem); + cfs_mutex_unlock(&ost->ost_health_mutex); lprocfs_obd_cleanup(obd); @@ -2531,11 +2535,11 @@ static int ost_health_check(struct obd_device *obd) struct ost_obd *ost = &obd->u.ost; int rc = 0; - cfs_down(&ost->ost_health_sem); + cfs_mutex_lock(&ost->ost_health_mutex); rc |= ptlrpc_service_health_check(ost->ost_service); rc |= ptlrpc_service_health_check(ost->ost_create_service); rc |= ptlrpc_service_health_check(ost->ost_io_service); - cfs_up(&ost->ost_health_sem); + cfs_mutex_unlock(&ost->ost_health_mutex); /* * health_check to return 0 on healthy