Whamcloud - gitweb
LU-5773 test: reduce thread count
[fs/lustre-release.git] / lustre / target / tgt_handler.c
index de964ff..b96d89f 100644 (file)
@@ -39,6 +39,7 @@
 #include <obd_cksum.h>
 #include <md_object.h>
 #include <lustre_lfsck.h>
+#include <lustre_nodemap.h>
 
 #include "tgt_internal.h"
 
@@ -242,6 +243,7 @@ static int tgt_ost_body_unpack(struct tgt_session_info *tsi, __u32 flags)
        struct ost_body         *body;
        struct req_capsule      *pill = tsi->tsi_pill;
        struct lustre_capa      *capa;
+       struct lu_nodemap       *nodemap;
        int                      rc;
 
        ENTRY;
@@ -254,6 +256,15 @@ static int tgt_ost_body_unpack(struct tgt_session_info *tsi, __u32 flags)
        if (rc)
                RETURN(rc);
 
+       nodemap = tsi->tsi_exp->exp_target_data.ted_nodemap;
+
+       body->oa.o_uid = nodemap_map_id(nodemap, NODEMAP_UID,
+                                       NODEMAP_CLIENT_TO_FS,
+                                       body->oa.o_uid);
+       body->oa.o_gid = nodemap_map_id(nodemap, NODEMAP_GID,
+                                       NODEMAP_CLIENT_TO_FS,
+                                       body->oa.o_gid);
+
        if (body->oa.o_valid & OBD_MD_FLOSSCAPA) {
                capa = req_capsule_client_get(pill, &RMF_CAPA1);
                if (capa == NULL) {
@@ -464,6 +475,7 @@ static int tgt_filter_recovery_request(struct ptlrpc_request *req,
        case OUT_UPDATE:
        case SEQ_QUERY:
        case FLD_QUERY:
+       case FLD_READ:
        case LDLM_ENQUEUE:
        case OST_CREATE:
        case OST_DESTROY:
@@ -487,7 +499,7 @@ static int tgt_filter_recovery_request(struct ptlrpc_request *req,
  *       -ve: abort immediately with the given error code;
  *         0: send reply with error code in req->rq_status;
  */
-int tgt_handle_recovery(struct ptlrpc_request *req, int reply_fail_id)
+static int tgt_handle_recovery(struct ptlrpc_request *req, int reply_fail_id)
 {
        ENTRY;
 
@@ -1034,7 +1046,7 @@ EXPORT_SYMBOL(tgt_sendpage);
 /*
  * OBD_IDX_READ handler
  */
-int tgt_obd_idx_read(struct tgt_session_info *tsi)
+static int tgt_obd_idx_read(struct tgt_session_info *tsi)
 {
        struct tgt_thread_info  *tti = tgt_th_info(tsi->tsi_env);
        struct lu_rdpg          *rdpg = &tti->tti_u.rdpg.tti_rdpg;
@@ -1149,8 +1161,8 @@ EXPORT_SYMBOL(tgt_sync);
 
 /* Ensure that data and metadata are synced to the disk when lock is cancelled
  * (if requested) */
-int tgt_blocking_ast(struct ldlm_lock *lock, struct ldlm_lock_desc *desc,
-                    void *data, int flag)
+static int tgt_blocking_ast(struct ldlm_lock *lock, struct ldlm_lock_desc *desc,
+                           void *data, int flag)
 {
        struct lu_env            env;
        struct lu_target        *tgt;
@@ -1206,7 +1218,7 @@ err_env:
        RETURN(rc);
 }
 
-struct ldlm_callback_suite tgt_dlm_cbs = {
+static struct ldlm_callback_suite tgt_dlm_cbs = {
        .lcs_completion = ldlm_server_completion_ast,
        .lcs_blocking   = tgt_blocking_ast,
        .lcs_glimpse    = ldlm_server_glimpse_ast
@@ -1359,7 +1371,7 @@ EXPORT_SYMBOL(tgt_llog_handlers);
  * sec context handlers
  */
 /* XXX: Implement based on mdt_sec_ctx_handle()? */
-int tgt_sec_ctx_handle(struct tgt_session_info *tsi)
+static int tgt_sec_ctx_handle(struct tgt_session_info *tsi)
 {
        return 0;
 }
@@ -1373,11 +1385,13 @@ EXPORT_SYMBOL(tgt_sec_ctx_handlers);
 
 int (*tgt_lfsck_in_notify)(const struct lu_env *env,
                           struct dt_device *key,
-                          struct lfsck_request *lr) = NULL;
+                          struct lfsck_request *lr,
+                          struct thandle *th) = NULL;
 
 void tgt_register_lfsck_in_notify(int (*notify)(const struct lu_env *,
                                                struct dt_device *,
-                                               struct lfsck_request *))
+                                               struct lfsck_request *,
+                                               struct thandle *))
 {
        tgt_lfsck_in_notify = notify;
 }
@@ -1408,7 +1422,7 @@ static int tgt_handle_lfsck_notify(struct tgt_session_info *tsi)
        if (lr == NULL)
                RETURN(-EPROTO);
 
-       rc = tgt_lfsck_in_notify(env, key, lr);
+       rc = tgt_lfsck_in_notify(env, key, lr, NULL);
 
        RETURN(rc);
 }
@@ -1417,7 +1431,7 @@ static int tgt_handle_lfsck_query(struct tgt_session_info *tsi)
 {
        struct lfsck_request    *request;
        struct lfsck_reply      *reply;
-       int                      rc      = 0;
+       int                      rc;
        ENTRY;
 
        request = req_capsule_client_get(tsi->tsi_pill, &RMF_LFSCK_REQUEST);
@@ -1428,12 +1442,10 @@ static int tgt_handle_lfsck_query(struct tgt_session_info *tsi)
        if (reply == NULL)
                RETURN(-ENOMEM);
 
-       reply->lr_status = tgt_lfsck_query(tsi->tsi_env,
-                                          tsi->tsi_tgt->lut_bottom, request);
-       if (reply->lr_status < 0)
-               rc = reply->lr_status;
+       rc = tgt_lfsck_query(tsi->tsi_env, tsi->tsi_tgt->lut_bottom, request);
+       reply->lr_status = rc;
 
-       RETURN(rc);
+       RETURN(rc < 0 ? rc : 0);
 }
 
 struct tgt_handler tgt_lfsck_handlers[] = {
@@ -1542,15 +1554,16 @@ int tgt_brw_lock(struct ldlm_namespace *ns, struct ldlm_res_id *res_id,
        LASSERT(mode == LCK_PR || mode == LCK_PW);
        LASSERT(!lustre_handle_is_used(lh));
 
-       if (nrbufs == 0 || !(nb[0].flags & OBD_BRW_SRVLOCK))
+       if (nrbufs == 0 || !(nb[0].rnb_flags & OBD_BRW_SRVLOCK))
                RETURN(0);
 
        for (i = 1; i < nrbufs; i++)
-               if (!(nb[i].flags & OBD_BRW_SRVLOCK))
+               if (!(nb[i].rnb_flags & OBD_BRW_SRVLOCK))
                        RETURN(-EFAULT);
 
-       RETURN(tgt_extent_lock(ns, res_id, nb[0].offset,
-                              nb[nrbufs - 1].offset + nb[nrbufs - 1].len - 1,
+       RETURN(tgt_extent_lock(ns, res_id, nb[0].rnb_offset,
+                              nb[nrbufs - 1].rnb_offset +
+                              nb[nrbufs - 1].rnb_len - 1,
                               lh, mode, &flags));
 }
 EXPORT_SYMBOL(tgt_brw_lock);
@@ -1561,8 +1574,10 @@ void tgt_brw_unlock(struct obd_ioobj *obj, struct niobuf_remote *niob,
        ENTRY;
 
        LASSERT(mode == LCK_PR || mode == LCK_PW);
-       LASSERT((obj->ioo_bufcnt > 0 && (niob[0].flags & OBD_BRW_SRVLOCK)) ==
+       LASSERT((obj->ioo_bufcnt > 0 &&
+                (niob[0].rnb_flags & OBD_BRW_SRVLOCK)) ==
                lustre_handle_is_used(lh));
+
        if (lustre_handle_is_used(lh))
                tgt_extent_unlock(lh, mode);
        EXIT;
@@ -1653,8 +1668,7 @@ int tgt_brw_read(struct tgt_session_info *tsi)
        struct ost_body         *body, *repbody;
        struct l_wait_info       lwi;
        struct lustre_handle     lockh = { 0 };
-       int                      niocount, npages, nob = 0, rc, i;
-       int                      no_reply = 0;
+       int                      npages, nob = 0, rc, i, no_reply = 0;
        struct tgt_thread_big_cache *tbc = req->rq_svc_thread->t_data;
 
        ENTRY;
@@ -1697,7 +1711,6 @@ int tgt_brw_read(struct tgt_session_info *tsi)
        ioo = req_capsule_client_get(tsi->tsi_pill, &RMF_OBD_IOOBJ);
        LASSERT(ioo != NULL); /* must exists after tgt_ost_body_unpack */
 
-       niocount = ioo->ioo_bufcnt;
        remote_nb = req_capsule_client_get(&req->rq_pill, &RMF_NIOBUF_REMOTE);
        LASSERT(remote_nb != NULL); /* must exists after tgt_ost_body_unpack */
 
@@ -1945,7 +1958,7 @@ int tgt_brw_write(struct tgt_session_info *tsi)
                        sizeof(*remote_nb))
                RETURN(err_serious(-EPROTO));
 
-       if ((remote_nb[0].flags & OBD_BRW_MEMALLOC) &&
+       if ((remote_nb[0].rnb_flags & OBD_BRW_MEMALLOC) &&
            (exp->exp_connection->c_peer.nid == exp->exp_connection->c_self))
                memory_pressure_set();
 
@@ -2071,7 +2084,7 @@ skip_transfer:
 
                /* set per-requested niobuf return codes */
                for (i = j = 0; i < niocount; i++) {
-                       int len = remote_nb[i].len;
+                       int len = remote_nb[i].rnb_len;
 
                        nob += len;
                        rcs[i] = 0;