From patchwork Mon Feb 1 04:14:47 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abhilash Jindal X-Patchwork-Id: 8175921 Return-Path: X-Original-To: patchwork-linux-scsi@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id B0AD1BF0A9 for ; Mon, 1 Feb 2016 04:15:19 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id CAFCC200E9 for ; Mon, 1 Feb 2016 04:15:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E8CD9201F4 for ; Mon, 1 Feb 2016 04:15:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757669AbcBAEOy (ORCPT ); Sun, 31 Jan 2016 23:14:54 -0500 Received: from mail-io0-f180.google.com ([209.85.223.180]:36566 "EHLO mail-io0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757654AbcBAEOu (ORCPT ); Sun, 31 Jan 2016 23:14:50 -0500 Received: by mail-io0-f180.google.com with SMTP id g73so145437199ioe.3 for ; Sun, 31 Jan 2016 20:14:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=1TfFHUETZurx2g+BsZlJ8LhvI81iPg07Prrw3DNyO9A=; b=RiHs3h0VBAoJqMeD2kskJJamvhQYxWkVWOj1/HjY/TM0MIAFY/xjINqBvzjaJ1+jLO TnBz2bY/Xx82A/mFqGklD2TheTuTRrhRDf7UsFTu4URD345HM3NeVjc++1Juu+Kqn03p dGvdHW4no9ZfupF0dIOOEnpLtayGnZnnOU1MkZk4nlwHvhlf0ZI0np7iqtNFvlU5vWJ/ iri5j5jeIK42ViM/hFcHoYM5+nGV+tcJ22BcfGz7ekW9iJFloBaLUq6AR6aypKbtcfRK grzsj7w3Hkl5kTnBZtgDSdSkJ1JUvZGww9UxY86uDXNV7vfGmMwIQSAy+hbeERyTNKNB VWDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=1TfFHUETZurx2g+BsZlJ8LhvI81iPg07Prrw3DNyO9A=; b=mmz5c6xCtEe01RKXMpFA3Yl1UhR2t63jDYkbKTRrGN8GhbGuwnmyW4jw/cTi/Wa+4+ 2RyZ0WvIz9LYou86mV+X0S05OMheg8s8Eh6jhm74BKxbIZL7NYoaKs3z+MPoERe3Vjuk z+SLcL6wTzYmX8OtoHa88l3WruJl731kokbDEdgFvT+E4dk+hV29j0YWWP3ypipi2vT3 9aHSI7NJYwQmih97JZuZOqc8eX1MVrJAv/WzmHtm6pZCbVMFkePrmWL6cT8uAQ595mpA ILFrnU5BV5SrLDHAWEgqdyp6kM16I37RoHeDfM3Ug/oyp4PCZW5iZP4dlSV2fmdPMfhv B8Xg== X-Gm-Message-State: AG10YOQlnLmXRo8a0LbzmfdJqKRsCNyrGy9nkd93b4fzcVzP/04mrRBuXVq6uuYN892NXw== X-Received: by 10.107.170.140 with SMTP id g12mr11006609ioj.44.1454300089424; Sun, 31 Jan 2016 20:14:49 -0800 (PST) Received: from sp12.ecn.purdue.edu.ecn.purdue.edu (eprof.ecn.purdue.edu. [128.46.101.56]) by smtp.gmail.com with ESMTPSA id a127sm11029862ioe.10.2016.01.31.20.14.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 31 Jan 2016 20:14:48 -0800 (PST) From: Abhilash Jindal To: linux-scsi@vger.kernel.org Cc: martin.petersen@oracle.com, JBottomley@odin.com, linuxraid@lsi.com, Abhilash Jindal Subject: [PATCH] 3w-9xxx: use boottime to compare time Date: Sun, 31 Jan 2016 23:14:47 -0500 Message-Id: <1454300087-19910-1-git-send-email-klock.android@gmail.com> X-Mailer: git-send-email 1.7.9.5 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Spam-Status: No, score=-7.3 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Wall time is susceptible to sudden jumps due to user setting the time or due to NTP. Boot time is constantly increasing time better suited for subtracting two timestamps. Signed-off-by: Abhilash Jindal --- drivers/scsi/3w-9xxx.c | 13 ++++++------- drivers/scsi/3w-9xxx.h | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/drivers/scsi/3w-9xxx.c b/drivers/scsi/3w-9xxx.c index a56a7b2..12e9141 100644 --- a/drivers/scsi/3w-9xxx.c +++ b/drivers/scsi/3w-9xxx.c @@ -651,8 +651,7 @@ static long twa_chrdev_ioctl(struct file *file, unsigned int cmd, unsigned long TW_Command_Full *full_command_packet; TW_Compatibility_Info *tw_compat_info; TW_Event *event; - struct timeval current_time; - u32 current_time_ms; + ktime_t current_time; TW_Device_Extension *tw_dev = twa_device_extension_list[iminor(inode)]; int retval = TW_IOCTL_ERROR_OS_EFAULT; void __user *argp = (void __user *)arg; @@ -843,17 +842,17 @@ static long twa_chrdev_ioctl(struct file *file, unsigned int cmd, unsigned long break; case TW_IOCTL_GET_LOCK: tw_lock = (TW_Lock *)tw_ioctl->data_buffer; - do_gettimeofday(¤t_time); - current_time_ms = (current_time.tv_sec * 1000) + (current_time.tv_usec / 1000); + current_time = ktime_get_boottime(); - if ((tw_lock->force_flag == 1) || (tw_dev->ioctl_sem_lock == 0) || (current_time_ms >= tw_dev->ioctl_msec)) { + if ((tw_lock->force_flag == 1) || (tw_dev->ioctl_sem_lock == 0) + || (ktime_compare(current_time, tw_dev->ioctl_time) >= 0)) { tw_dev->ioctl_sem_lock = 1; - tw_dev->ioctl_msec = current_time_ms + tw_lock->timeout_msec; + tw_dev->ioctl_time = ktime_add_ms(current_time, tw_lock->timeout_msec); tw_ioctl->driver_command.status = 0; tw_lock->time_remaining_msec = tw_lock->timeout_msec; } else { tw_ioctl->driver_command.status = TW_IOCTL_ERROR_STATUS_LOCKED; - tw_lock->time_remaining_msec = tw_dev->ioctl_msec - current_time_ms; + tw_lock->time_remaining_msec = ktime_to_ms(ktime_sub(tw_dev->ioctl_time, current_time)); } break; case TW_IOCTL_RELEASE_LOCK: diff --git a/drivers/scsi/3w-9xxx.h b/drivers/scsi/3w-9xxx.h index 0fdc83c..6f5d7e3 100644 --- a/drivers/scsi/3w-9xxx.h +++ b/drivers/scsi/3w-9xxx.h @@ -669,7 +669,7 @@ typedef struct TAG_TW_Device_Extension { unsigned char event_queue_wrapped; unsigned int error_sequence_id; int ioctl_sem_lock; - u32 ioctl_msec; + ktime_t ioctl_time; int chrdev_request_id; wait_queue_head_t ioctl_wqueue; struct mutex ioctl_lock;