From patchwork Thu May 4 22:51:00 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 9712871 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 6F6276038F for ; Thu, 4 May 2017 22:51:37 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 629F028639 for ; Thu, 4 May 2017 22:51:37 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 573AA286A9; Thu, 4 May 2017 22:51:37 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 534E028639 for ; Thu, 4 May 2017 22:51:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753206AbdEDWve (ORCPT ); Thu, 4 May 2017 18:51:34 -0400 Received: from esa3.hgst.iphmx.com ([216.71.153.141]:30621 "EHLO esa3.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753078AbdEDWvT (ORCPT ); Thu, 4 May 2017 18:51:19 -0400 X-IronPort-AV: E=Sophos;i="5.38,289,1491235200"; d="scan'208";a="15312323" Received: from mail-bn3nam01lp0184.outbound.protection.outlook.com (HELO NAM01-BN3-obe.outbound.protection.outlook.com) ([216.32.180.184]) by ob1.hgst.iphmx.com with ESMTP; 05 May 2017 06:51:14 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector1-sharedspace-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=LrsMiFmv+dz8QY0egs+u5+mcdCa/YFbaKySFEzKX6sk=; b=Rsww68gX+wH7+QE4PruEwQfzNT4p9wHL5vj68sZ1owXzrxHY4xlcf02sZniENQr23v0vG2ER3X73iOSrIDBvCi8O9on+DmVFmxAudlmCEgwn1mwRTJ/hHaWkfqt4Bf1GdZzcvDw7M1U9RdHMqc2fb7HUtyimzhrwpV2dPyjqCbU= Received: from CO2PR04CA0090.namprd04.prod.outlook.com (10.165.94.144) by BY1PR0401MB1545.namprd04.prod.outlook.com (10.162.109.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1061.12; Thu, 4 May 2017 22:51:12 +0000 Received: from CO1NAM04FT007.eop-NAM04.prod.protection.outlook.com (2a01:111:f400:7e4d::207) by CO2PR04CA0090.outlook.office365.com (2603:10b6:104:6::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1075.11 via Frontend Transport; Thu, 4 May 2017 22:51:11 +0000 Authentication-Results: spf=pass (sender IP is 63.163.107.21) smtp.mailfrom=sandisk.com; linux-iscsi.org; dkim=none (message not signed) header.d=none;linux-iscsi.org; dmarc=bestguesspass action=none header.from=sandisk.com; Received-SPF: Pass (protection.outlook.com: domain of sandisk.com designates 63.163.107.21 as permitted sender) receiver=protection.outlook.com; client-ip=63.163.107.21; helo=milsmgep15.sandisk.com; Received: from milsmgep15.sandisk.com (63.163.107.21) by CO1NAM04FT007.mail.protection.outlook.com (10.152.90.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.1047.9 via Frontend Transport; Thu, 4 May 2017 22:51:10 +0000 Received: from MILHUBIP04.sdcorp.global.sandisk.com (Unknown_Domain [10.201.67.162]) (using TLS with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by (Symantec Messaging Gateway) with SMTP id EF.D4.29323.D50BB095; Thu, 4 May 2017 15:51:09 -0700 (PDT) Received: from milsmgip11.sandisk.com (10.177.8.100) by MILHUBIP04.sdcorp.global.sandisk.com (10.177.9.97) with Microsoft SMTP Server id 14.3.319.2; Thu, 4 May 2017 15:51:04 -0700 X-AuditID: 0ac94369-548749800000728b-0c-590bb05d1887 Received: from exp-402881.sdcorp.global.sandisk.com ( [10.177.8.100]) by (Symantec Messaging Gateway) with SMTP id 79.F0.11415.850BB095; Thu, 4 May 2017 15:51:04 -0700 (PDT) From: Bart Van Assche To: Nicholas Bellinger CC: , Bart Van Assche , Hannes Reinecke , "Christoph Hellwig" , Andy Grover , David Disseldorp , Subject: [PATCH 17/19] target/iscsi: Simplify timer manipulation code Date: Thu, 4 May 2017 15:51:00 -0700 Message-ID: <20170504225102.8931-18-bart.vanassche@sandisk.com> X-Mailer: git-send-email 2.12.2 In-Reply-To: <20170504225102.8931-1-bart.vanassche@sandisk.com> References: <20170504225102.8931-1-bart.vanassche@sandisk.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrPLMWRmVeSWpSXmKPExsXCddJ5kW7sBu5IgyMr9C32z3rGZPH1/3QW iwVv9rJZrFx9lMmibfUZRosFGx8xWrQufcvkwO5xf/sRJo/dNxvYPN7vu8rmsX7LVRaPzaer PT5vkgtgi+KySUnNySxLLdK3S+DKaNk5ib1gWk7FlDuLmBoYT8d1MXJwSAiYSDy5FdLFyMUh JLCUSeLK6pOsEM52RomeP4cZuxg5wYqm/fnDBpHYzCixdU0nC0iCTcBI4tv7mWC2iICOxKy7 L9hBipgFvjJKNO79ywSSEBZwlTj3qxfMZhFQkXj/7g4ziM0rYC/xZcp9NogN8hJnt+wEi3MC xffOuA9WLyRgJ7GmfzMjyFAJgWWsEl3961khmgUlTs58AraZWUBC4uCLF8wQDeoSJ5fMZ5rA KDQLSdksJGULGJlWMYrlZuYU56anFhia6hUn5qVkFmfrJefnbmKEREPmDsa7T7wPMQpwMCrx 8C5w444UYk0sK67MPcQowcGsJMIbsQIoxJuSWFmVWpQfX1Sak1p8iFGag0VJnPeczNQIIYH0 xJLU7NTUgtQimCwTB6dUA+OtqhfxKpzhZe7nzM7bH3LiUBWe5Hht70TBiYmy+SfdXl5t7qqd a6DlcWtfiSdfd0ZPrlztKo+3lzpOSinJtVtKefg3x8UK9grGq0+/cM5i13T9TwHT1rxhzZl4 lOOoSfyO1vtHOTWnW89ver/pKfPFxXdiGQ5t3fbDJv2my6M6nU22uQnCZUosxRmJhlrMRcWJ ACLHnUKCAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrHJMWRmVeSWpSXmKPExsXCtZEjRTdiA3ekwfSP1hb7Zz1jsjj4s43R 4uv/6SwWC97sZbNYufook0Xb6jOMFgs2PmK0aF36lsmBw+P+9iNMHrtvNrB5vN93lc1j2prz TB7rt1xl8dh8utrj8ya5APYoLpuU1JzMstQifbsEroyWnZPYC6blVEy5s4ipgfF0XBcjJ4eE gInEtD9/2EBsIYGNjBIXes1AbDYBI4lv72eygNgiAjoSs+6+YO9i5OJgFvjOKHFt3h4mkISw gKvEuV+9YDaLgKrE7IMfwAbxCthLHPh+jx1igbzE2S07mUFsTqD43hn3mSCW2Ums6d/MOIGR ewEjwypGsdzMnOLc9MwCQ0O94sS8lMzibL3k/NxNjOAQ4ozcwfh0ovkhRiYOTqkGRvvGZLtA wZz1ZVFS25953jf98X/6pXA/fZOKshiWyrnKPxYtefGitnlr+Y6c6ifqXqUxtcf1t0bVTDLe v3bRm3qvxLsn5s8v6FnDKbGPM73TXn/u/hv1h3uOHczMnThDJZwj4dX7IqUg2XO+C/t/rZ5f 1/lv26NIObdnWXo/TrW8KOx0PXflnxJLcUaioRZzUXEiAEovTwPRAQAA MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:63.163.107.21; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10019020)(39840400002)(39860400002)(39450400003)(39400400002)(39850400002)(39410400002)(2980300002)(438002)(199003)(189002)(9170700003)(106466001)(575784001)(86362001)(4326008)(50986999)(8676002)(2906002)(50226002)(189998001)(38730400002)(2950100002)(6916009)(110136004)(53936002)(6666003)(1076002)(47776003)(76176999)(36756003)(50466002)(81166006)(8936002)(356003)(478600001)(5003940100001)(305945005)(33646002)(48376002)(54906002)(5660300001)(77096006); DIR:OUT; SFP:1102; SCL:1; SRVR:BY1PR0401MB1545; H:milsmgep15.sandisk.com; FPR:; SPF:Pass; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; CO1NAM04FT007; 1:LaLAoSIhy2SS9X9uVWq6x7gD1Ck0i4iWNpqnnmVeru0NGQDXhMHSZQ7PIAwieyDldpTOCgzGON+NtQCtik4Y30RFGaFmTuAozwOm5fodchI0SFWEJ+iPrdppL8pTP1vaNpZaYHunwbZKtBYpbYmhgFZ7Ey8jy67e19obOehhcEPwC/rDFJPEkGMiIMoZMhQpwo+8wMH/e/34U6HRKCneXe1saByIM2TWjm1cn63Cg7IzPw1U98MaV0bh8bOLMO+Vy6k7I8cLYO79d6e528r0JMRToAJxFPotfcjyQQ7Gu5F5TaLFU1ybcOw0/xcD0xgQP8zGhZu4jE7/VS9+x02VijpShp4/9ctSAFgLINLQAl2qSYGhLEKW/4E+Bf9POUWBFoYwmNq8XNdrPBvKy8bjFiAzYW8jJvpjipSLPSsBnpge1uAEaOZ15i1RKmwfN/qtTNKZUkkggruT5Be/ifwmiO0Cvh8oRuQFdt/NHflP8goJQ2bOM0Vj6robW7A1gBT7 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9b2d9a1d-7505-4632-28a6-08d493400f8b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(8251501002)(2017030254075)(201703131423075)(201703031133081)(201702281549075); SRVR:BY1PR0401MB1545; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0401MB1545; 3:oEpHauXIggSmh1M5MnYCrApJk6cTojhsBNSUfy87W+b5qZ0GKXLzh9FRQuYXiec43gU+L7NGvpHn+kQW6L2Ox5msgq+bwkbEXEjLR3PL9ybViCA+00FvCtrSa7Lf4RYtqYQsWLxswzrkMeBnSqPLg9l7NpjOLcpRCdVDAeqlw0IvN3VxVBWbIMZWpgCQu1o1rQnzi9u5uqFBE4fsnilxQE4+WtG71AD7GAXTnEuLrTnS7DOsaRyAN+1ofdmWLPIum9IcWqjCoc5bGEmZaaUbcRTPupb31N6kNY622vonBOqhzvU/ZiDmpl0Zd/KblYyu+bT7ANlPHDU1IQ0b7iPgmXNgsmePcqNYNIpGWE+73kw10eEBcAkNFgNS67aXf/etWCcMQSc4ho66LO/LrFD7IRUzZg+DifaghEr6hx/rgoDlgQaUsxCAzqIMe0cG1Osp2wFAs+UP8JEip9xWU24oGEpJsWO2xk25TN56zn8l66eqRf0Ga4gGxShQs/182wu7MPpt2OnexplC++blr9FEjg== X-Microsoft-Exchange-Diagnostics: 1; BY1PR0401MB1545; 25:zAdCXZxexD0m4L6UrixrFfWBFu6NOXGFP3IlZd96NTmNVaPcSxIAgx5Xxm5WVje5El/AC1ehgpUG6D48DBqrR2rQWMA1o+N6CbCBJOB9AwzbydHNwFjYI6QcPKI614OFXe0l+XU3ZPK8vkFRHvYPh3x5SFgQiQdJkP/bdY971Khjr4DMHXJRhU+VwbBC0NqlYSLV29EaYaFmgAe5VLV7t7AJoruQwsdiAt0GILStbG2b1abIvCg2E/uExfU51DTRLoXz6JaZyjbhLVHu/h0tNjMAnELqDYlYA9PV+uWdsRzQ3K7eWJYY3TxtBCU4qrYqV664l4e/rTzpXps1zvoIwOVOSxndWuanpeKMYwbEXTBIyeYj7wMUGTbE93WpzrGdUQRhCxyFSroK68ZsAYd7JDc+8NAWVp8CIVPB4Tbiz+BWNvTLfrVTtYSjJD3dUM/2Vtplex+8bPMU5OLfju8vmQ==; 31:Rku4+a1w99zsO7KbE6xVmJ68PZ4yOBfcFbm/PVieZ5OKMSC2qADV+sa0AwGqyvVx2UgPwxPEis/gzPYQtGoNUH49sWFttd7/WOmBpOQUsY5/W8H4/8ERlxJO5M9DWIMLUlw9LyYFoSEllbRT9W7qBVNaNeurltDIrf7K1h7h2oVsUHGFZaNI13LcIXWcaEF0wN846PhdTHgw1YRwyOM1YpAcUHowsW5dDLDWH7t3O7rNWrfwHJj1EB25prq7anGhM8OojEMW6y/UBE0mAziSwQ== WDCIPOUTBOUND: EOP-TRUE X-Microsoft-Exchange-Diagnostics: 1; BY1PR0401MB1545; 20:xXN2wJs7RNPEuiHg9uOZkChMM4wdu1cJPVq8gkJbmfafiBJ+Gu5//Q2gZWbVsaIZjRWfnAPuHSHhpEX1nuHR2DfRib/NCngbQTKIx0gBQZgFb2eclZ3KvWG7nyW0VmNGI74buhuPE0fRc2gbJq80FkODD2eapLIa7N8al50gTrXjpKDHESAuFDVGAUWBMoiD2nRE5RmeacSNPI3k8yvv01/lHjCGCyI/QgDWI+0vKP0NJ24nDHuCjVYTosKmDsOdvX9eM/8xm1y0KUhB2WNkZh+ee4ZGCMHOyQb82gwiyDUEmTREwGY3OkgoBx35rMskJ7sIglevHGpzRru8ToemmzFuBb6N/hkqPyK8lXMC22ff8Qul2239waJwcmjciOtib01hoyvwEFEH/V23IGEKKi1kmuMsPvoTFyVsHYtKmqlfAc3QiVa/wbgfMceVTwKbw0ba9ZVYrIZHFy/qrv6hDUyZQdsCQ6LrwibFUMuX5ZGO0fN+Q/r5dpqBp7JdTEDU X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(42932892334569); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(13018025)(8121501046)(13016025)(5005006)(93006095)(93004095)(3002001)(10201501046)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123564025)(20161123555025)(20161123562025)(20161123558100)(6072148); SRVR:BY1PR0401MB1545; BCL:0; PCL:0; RULEID:; SRVR:BY1PR0401MB1545; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0401MB1545; 4:Kld7oeZDQpfwKGLWvNSrYAgGYp0ZgSm5QzGwACuXpOPuEm4X79zv/468riCVw1I/wrlFWl6kFxl9LPf44y2w/MSQpK1r+fJSF0sfRCPK//5rF1UtgJVSXK0+NO/MlPUqFtemxYKysUksIMn0Aq33GIzHiiuQ1zeo5cUahVlQy/yoMb2UTvPGGgbo45VMu92FoRAn2L1gzQJTQSlvV4LDNZ2wWn0J5eFWA0/+gAcpL5KEcxUcsGnPdShbXLgFVBvbeRNAYClzNR/0JkVw7KzuXDavNyq5pX3Ijl0YITy7TCdJhsVn2hfPqnitfHsSzkXvt81EHceUOdm0LkxU3LBMdst4lu8mADrz5vNaAabi2kb3NWp579HxsiP4SbuQToYuo5i/e9e6lQvrAVqbeiU2AtmFjb4UZ7xGTTHPe02JWgY2yNkRdBxKxhz6kPwK9U0WuTbNaLW9gR4Wo1yuc6UdLlaR62pdL9lWvtK25cBErSVYYckW+5lMzvNTYBe/Y85k0XZ4D5uWn2hMUxEBKEamuBz8BlSJv+AGBrdPTPueEbwRAf9s44X/bl3L4X+xYJtAD3Vdk1nR6NMnnJEi7Q38wd3JzrBHXtEhmfBfGaPRqN8vF3tiptnI7YJfKC/dmJfACYdOrP9i0mUkRHF6sDrVhUDtVXHIqjPHnI3Ryd4VbcED5QJ+qkEydlow1tcUa5HhUYf2iKoRfsOZkR8bVbjRSC28W6vSCoO2a42FzRHsG2cLTU7DeWLeqio24dagUnvuCR4xWIXfRghi58CGZe8YcPJJvq1gCvegYLT6QVrXkU1N4uNOO6iSUai9WYoDd2tf0DP9PE8dIjGyByRd2hIJ6s+nI3FTjDRhYKyiDZ6O/VXzDY/G8cwuPsdq2NZ2Gq4lRS+bffB2MrMUnyavZwzKPeT358Gql34z/9dfH9D1 Q2I= X-Forefront-PRVS: 02973C87BC X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR0401MB1545; 23:IZqqbhcV3wdmwQPdjh/brWvgwitVv3j7JHV4WSP?= =?us-ascii?Q?XKqEpVqpw1c56zMcQwgYeQxIjHFStOCv2iYb+vIybwKg5EflZWaa/olpWr/f?= =?us-ascii?Q?C5eXEtWrvAhaR7rqSAwvwkSq3Bh+rY1XWjVAz6bZac4Sf+luo4auD7KHhN+3?= =?us-ascii?Q?xcmgaxk+UdsjyExSUXMExCWnPB7mxWzqfFSJ6PTYwiKix/0sZLSnpgJFDePd?= =?us-ascii?Q?JIxGytWxd9dGJ2/A2rInyf53uh2b4hbcHOGYvtSo9GrhWfvb79HplWIXs2Ff?= =?us-ascii?Q?acdt5XsvpS6R9s+Obxs88sfNaF+GZFSziurGOF59IeQi268j8WUGd4jJ/Z3s?= =?us-ascii?Q?4fQsygfQNoVORna2Cz1d2pLw7Zjcj7FxOChjyJJhM+yNhH052hFgdex6TBUC?= =?us-ascii?Q?Nk/FTocdi1jWRSeg9IqLfgnWQQ3ckk7qNcAloKyemNlz67hAfhYNk+C0ewGe?= =?us-ascii?Q?WUrAcKrrqV/jtOoykBBdYLLV1vEDMB+o3YNhlbhkBI6MYlS9gvCEoUgGLC53?= =?us-ascii?Q?rqhT6fohO57AuN7cAx8wg01/GxndgvJ3rlyeZlL5/nud7AVm4/7kINZ/rxxS?= =?us-ascii?Q?KaBQYgGmx0NzJLE7f4h4B089il1A0HuuHmlX6W9f6A7Q3V6cWYC8toI6JtnW?= =?us-ascii?Q?CH0HwisC8eKn6wh1AZHjJ9WbA96m6EnpX9MQAnHHVREFaIPCZ4Lxa7NVoesU?= =?us-ascii?Q?hf6mEQy/RLffNrW3/E5cfRhV8bsCl+WeWCjBnlUpcqIKxS8k1mtkD6iNlZFz?= =?us-ascii?Q?Kf22STidOYFxKa0VnKReWjByBlss5nZuLsqrcQo32sdskuv6uWGh45NRkT23?= =?us-ascii?Q?uZFXqkyFolXkJqZP6Nqsm9AX2MyEOqOZW4lVqsgfBQbqDem1Zk4PUk7M+ySk?= =?us-ascii?Q?2VwjLiaBefvVm12S8GDYV8CdapuKxKEruwWXWNxsabyRzjsR6WIyx/AXmNSW?= =?us-ascii?Q?i48SokbQPK+xD2W+EYwl8CKMrYHHKedPlGie+cBKBUtxZMkeUamsqIK4Zdi7?= =?us-ascii?Q?94Hp5O8rBNyMA58g+imTmUvTKK5QUzQlfMRf9EvYMZ+42Vl4NGspLYb2fkMI?= =?us-ascii?Q?hm63La2vOwP7ew0jYrkd8444cA6ce?= X-Microsoft-Exchange-Diagnostics: 1; BY1PR0401MB1545; 6:9A0Tf3s8ZsOk3WUY+/2tqCv2/sUJ2tiogJqYRCzkrttaZ1p4B6VSAe6xEVXmGhH1KK/g5I+FncWuVg/0yzIus1WOfpmw6v49DMcl/QQY6HI25zoj1mFgzTSietO5xKL3c3LcxJk5XDeha7MAGl9euUi68O7fJ9/tlNfm1Z7rIfu97vCzO7WTFTtLY8BekBF3iLUjAhHXy+6qPnCB3JnMpl2pNoGFoDXFuSj1zlcpbdwb4Duy4eXzfnz/aJp+w1Oyp5shMd511/LjU8b/vAl22+zmT0P8cLqYTIQBzjTTgs+GvlG6rov++BST77N2GmBuJPB7IfnRrKfcGBBsAGaFtCF1HNZqALhJ0dY5hMWKWq51NkBaq8Gt7LPdq3A9LymWKB+Lq3+Z2UVpf071Id/gm1ogQWWM4Tqdu/RwkElPwI+3Gyh3s47fyMLHCE50Bj/mtZZDrXNKpn4d/dfmNaQ7v6kYqFxfsAExUgxs/wmSAFGfXixn+k6AtaFWbWjELm/YmpnsimPwRNKPXQ0/QvD10ag1Mi/wA0UAGHRk+779iCs=; 5:UAwKwxuOnkwnY0aCazhY/DpqnAUUMEBTN42PoXAG/QW1qeuX2p6h24YSRrn5sBso4WjTEWZVQtdetXe3FHyBGMWSCce14YdPdCCT8ngIEKGFxL+/Bxc4sUvPdfXYTDAPnDxmisF/f+vAs7GPDb2IKw==; 24:88VpCtcoKPBrmE0kIGIzZquLywLo7bx8+zJnVfsyYqJU9MUBvNJ4Fx2E/4cXNEhqmrnbLNsL19t+mqX0mlpcOdM2YkZwVOiVn9JSnh6XQLg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY1PR0401MB1545; 7:cdGvCg2/0RD6mfcB2bUTPMAvXis34x83Ae5xOwGlqcBRz3EOpzAY5bt2ex8Sad5UcTCCkzZ5ktsc5wrj5Q16CmdcAfMQ5TG2wOKjjwzLl58ykxcuZVbFGGyL7/S8/9TB21GWhmTN4RMG44zN/jBbc1O5eZAMVsGA//PRmBYlckCj34KthQ7Wwcv6QLofYjg5QL3Pvtz1TK+c1sXCqnqcI9+VN57Ewgp8d4Ui+ABYEss7jJnHNaNs+KrQdzF73Co6smk+8z0waYRFqkDEJdx1K2a74DMaHTm9aCd1sb+bLJOk4Fe4sG99cnKptuFQ1K7k27rbKyQcEnY8KcCZpTZecw==; 20:D0FnE2lW/sA3sFtG7IsQ/M6KthbXcRLYTLE9nn/qz8hfqqOrZ1sE7nCMoK7jzreVEXWI2XtdW2fWYf51xEXJi6rjNvy4fbmSG/M1ITzOzOyWCqgRgHtqUjo+5SR+8RUXPQNHdgafj4oyb/quYcVPkIVkUug2l1iV35LzFPbMQdY= X-OriginatorOrg: sandisk.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2017 22:51:10.9519 (UTC) X-MS-Exchange-CrossTenant-Id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=b61c8803-16f3-4c35-9b17-6f65f441df86; Ip=[63.163.107.21]; Helo=[milsmgep15.sandisk.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR0401MB1545 Sender: target-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: target-devel@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Move timer initialization from before add_timer() to the context where the containing object is initialized. Use setup_timer() and mod_timer() instead of open coding these. Use 'jiffies' instead of get_jiffies_64() when calculating expiry times because expiry times have type unsigned long, just like 'jiffies'. Signed-off-by: Bart Van Assche Cc: Hannes Reinecke Cc: Christoph Hellwig Cc: Andy Grover Cc: David Disseldorp Cc: Reviewed-by: Hannes Reinecke --- drivers/target/iscsi/iscsi_target.c | 3 +++ drivers/target/iscsi/iscsi_target_erl0.c | 10 +++------- drivers/target/iscsi/iscsi_target_erl0.h | 1 + drivers/target/iscsi/iscsi_target_erl1.c | 8 ++------ drivers/target/iscsi/iscsi_target_erl1.h | 1 + drivers/target/iscsi/iscsi_target_login.c | 16 ++++++++++------ drivers/target/iscsi/iscsi_target_login.h | 1 + drivers/target/iscsi/iscsi_target_nego.c | 8 +++----- drivers/target/iscsi/iscsi_target_util.c | 26 ++++++++------------------ drivers/target/iscsi/iscsi_target_util.h | 2 ++ 10 files changed, 34 insertions(+), 42 deletions(-) diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c index 083e6228c99d..ef1bb12ee61e 100644 --- a/drivers/target/iscsi/iscsi_target.c +++ b/drivers/target/iscsi/iscsi_target.c @@ -372,6 +372,9 @@ struct iscsi_np *iscsit_add_np( init_completion(&np->np_restart_comp); INIT_LIST_HEAD(&np->np_list); + setup_timer(&np->np_login_timer, iscsi_handle_login_thread_timeout, + (unsigned long)np); + ret = iscsi_target_setup_login_socket(np, sockaddr); if (ret != 0) { kfree(np); diff --git a/drivers/target/iscsi/iscsi_target_erl0.c b/drivers/target/iscsi/iscsi_target_erl0.c index 9a96e17bf7cd..0d7a2d9875c7 100644 --- a/drivers/target/iscsi/iscsi_target_erl0.c +++ b/drivers/target/iscsi/iscsi_target_erl0.c @@ -749,7 +749,7 @@ int iscsit_check_post_dataout( } } -static void iscsit_handle_time2retain_timeout(unsigned long data) +void iscsit_handle_time2retain_timeout(unsigned long data) { struct iscsi_session *sess = (struct iscsi_session *) data; struct iscsi_portal_group *tpg = sess->tpg; @@ -809,14 +809,10 @@ void iscsit_start_time2retain_handler(struct iscsi_session *sess) pr_debug("Starting Time2Retain timer for %u seconds on" " SID: %u\n", sess->sess_ops->DefaultTime2Retain, sess->sid); - init_timer(&sess->time2retain_timer); - sess->time2retain_timer.expires = - (get_jiffies_64() + sess->sess_ops->DefaultTime2Retain * HZ); - sess->time2retain_timer.data = (unsigned long)sess; - sess->time2retain_timer.function = iscsit_handle_time2retain_timeout; sess->time2retain_timer_flags &= ~ISCSI_TF_STOP; sess->time2retain_timer_flags |= ISCSI_TF_RUNNING; - add_timer(&sess->time2retain_timer); + mod_timer(&sess->time2retain_timer, + jiffies + sess->sess_ops->DefaultTime2Retain * HZ); } /* diff --git a/drivers/target/iscsi/iscsi_target_erl0.h b/drivers/target/iscsi/iscsi_target_erl0.h index 60e69e2af6ed..a54d2047ed1b 100644 --- a/drivers/target/iscsi/iscsi_target_erl0.h +++ b/drivers/target/iscsi/iscsi_target_erl0.h @@ -11,6 +11,7 @@ extern void iscsit_set_dataout_sequence_values(struct iscsi_cmd *); extern int iscsit_check_pre_dataout(struct iscsi_cmd *, unsigned char *); extern int iscsit_check_post_dataout(struct iscsi_cmd *, unsigned char *, u8); extern void iscsit_start_time2retain_handler(struct iscsi_session *); +extern void iscsit_handle_time2retain_timeout(unsigned long data); extern int iscsit_stop_time2retain_timer(struct iscsi_session *); extern void iscsit_connection_reinstatement_rcfr(struct iscsi_conn *); extern void iscsit_cause_connection_reinstatement(struct iscsi_conn *, int); diff --git a/drivers/target/iscsi/iscsi_target_erl1.c b/drivers/target/iscsi/iscsi_target_erl1.c index 454f493174db..c774d93514f8 100644 --- a/drivers/target/iscsi/iscsi_target_erl1.c +++ b/drivers/target/iscsi/iscsi_target_erl1.c @@ -1166,7 +1166,7 @@ static int iscsit_set_dataout_timeout_values( /* * NOTE: Called from interrupt (timer) context. */ -static void iscsit_handle_dataout_timeout(unsigned long data) +void iscsit_handle_dataout_timeout(unsigned long data) { u32 pdu_length = 0, pdu_offset = 0; u32 r2t_length = 0, r2t_offset = 0; @@ -1282,13 +1282,9 @@ void iscsit_start_dataout_timer( pr_debug("Starting DataOUT timer for ITT: 0x%08x on" " CID: %hu.\n", cmd->init_task_tag, conn->cid); - init_timer(&cmd->dataout_timer); - cmd->dataout_timer.expires = (get_jiffies_64() + na->dataout_timeout * HZ); - cmd->dataout_timer.data = (unsigned long)cmd; - cmd->dataout_timer.function = iscsit_handle_dataout_timeout; cmd->dataout_timer_flags &= ~ISCSI_TF_STOP; cmd->dataout_timer_flags |= ISCSI_TF_RUNNING; - add_timer(&cmd->dataout_timer); + mod_timer(&cmd->dataout_timer, jiffies + na->dataout_timeout * HZ); } void iscsit_stop_dataout_timer(struct iscsi_cmd *cmd) diff --git a/drivers/target/iscsi/iscsi_target_erl1.h b/drivers/target/iscsi/iscsi_target_erl1.h index 54d36bd25bea..0ff6e310ca36 100644 --- a/drivers/target/iscsi/iscsi_target_erl1.h +++ b/drivers/target/iscsi/iscsi_target_erl1.h @@ -29,6 +29,7 @@ extern int iscsit_execute_ooo_cmdsns(struct iscsi_session *); extern int iscsit_execute_cmd(struct iscsi_cmd *, int); extern int iscsit_handle_ooo_cmdsn(struct iscsi_session *, struct iscsi_cmd *, u32); extern void iscsit_remove_ooo_cmdsn(struct iscsi_session *, struct iscsi_ooo_cmdsn *); +extern void iscsit_handle_dataout_timeout(unsigned long data); extern void iscsit_mod_dataout_timer(struct iscsi_cmd *); extern void iscsit_start_dataout_timer(struct iscsi_cmd *, struct iscsi_conn *); extern void iscsit_stop_dataout_timer(struct iscsi_cmd *); diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c index 66238477137b..cc2906b5866f 100644 --- a/drivers/target/iscsi/iscsi_target_login.c +++ b/drivers/target/iscsi/iscsi_target_login.c @@ -325,6 +325,9 @@ static int iscsi_login_zero_tsih_s1( spin_lock_init(&sess->session_usage_lock); spin_lock_init(&sess->ttt_lock); + setup_timer(&sess->time2retain_timer, iscsit_handle_time2retain_timeout, + (unsigned long)sess); + idr_preload(GFP_KERNEL); spin_lock_bh(&sess_idr_lock); ret = idr_alloc(&sess_idr, NULL, 0, 0, GFP_NOWAIT); @@ -833,7 +836,7 @@ void iscsi_post_login_handler( iscsit_dec_conn_usage_count(conn); } -static void iscsi_handle_login_thread_timeout(unsigned long data) +void iscsi_handle_login_thread_timeout(unsigned long data) { struct iscsi_np *np = (struct iscsi_np *) data; @@ -860,13 +863,9 @@ static void iscsi_start_login_thread_timer(struct iscsi_np *np) * point we do not have access to ISCSI_TPG_ATTRIB(tpg)->login_timeout */ spin_lock_bh(&np->np_thread_lock); - init_timer(&np->np_login_timer); - np->np_login_timer.expires = (get_jiffies_64() + TA_LOGIN_TIMEOUT * HZ); - np->np_login_timer.data = (unsigned long)np; - np->np_login_timer.function = iscsi_handle_login_thread_timeout; np->np_login_timer_flags &= ~ISCSI_TF_STOP; np->np_login_timer_flags |= ISCSI_TF_RUNNING; - add_timer(&np->np_login_timer); + mod_timer(&np->np_login_timer, jiffies + TA_LOGIN_TIMEOUT * HZ); pr_debug("Added timeout timer to iSCSI login request for" " %u seconds.\n", TA_LOGIN_TIMEOUT); @@ -1258,6 +1257,11 @@ static int __iscsi_target_login_thread(struct iscsi_np *np) pr_debug("Moving to TARG_CONN_STATE_FREE.\n"); conn->conn_state = TARG_CONN_STATE_FREE; + setup_timer(&conn->nopin_response_timer, + iscsit_handle_nopin_response_timeout, (unsigned long)conn); + setup_timer(&conn->nopin_timer, iscsit_handle_nopin_timeout, + (unsigned long)conn); + if (iscsit_conn_set_transport(conn, np->np_transport) < 0) { kfree(conn); return 1; diff --git a/drivers/target/iscsi/iscsi_target_login.h b/drivers/target/iscsi/iscsi_target_login.h index 0e1fd6cedd54..f77850bf3e58 100644 --- a/drivers/target/iscsi/iscsi_target_login.h +++ b/drivers/target/iscsi/iscsi_target_login.h @@ -24,5 +24,6 @@ extern void iscsi_post_login_handler(struct iscsi_np *, struct iscsi_conn *, u8) extern void iscsi_target_login_sess_out(struct iscsi_conn *, struct iscsi_np *, bool, bool); extern int iscsi_target_login_thread(void *); +extern void iscsi_handle_login_thread_timeout(unsigned long data); #endif /*** ISCSI_TARGET_LOGIN_H ***/ diff --git a/drivers/target/iscsi/iscsi_target_nego.c b/drivers/target/iscsi/iscsi_target_nego.c index 7ccc9c1cbfd1..215399af0461 100644 --- a/drivers/target/iscsi/iscsi_target_nego.c +++ b/drivers/target/iscsi/iscsi_target_nego.c @@ -572,11 +572,9 @@ static void iscsi_target_do_login_rx(struct work_struct *work) conn->login_kworker = current; allow_signal(SIGINT); - init_timer(&login_timer); - login_timer.expires = (get_jiffies_64() + TA_LOGIN_TIMEOUT * HZ); - login_timer.data = (unsigned long)conn; - login_timer.function = iscsi_target_login_timeout; - add_timer(&login_timer); + setup_timer_on_stack(&login_timer, iscsi_target_login_timeout, + (unsigned long)conn); + mod_timer(&login_timer, jiffies + TA_LOGIN_TIMEOUT * HZ); pr_debug("Starting login_timer for %s/%d\n", current->comm, current->pid); rc = conn->conn_transport->iscsit_get_login_rx(conn, login); diff --git a/drivers/target/iscsi/iscsi_target_util.c b/drivers/target/iscsi/iscsi_target_util.c index 1e36f83b5961..505dad5dab7f 100644 --- a/drivers/target/iscsi/iscsi_target_util.c +++ b/drivers/target/iscsi/iscsi_target_util.c @@ -176,6 +176,8 @@ struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *conn, int state) spin_lock_init(&cmd->istate_lock); spin_lock_init(&cmd->error_lock); spin_lock_init(&cmd->r2t_lock); + setup_timer(&cmd->dataout_timer, iscsit_handle_dataout_timeout, + (unsigned long)cmd); return cmd; } @@ -880,7 +882,7 @@ static int iscsit_add_nopin(struct iscsi_conn *conn, int want_response) return 0; } -static void iscsit_handle_nopin_response_timeout(unsigned long data) +void iscsit_handle_nopin_response_timeout(unsigned long data) { struct iscsi_conn *conn = (struct iscsi_conn *) data; @@ -949,14 +951,10 @@ void iscsit_start_nopin_response_timer(struct iscsi_conn *conn) return; } - init_timer(&conn->nopin_response_timer); - conn->nopin_response_timer.expires = - (get_jiffies_64() + na->nopin_response_timeout * HZ); - conn->nopin_response_timer.data = (unsigned long)conn; - conn->nopin_response_timer.function = iscsit_handle_nopin_response_timeout; conn->nopin_response_timer_flags &= ~ISCSI_TF_STOP; conn->nopin_response_timer_flags |= ISCSI_TF_RUNNING; - add_timer(&conn->nopin_response_timer); + mod_timer(&conn->nopin_response_timer, + jiffies + na->nopin_response_timeout * HZ); pr_debug("Started NOPIN Response Timer on CID: %d to %u" " seconds\n", conn->cid, na->nopin_response_timeout); @@ -980,7 +978,7 @@ void iscsit_stop_nopin_response_timer(struct iscsi_conn *conn) spin_unlock_bh(&conn->nopin_timer_lock); } -static void iscsit_handle_nopin_timeout(unsigned long data) +void iscsit_handle_nopin_timeout(unsigned long data) { struct iscsi_conn *conn = (struct iscsi_conn *) data; @@ -1015,13 +1013,9 @@ void __iscsit_start_nopin_timer(struct iscsi_conn *conn) if (conn->nopin_timer_flags & ISCSI_TF_RUNNING) return; - init_timer(&conn->nopin_timer); - conn->nopin_timer.expires = (get_jiffies_64() + na->nopin_timeout * HZ); - conn->nopin_timer.data = (unsigned long)conn; - conn->nopin_timer.function = iscsit_handle_nopin_timeout; conn->nopin_timer_flags &= ~ISCSI_TF_STOP; conn->nopin_timer_flags |= ISCSI_TF_RUNNING; - add_timer(&conn->nopin_timer); + mod_timer(&conn->nopin_timer, jiffies + na->nopin_timeout * HZ); pr_debug("Started NOPIN Timer on CID: %d at %u second" " interval\n", conn->cid, na->nopin_timeout); @@ -1043,13 +1037,9 @@ void iscsit_start_nopin_timer(struct iscsi_conn *conn) return; } - init_timer(&conn->nopin_timer); - conn->nopin_timer.expires = (get_jiffies_64() + na->nopin_timeout * HZ); - conn->nopin_timer.data = (unsigned long)conn; - conn->nopin_timer.function = iscsit_handle_nopin_timeout; conn->nopin_timer_flags &= ~ISCSI_TF_STOP; conn->nopin_timer_flags |= ISCSI_TF_RUNNING; - add_timer(&conn->nopin_timer); + mod_timer(&conn->nopin_timer, jiffies + na->nopin_timeout * HZ); pr_debug("Started NOPIN Timer on CID: %d at %u second" " interval\n", conn->cid, na->nopin_timeout); diff --git a/drivers/target/iscsi/iscsi_target_util.h b/drivers/target/iscsi/iscsi_target_util.h index 425160565d0c..78b3b9d20963 100644 --- a/drivers/target/iscsi/iscsi_target_util.h +++ b/drivers/target/iscsi/iscsi_target_util.h @@ -47,9 +47,11 @@ extern struct iscsi_conn *iscsit_get_conn_from_cid_rcfr(struct iscsi_session *, extern void iscsit_check_conn_usage_count(struct iscsi_conn *); extern void iscsit_dec_conn_usage_count(struct iscsi_conn *); extern void iscsit_inc_conn_usage_count(struct iscsi_conn *); +extern void iscsit_handle_nopin_response_timeout(unsigned long data); extern void iscsit_mod_nopin_response_timer(struct iscsi_conn *); extern void iscsit_start_nopin_response_timer(struct iscsi_conn *); extern void iscsit_stop_nopin_response_timer(struct iscsi_conn *); +extern void iscsit_handle_nopin_timeout(unsigned long data); extern void __iscsit_start_nopin_timer(struct iscsi_conn *); extern void iscsit_start_nopin_timer(struct iscsi_conn *); extern void iscsit_stop_nopin_timer(struct iscsi_conn *);