These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / s390 / scsi / zfcp_erp.c
index acde3f5..3fb4109 100644 (file)
@@ -190,7 +190,7 @@ static struct zfcp_erp_action *zfcp_erp_setup_act(int need, u32 act_status,
                if (!(act_status & ZFCP_STATUS_ERP_NO_REF))
                        if (scsi_device_get(sdev))
                                return NULL;
-               atomic_set_mask(ZFCP_STATUS_COMMON_ERP_INUSE,
+               atomic_or(ZFCP_STATUS_COMMON_ERP_INUSE,
                                &zfcp_sdev->status);
                erp_action = &zfcp_sdev->erp_action;
                memset(erp_action, 0, sizeof(struct zfcp_erp_action));
@@ -206,7 +206,7 @@ static struct zfcp_erp_action *zfcp_erp_setup_act(int need, u32 act_status,
                if (!get_device(&port->dev))
                        return NULL;
                zfcp_erp_action_dismiss_port(port);
-               atomic_set_mask(ZFCP_STATUS_COMMON_ERP_INUSE, &port->status);
+               atomic_or(ZFCP_STATUS_COMMON_ERP_INUSE, &port->status);
                erp_action = &port->erp_action;
                memset(erp_action, 0, sizeof(struct zfcp_erp_action));
                erp_action->port = port;
@@ -217,7 +217,7 @@ static struct zfcp_erp_action *zfcp_erp_setup_act(int need, u32 act_status,
        case ZFCP_ERP_ACTION_REOPEN_ADAPTER:
                kref_get(&adapter->ref);
                zfcp_erp_action_dismiss_adapter(adapter);
-               atomic_set_mask(ZFCP_STATUS_COMMON_ERP_INUSE, &adapter->status);
+               atomic_or(ZFCP_STATUS_COMMON_ERP_INUSE, &adapter->status);
                erp_action = &adapter->erp_action;
                memset(erp_action, 0, sizeof(struct zfcp_erp_action));
                if (!(atomic_read(&adapter->status) &
@@ -254,7 +254,7 @@ static int zfcp_erp_action_enqueue(int want, struct zfcp_adapter *adapter,
        act = zfcp_erp_setup_act(need, act_status, adapter, port, sdev);
        if (!act)
                goto out;
-       atomic_set_mask(ZFCP_STATUS_ADAPTER_ERP_PENDING, &adapter->status);
+       atomic_or(ZFCP_STATUS_ADAPTER_ERP_PENDING, &adapter->status);
        ++adapter->erp_total_count;
        list_add_tail(&act->list, &adapter->erp_ready_head);
        wake_up(&adapter->erp_ready_wq);
@@ -486,14 +486,14 @@ static void zfcp_erp_adapter_unblock(struct zfcp_adapter *adapter)
 {
        if (status_change_set(ZFCP_STATUS_COMMON_UNBLOCKED, &adapter->status))
                zfcp_dbf_rec_run("eraubl1", &adapter->erp_action);
-       atomic_set_mask(ZFCP_STATUS_COMMON_UNBLOCKED, &adapter->status);
+       atomic_or(ZFCP_STATUS_COMMON_UNBLOCKED, &adapter->status);
 }
 
 static void zfcp_erp_port_unblock(struct zfcp_port *port)
 {
        if (status_change_set(ZFCP_STATUS_COMMON_UNBLOCKED, &port->status))
                zfcp_dbf_rec_run("erpubl1", &port->erp_action);
-       atomic_set_mask(ZFCP_STATUS_COMMON_UNBLOCKED, &port->status);
+       atomic_or(ZFCP_STATUS_COMMON_UNBLOCKED, &port->status);
 }
 
 static void zfcp_erp_lun_unblock(struct scsi_device *sdev)
@@ -502,7 +502,7 @@ static void zfcp_erp_lun_unblock(struct scsi_device *sdev)
 
        if (status_change_set(ZFCP_STATUS_COMMON_UNBLOCKED, &zfcp_sdev->status))
                zfcp_dbf_rec_run("erlubl1", &sdev_to_zfcp(sdev)->erp_action);
-       atomic_set_mask(ZFCP_STATUS_COMMON_UNBLOCKED, &zfcp_sdev->status);
+       atomic_or(ZFCP_STATUS_COMMON_UNBLOCKED, &zfcp_sdev->status);
 }
 
 static void zfcp_erp_action_to_running(struct zfcp_erp_action *erp_action)
@@ -642,7 +642,7 @@ static void zfcp_erp_wakeup(struct zfcp_adapter *adapter)
        read_lock_irqsave(&adapter->erp_lock, flags);
        if (list_empty(&adapter->erp_ready_head) &&
            list_empty(&adapter->erp_running_head)) {
-                       atomic_clear_mask(ZFCP_STATUS_ADAPTER_ERP_PENDING,
+                       atomic_andnot(ZFCP_STATUS_ADAPTER_ERP_PENDING,
                                          &adapter->status);
                        wake_up(&adapter->erp_done_wqh);
        }
@@ -665,16 +665,16 @@ static int zfcp_erp_adapter_strat_fsf_xconf(struct zfcp_erp_action *erp_action)
        int sleep = 1;
        struct zfcp_adapter *adapter = erp_action->adapter;
 
-       atomic_clear_mask(ZFCP_STATUS_ADAPTER_XCONFIG_OK, &adapter->status);
+       atomic_andnot(ZFCP_STATUS_ADAPTER_XCONFIG_OK, &adapter->status);
 
        for (retries = 7; retries; retries--) {
-               atomic_clear_mask(ZFCP_STATUS_ADAPTER_HOST_CON_INIT,
+               atomic_andnot(ZFCP_STATUS_ADAPTER_HOST_CON_INIT,
                                  &adapter->status);
                write_lock_irq(&adapter->erp_lock);
                zfcp_erp_action_to_running(erp_action);
                write_unlock_irq(&adapter->erp_lock);
                if (zfcp_fsf_exchange_config_data(erp_action)) {
-                       atomic_clear_mask(ZFCP_STATUS_ADAPTER_HOST_CON_INIT,
+                       atomic_andnot(ZFCP_STATUS_ADAPTER_HOST_CON_INIT,
                                          &adapter->status);
                        return ZFCP_ERP_FAILED;
                }
@@ -692,7 +692,7 @@ static int zfcp_erp_adapter_strat_fsf_xconf(struct zfcp_erp_action *erp_action)
                sleep *= 2;
        }
 
-       atomic_clear_mask(ZFCP_STATUS_ADAPTER_HOST_CON_INIT,
+       atomic_andnot(ZFCP_STATUS_ADAPTER_HOST_CON_INIT,
                          &adapter->status);
 
        if (!(atomic_read(&adapter->status) & ZFCP_STATUS_ADAPTER_XCONFIG_OK))
@@ -764,7 +764,7 @@ static void zfcp_erp_adapter_strategy_close(struct zfcp_erp_action *act)
        /* all ports and LUNs are closed */
        zfcp_erp_clear_adapter_status(adapter, ZFCP_STATUS_COMMON_OPEN);
 
-       atomic_clear_mask(ZFCP_STATUS_ADAPTER_XCONFIG_OK |
+       atomic_andnot(ZFCP_STATUS_ADAPTER_XCONFIG_OK |
                          ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED, &adapter->status);
 }
 
@@ -773,7 +773,7 @@ static int zfcp_erp_adapter_strategy_open(struct zfcp_erp_action *act)
        struct zfcp_adapter *adapter = act->adapter;
 
        if (zfcp_qdio_open(adapter->qdio)) {
-               atomic_clear_mask(ZFCP_STATUS_ADAPTER_XCONFIG_OK |
+               atomic_andnot(ZFCP_STATUS_ADAPTER_XCONFIG_OK |
                                  ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED,
                                  &adapter->status);
                return ZFCP_ERP_FAILED;
@@ -784,7 +784,7 @@ static int zfcp_erp_adapter_strategy_open(struct zfcp_erp_action *act)
                return ZFCP_ERP_FAILED;
        }
 
-       atomic_set_mask(ZFCP_STATUS_COMMON_OPEN, &adapter->status);
+       atomic_or(ZFCP_STATUS_COMMON_OPEN, &adapter->status);
 
        return ZFCP_ERP_SUCCEEDED;
 }
@@ -948,7 +948,7 @@ static void zfcp_erp_lun_strategy_clearstati(struct scsi_device *sdev)
 {
        struct zfcp_scsi_dev *zfcp_sdev = sdev_to_zfcp(sdev);
 
-       atomic_clear_mask(ZFCP_STATUS_COMMON_ACCESS_DENIED,
+       atomic_andnot(ZFCP_STATUS_COMMON_ACCESS_DENIED,
                          &zfcp_sdev->status);
 }
 
@@ -1187,18 +1187,18 @@ static void zfcp_erp_action_dequeue(struct zfcp_erp_action *erp_action)
        switch (erp_action->action) {
        case ZFCP_ERP_ACTION_REOPEN_LUN:
                zfcp_sdev = sdev_to_zfcp(erp_action->sdev);
-               atomic_clear_mask(ZFCP_STATUS_COMMON_ERP_INUSE,
+               atomic_andnot(ZFCP_STATUS_COMMON_ERP_INUSE,
                                  &zfcp_sdev->status);
                break;
 
        case ZFCP_ERP_ACTION_REOPEN_PORT_FORCED:
        case ZFCP_ERP_ACTION_REOPEN_PORT:
-               atomic_clear_mask(ZFCP_STATUS_COMMON_ERP_INUSE,
+               atomic_andnot(ZFCP_STATUS_COMMON_ERP_INUSE,
                                  &erp_action->port->status);
                break;
 
        case ZFCP_ERP_ACTION_REOPEN_ADAPTER:
-               atomic_clear_mask(ZFCP_STATUS_COMMON_ERP_INUSE,
+               atomic_andnot(ZFCP_STATUS_COMMON_ERP_INUSE,
                                  &erp_action->adapter->status);
                break;
        }
@@ -1422,19 +1422,19 @@ void zfcp_erp_set_adapter_status(struct zfcp_adapter *adapter, u32 mask)
        unsigned long flags;
        u32 common_mask = mask & ZFCP_COMMON_FLAGS;
 
-       atomic_set_mask(mask, &adapter->status);
+       atomic_or(mask, &adapter->status);
 
        if (!common_mask)
                return;
 
        read_lock_irqsave(&adapter->port_list_lock, flags);
        list_for_each_entry(port, &adapter->port_list, list)
-               atomic_set_mask(common_mask, &port->status);
+               atomic_or(common_mask, &port->status);
        read_unlock_irqrestore(&adapter->port_list_lock, flags);
 
        spin_lock_irqsave(adapter->scsi_host->host_lock, flags);
        __shost_for_each_device(sdev, adapter->scsi_host)
-               atomic_set_mask(common_mask, &sdev_to_zfcp(sdev)->status);
+               atomic_or(common_mask, &sdev_to_zfcp(sdev)->status);
        spin_unlock_irqrestore(adapter->scsi_host->host_lock, flags);
 }
 
@@ -1453,7 +1453,7 @@ void zfcp_erp_clear_adapter_status(struct zfcp_adapter *adapter, u32 mask)
        u32 common_mask = mask & ZFCP_COMMON_FLAGS;
        u32 clear_counter = mask & ZFCP_STATUS_COMMON_ERP_FAILED;
 
-       atomic_clear_mask(mask, &adapter->status);
+       atomic_andnot(mask, &adapter->status);
 
        if (!common_mask)
                return;
@@ -1463,7 +1463,7 @@ void zfcp_erp_clear_adapter_status(struct zfcp_adapter *adapter, u32 mask)
 
        read_lock_irqsave(&adapter->port_list_lock, flags);
        list_for_each_entry(port, &adapter->port_list, list) {
-               atomic_clear_mask(common_mask, &port->status);
+               atomic_andnot(common_mask, &port->status);
                if (clear_counter)
                        atomic_set(&port->erp_counter, 0);
        }
@@ -1471,7 +1471,7 @@ void zfcp_erp_clear_adapter_status(struct zfcp_adapter *adapter, u32 mask)
 
        spin_lock_irqsave(adapter->scsi_host->host_lock, flags);
        __shost_for_each_device(sdev, adapter->scsi_host) {
-               atomic_clear_mask(common_mask, &sdev_to_zfcp(sdev)->status);
+               atomic_andnot(common_mask, &sdev_to_zfcp(sdev)->status);
                if (clear_counter)
                        atomic_set(&sdev_to_zfcp(sdev)->erp_counter, 0);
        }
@@ -1491,7 +1491,7 @@ void zfcp_erp_set_port_status(struct zfcp_port *port, u32 mask)
        u32 common_mask = mask & ZFCP_COMMON_FLAGS;
        unsigned long flags;
 
-       atomic_set_mask(mask, &port->status);
+       atomic_or(mask, &port->status);
 
        if (!common_mask)
                return;
@@ -1499,7 +1499,7 @@ void zfcp_erp_set_port_status(struct zfcp_port *port, u32 mask)
        spin_lock_irqsave(port->adapter->scsi_host->host_lock, flags);
        __shost_for_each_device(sdev, port->adapter->scsi_host)
                if (sdev_to_zfcp(sdev)->port == port)
-                       atomic_set_mask(common_mask,
+                       atomic_or(common_mask,
                                        &sdev_to_zfcp(sdev)->status);
        spin_unlock_irqrestore(port->adapter->scsi_host->host_lock, flags);
 }
@@ -1518,7 +1518,7 @@ void zfcp_erp_clear_port_status(struct zfcp_port *port, u32 mask)
        u32 clear_counter = mask & ZFCP_STATUS_COMMON_ERP_FAILED;
        unsigned long flags;
 
-       atomic_clear_mask(mask, &port->status);
+       atomic_andnot(mask, &port->status);
 
        if (!common_mask)
                return;
@@ -1529,7 +1529,7 @@ void zfcp_erp_clear_port_status(struct zfcp_port *port, u32 mask)
        spin_lock_irqsave(port->adapter->scsi_host->host_lock, flags);
        __shost_for_each_device(sdev, port->adapter->scsi_host)
                if (sdev_to_zfcp(sdev)->port == port) {
-                       atomic_clear_mask(common_mask,
+                       atomic_andnot(common_mask,
                                          &sdev_to_zfcp(sdev)->status);
                        if (clear_counter)
                                atomic_set(&sdev_to_zfcp(sdev)->erp_counter, 0);
@@ -1546,7 +1546,7 @@ void zfcp_erp_set_lun_status(struct scsi_device *sdev, u32 mask)
 {
        struct zfcp_scsi_dev *zfcp_sdev = sdev_to_zfcp(sdev);
 
-       atomic_set_mask(mask, &zfcp_sdev->status);
+       atomic_or(mask, &zfcp_sdev->status);
 }
 
 /**
@@ -1558,7 +1558,7 @@ void zfcp_erp_clear_lun_status(struct scsi_device *sdev, u32 mask)
 {
        struct zfcp_scsi_dev *zfcp_sdev = sdev_to_zfcp(sdev);
 
-       atomic_clear_mask(mask, &zfcp_sdev->status);
+       atomic_andnot(mask, &zfcp_sdev->status);
 
        if (mask & ZFCP_STATUS_COMMON_ERP_FAILED)
                atomic_set(&zfcp_sdev->erp_counter, 0);