Whamcloud - gitweb
LU-12616 obclass: fix MDS start/stop race
[fs/lustre-release.git] / lustre / ldlm / ldlm_lib.c
index 268f77a..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;
@@ -443,11 +444,11 @@ int client_obd_setup(struct obd_device *obddev, struct lustre_cfg *lcfg)
 
        if (!strcmp(name, LUSTRE_MDC_NAME)) {
                cli->cl_max_rpcs_in_flight = OBD_MAX_RIF_DEFAULT;
-       } else if (totalram_pages >> (20 - PAGE_SHIFT) <= 128 /* MB */) {
+       } else if (cfs_totalram_pages() >> (20 - PAGE_SHIFT) <= 128 /* MB */) {
                cli->cl_max_rpcs_in_flight = 2;
-       } else if (totalram_pages >> (20 - PAGE_SHIFT) <= 256 /* MB */) {
+       } else if (cfs_totalram_pages() >> (20 - PAGE_SHIFT) <= 256 /* MB */) {
                cli->cl_max_rpcs_in_flight = 3;
-       } else if (totalram_pages >> (20 - PAGE_SHIFT) <= 512 /* MB */) {
+       } else if (cfs_totalram_pages() >> (20 - PAGE_SHIFT) <= 512 /* MB */) {
                cli->cl_max_rpcs_in_flight = 4;
        } else {
                if (osc_on_mdt(obddev->obd_name))
@@ -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,
@@ -2144,7 +2147,7 @@ repeat:
 
        while (wait_event_timeout(obd->obd_next_transno_waitq,
                                  check_routine(lut),
-                                 msecs_to_jiffies(60 * MSEC_PER_SEC)) == 0)
+                                 cfs_time_seconds(60)) == 0)
                ; /* wait indefinitely for event, but don't trigger watchdog */
 
        if (obd->obd_abort_recovery) {
@@ -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;
                }