Whamcloud - gitweb
LU-9728 osd: use GFP_HIGHUSER for non-local IO
[fs/lustre-release.git] / lustre / target / tgt_handler.c
index aab362f..d630d85 100644 (file)
@@ -44,6 +44,7 @@
 #include <obd_cksum.h>
 #include <lustre_lfsck.h>
 #include <lustre_nodemap.h>
+#include <lustre_acl.h>
 
 #include "tgt_internal.h"
 
@@ -342,10 +343,13 @@ static int tgt_request_preprocess(struct tgt_session_info *tsi,
 
                dlm_req = req_capsule_client_get(pill, &RMF_DLM_REQ);
                if (dlm_req != NULL) {
+                       union ldlm_wire_policy_data *policy =
+                                       &dlm_req->lock_desc.l_policy_data;
+
                        if (unlikely(dlm_req->lock_desc.l_resource.lr_type ==
                                     LDLM_IBITS &&
-                                    dlm_req->lock_desc.l_policy_data.\
-                                    l_inodebits.bits == 0)) {
+                                    (policy->l_inodebits.bits |
+                                     policy->l_inodebits.try_bits) == 0)) {
                                /*
                                 * Lock without inodebits makes no sense and
                                 * will oops later in ldlm. If client miss to
@@ -425,6 +429,10 @@ static int tgt_handle_request0(struct tgt_session_info *tsi,
                                          RCL_SERVER))
                        req_capsule_set_size(tsi->tsi_pill, &RMF_LOGCOOKIES,
                                             RCL_SERVER, 0);
+               if (req_capsule_has_field(tsi->tsi_pill, &RMF_ACL, RCL_SERVER))
+                       req_capsule_set_size(tsi->tsi_pill,
+                                            &RMF_ACL, RCL_SERVER,
+                                            LUSTRE_POSIX_ACL_MAX_SIZE_OLD);
 
                rc = req_capsule_server_pack(tsi->tsi_pill);
        }
@@ -2178,7 +2186,7 @@ int tgt_brw_write(struct tgt_session_info *tsi)
                RETURN(err_serious(-EPROTO));
 
        if ((remote_nb[0].rnb_flags & OBD_BRW_MEMALLOC) &&
-           (exp->exp_connection->c_peer.nid == exp->exp_connection->c_self))
+           ptlrpc_connection_is_local(exp->exp_connection))
                memory_pressure_set();
 
        req_capsule_set_size(&req->rq_pill, &RMF_RCS, RCL_SERVER,