Sequence Number api provides interfaces for unsigned atomic up counters leveraging atomic_t and atomic64_t ops underneath. Convert it to use seqnum_ops. atomic_t variable used for error_count are atomic counters. Convert it to use seqnum_ops. Signed-off-by: Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx> --- .../staging/unisys/visorhba/visorhba_main.c | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/drivers/staging/unisys/visorhba/visorhba_main.c b/drivers/staging/unisys/visorhba/visorhba_main.c index 7ae5306b92fe..7837eca83758 100644 --- a/drivers/staging/unisys/visorhba/visorhba_main.c +++ b/drivers/staging/unisys/visorhba/visorhba_main.c @@ -10,6 +10,7 @@ #include <linux/module.h> #include <linux/seq_file.h> #include <linux/visorbus.h> +#include <linux/seqnum_ops.h> #include <scsi/scsi.h> #include <scsi/scsi_host.h> #include <scsi/scsi_cmnd.h> @@ -42,7 +43,7 @@ struct visordisk_info { struct scsi_device *sdev; u32 valid; atomic_t ios_threshold; - atomic_t error_count; + struct seqnum32 error_count; struct visordisk_info *next; }; @@ -374,8 +375,8 @@ static int visorhba_abort_handler(struct scsi_cmnd *scsicmd) scsidev = scsicmd->device; vdisk = scsidev->hostdata; - if (atomic_read(&vdisk->error_count) < VISORHBA_ERROR_COUNT) - atomic_inc(&vdisk->error_count); + if (seqnum32_fetch(&vdisk->error_count) < VISORHBA_ERROR_COUNT) + seqnum32_inc_return(&vdisk->error_count); else atomic_set(&vdisk->ios_threshold, IOS_ERROR_THRESHOLD); rtn = forward_taskmgmt_command(TASK_MGMT_ABORT_TASK, scsidev); @@ -401,8 +402,8 @@ static int visorhba_device_reset_handler(struct scsi_cmnd *scsicmd) scsidev = scsicmd->device; vdisk = scsidev->hostdata; - if (atomic_read(&vdisk->error_count) < VISORHBA_ERROR_COUNT) - atomic_inc(&vdisk->error_count); + if (seqnum32_fetch(&vdisk->error_count) < VISORHBA_ERROR_COUNT) + seqnum32_inc_return(&vdisk->error_count); else atomic_set(&vdisk->ios_threshold, IOS_ERROR_THRESHOLD); rtn = forward_taskmgmt_command(TASK_MGMT_LUN_RESET, scsidev); @@ -429,8 +430,8 @@ static int visorhba_bus_reset_handler(struct scsi_cmnd *scsicmd) scsidev = scsicmd->device; shost_for_each_device(scsidev, scsidev->host) { vdisk = scsidev->hostdata; - if (atomic_read(&vdisk->error_count) < VISORHBA_ERROR_COUNT) - atomic_inc(&vdisk->error_count); + if (seqnum32_fetch(&vdisk->error_count) < VISORHBA_ERROR_COUNT) + seqnum32_inc_return(&vdisk->error_count); else atomic_set(&vdisk->ios_threshold, IOS_ERROR_THRESHOLD); } @@ -803,8 +804,8 @@ static void do_scsi_linuxstat(struct uiscmdrsp *cmdrsp, return; /* Okay see what our error_count is here.... */ vdisk = scsidev->hostdata; - if (atomic_read(&vdisk->error_count) < VISORHBA_ERROR_COUNT) { - atomic_inc(&vdisk->error_count); + if (seqnum32_fetch(&vdisk->error_count) < VISORHBA_ERROR_COUNT) { + seqnum32_inc_return(&vdisk->error_count); atomic_set(&vdisk->ios_threshold, IOS_ERROR_THRESHOLD); } } @@ -884,7 +885,7 @@ static void do_scsi_nolinuxstat(struct uiscmdrsp *cmdrsp, if (atomic_read(&vdisk->ios_threshold) > 0) { atomic_dec(&vdisk->ios_threshold); if (atomic_read(&vdisk->ios_threshold) == 0) - atomic_set(&vdisk->error_count, 0); + seqnum32_init(&vdisk->error_count); } } } -- 2.27.0 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel