Whamcloud - gitweb
LU-12616 obclass: fix MDS start/stop race
[fs/lustre-release.git] / lustre / ldlm / ldlm_lib.c
index 0a29250..ddc3715 100644 (file)
@@ -90,9 +90,8 @@ static int import_set_conn(struct obd_import *imp, struct obd_uuid *uuid,
        list_for_each_entry(item, &imp->imp_conn_list, oic_item) {
                if (obd_uuid_equals(uuid, &item->oic_uuid)) {
                        if (priority) {
-                               list_del(&item->oic_item);
-                               list_add(&item->oic_item,
-                                        &imp->imp_conn_list);
+                               list_move(&item->oic_item,
+                                         &imp->imp_conn_list);
                                item->oic_last_attempt = 0;
                        }
                        CDEBUG(D_HA, "imp %p@%s: found existing conn %s%s\n",
@@ -414,7 +413,9 @@ int client_obd_setup(struct obd_device *obddev, struct lustre_cfg *lcfg)
        init_waitqueue_head(&cli->cl_destroy_waitq);
        atomic_set(&cli->cl_destroy_in_flight, 0);
 
+
        cli->cl_supp_cksum_types = OBD_CKSUM_CRC32;
+       cli->cl_preferred_cksum_type = 0;
 #ifdef ENABLE_CHECKSUM
        /* Turn on checksumming by default. */
        cli->cl_checksum = 1;
@@ -1086,6 +1087,8 @@ int target_handle_connect(struct ptlrpc_request *req)
 
        size = req_capsule_get_size(&req->rq_pill, &RMF_CONNECT_DATA,
                                    RCL_CLIENT);
+       if (size < 0 || size > 8 * sizeof(struct obd_connect_data))
+               GOTO(out, rc = -EPROTO);
        data = req_capsule_client_get(&req->rq_pill, &RMF_CONNECT_DATA);
        if (!data)
                GOTO(out, rc = -EPROTO);
@@ -1798,7 +1801,7 @@ static void target_start_recovery_timer(struct obd_device *obd)
        obd->obd_recovery_start = ktime_get_real_seconds();
        spin_unlock(&obd->obd_dev_lock);
 
-       LCONSOLE_WARN("%s: Will be in recovery for at least %llu:%02llu, or until %d client%s reconnect%s\n",
+       LCONSOLE_WARN("%s: Will be in recovery for at least %lu:%02lu, or until %d client%s reconnect%s\n",
                      obd->obd_name,
                      obd->obd_recovery_timeout / 60,
                      obd->obd_recovery_timeout % 60,
@@ -2324,7 +2327,7 @@ static int check_for_recovery_ready(struct lu_target *lut)
                        extend_recovery_timer(obd, obd->obd_recovery_timeout,
                                              true);
                        CDEBUG(D_HA,
-                              "%s update recovery is not ready, extend recovery %llu\n",
+                              "%s update recovery is not ready, extend recovery %lu\n",
                               obd->obd_name, obd->obd_recovery_timeout);
                        return 0;
                }