From patchwork Tue Apr 12 20:40:48 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 8815101 Return-Path: X-Original-To: patchwork-linux-block@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 731369F3D1 for ; Tue, 12 Apr 2016 20:41:02 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 4B31B2035D for ; Tue, 12 Apr 2016 20:41:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A7A1C201B9 for ; Tue, 12 Apr 2016 20:40:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965373AbcDLUk4 (ORCPT ); Tue, 12 Apr 2016 16:40:56 -0400 Received: from mail-bn1bhn0246.outbound.protection.outlook.com ([157.56.111.246]:13155 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S965328AbcDLUky (ORCPT ); Tue, 12 Apr 2016 16:40:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sandiskcorp.onmicrosoft.com; s=selector1-sandisk-com; h=From:To:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=MDx0gjBNGaTeE1y1BTQruZcTR+ns8JEaXPEr/JkRJRI=; b=KTidPl3xtKLtOgcj/5q0wwwXuzcumZN0Tf4EgOFSjaMBAJ7ojwDPTztj5t210PvyOxBZtMz9w710kFDNHvaqzds4V7RCn1TnuuqCe8ylnEj++mZOfiQ8sajMysq8KWNIJMmab3o7QZg5MFvhmwgIuRXp8735PLUsECLbRcNphBA= Received: from BY2PR02CA0059.namprd02.prod.outlook.com (10.141.216.49) by BLUPR0201MB1857.namprd02.prod.outlook.com (10.162.239.139) with Microsoft SMTP Server (TLS) id 15.1.453.26; Tue, 12 Apr 2016 20:40:51 +0000 Received: from BL2FFO11OLC004.protection.gbl (2a01:111:f400:7c09::138) by BY2PR02CA0059.outlook.office365.com (2a01:111:e400:2c40::49) with Microsoft SMTP Server (TLS) id 15.1.453.26 via Frontend Transport; Tue, 12 Apr 2016 20:40:51 +0000 Authentication-Results: spf=pass (sender IP is 63.163.107.21) smtp.mailfrom=sandisk.com; grimberg.me; dkim=none (message not signed) header.d=none;grimberg.me; 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 BL2FFO11OLC004.mail.protection.outlook.com (10.173.161.188) with Microsoft SMTP Server (TLS) id 15.1.453.6 via Frontend Transport; Tue, 12 Apr 2016 20:40:49 +0000 Received: from MILHUBIP04.sdcorp.global.sandisk.com (Unknown_Domain [172.22.12.162]) (using TLS with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by (Symantec Messaging Gateway) with SMTP id 44.C1.03047.31D5D075; Tue, 12 Apr 2016 13:39:47 -0700 (PDT) Received: from milsmgip12.sandisk.com (10.177.8.100) by MILHUBIP04.sdcorp.global.sandisk.com (10.177.9.97) with Microsoft SMTP Server id 14.3.279.2; Tue, 12 Apr 2016 13:40:49 -0700 X-AuditID: ac160c69-5dfff70000000be7-4a-570d5d138062 Received: from exp-402881.sandisk.com ( [10.177.8.100]) by (Symantec Messaging Gateway) with SMTP id A1.55.03935.05D5D075; Tue, 12 Apr 2016 13:40:48 -0700 (PDT) Subject: [PATCH 5/5] block: Make blkdev_issue_discard() submit aligned discard requests To: Jens Axboe References: <570D5CC1.1030507@sandisk.com> CC: Christoph Hellwig , Jan Kara , Mike Snitzer , "Martin K. Petersen" , Dmitry Monakhov , "Darrick J. Wong" , Sagi Grimberg , "linux-block@vger.kernel.org" From: Bart Van Assche Message-ID: <570D5D50.6000408@sandisk.com> Date: Tue, 12 Apr 2016 13:40:48 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.1 MIME-Version: 1.0 In-Reply-To: <570D5CC1.1030507@sandisk.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprGIsWRmVeSWpSXmKPExsWyRoxnka5wLG+4Qc8dE4v/e46xWdx9v53V 4sRMT4uVq48yWcye3sxksfeWtsXy4/+YLNa9fs9i0bbxK6MDp8fE5nfsHufvbWTx2H2zgc1j 0uHPTB4fn95i8Xi/7yqbx5kFR9g9Pm+SC+CI4rJJSc3JLEst0rdL4MpYu/Eja8Ec9YoDvyew NjD2KHQxcnJICJhIXP79gK2LkYtDSGAuk8Stnk4oZwejxL55a5i6GDnAqvbsLIKIL2WU+LJ8 KjtIt7BApMTZ3w/BbBEBWYnvu1+zgdhCAloSW9/tYgFpYBY4yyRxovkyE0iCTcBI4tv7mSwg Ni9Q0duzDSwgC1gEVCU6nwiDhEUFIiQONb6HKhGUODnzCVgJp4C2xLR5MiAms4CmxPpd+iAV zALyEtvfzmEG2SQh8JZVYvOcdSwQJ6hLnFwyn2kCo/AsJJNmIbTPQtK+gJF5FaNYbmZOcW56 aoGhqV5xYl5KZnG2XnJ+7iZGSGxl7mC8+8T7EKMAB6MSD+8DZ55wIdbEsuLK3EOMEhzMSiK8 P6N5w4V4UxIrq1KL8uOLSnNSiw8xSnOwKInzut37EiYkkJ5YkpqdmlqQWgSTZeLglGpgnNO8 6b2pVUO/xaWb8qztX3cYnXFu9lBW2Blz46iIb1FKUDbj4dyVwfU2MyZ/vPpYOiGvcwWT4tuF HH+eKCif/T45ZKtDhwr3xaenhSduZdCQ4ZFYW/kvrzC3xtLIZ4btoUnx3oWW51buu3xq7+UX B6KPmBxc4tZUWrrwjkakb3lt1YOLX4y+K7EUZyQaajEXFScCAII9O7upAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFuplluLIzCtJLcpLzFFi42Lh2siRohsQyxtu8LvJxuL/nmNsFnffb2e1 ODHT02Ll6qNMFrOnNzNZ7L2lbbH8+D8mi3Wv37NYtG38yujA6TGx+R27x/l7G1k8dt9sYPOY dPgzk8fHp7dYPN7vu8rmcWbBEXaPz5vkAjiiuGxSUnMyy1KL9O0SuDLWbvzIWjBHveLA7wms DYw9Cl2MHBwSAiYSe3YWdTFycQgJLGaU+Ln3PHMXIyeHsECkxNnfD9lBbBEBWYnvu1+zgdhC AloSW9/tYgFpYBa4yCTxfvYWFpAEm4CRxLf3M8FsXqCit2cbWEAWsAioSnQ+EQYJiwpESBxq fA9VIihxcuYTsBJOAW2JafNkQMLMAuoSf+ZdYoaw5SW2v53DPIGRbxaSjllIymYhKVvAyLyK USw3M6c4Nz2zwNBIrzgxLyWzOFsvOT93EyM4wDmjdjBen2h+iJGJg1OqgXHFFqPv+hnOx/z+ h98RV3KQS8k5u1vLVlDMcFvztiCR0Fupf6YX3XjwNKLo5oy3E8QfS5Sfauf/N7m0+6tk2rOQ +ay1mQ/SffLfz9Df/+4OU/qz3az9uy9/9i46Lb2g5vArZftpN6dd2vjw34bppdqOK84VCLIx GKql8ngqbP6YrWbbyj3/6GMlluKMREMt5qLiRABu2MIQIAIAAA== X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:63.163.107.21; IPV:NLI; CTRY:US; EFV:NLI; SFV:SPM; SFS:(10009020)(6009001)(2980300002)(438002)(189002)(199003)(65806001)(5008740100001)(65956001)(47776003)(586003)(59896002)(11100500001)(2950100001)(86362001)(4001350100001)(110136002)(189998001)(87936001)(19580405001)(77096005)(53416004)(6806005)(106466001)(229853001)(33656002)(87266999)(19580395003)(23676002)(76176999)(92566002)(54356999)(2270400002)(64126003)(5003600100002)(50986999)(80316001)(2906002)(50466002)(230700001)(81166005)(83506001)(4326007)(1096002)(1220700001)(36756003)(65816999)(50929005)(21314002); DIR:OUT; SFP:1501; SCL:5; SRVR:BLUPR0201MB1857; H:milsmgep15.sandisk.com; FPR:; SPF:Pass; MLV:nov; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11OLC004; 1:IKNTvt3qUqyfRnjhOIy3z5ImCq6URT15tNbjc7N7ljlaAThmMz3mo52xjkzQkLm5bj4UhIBDMaM+QXv8dfRu7BJZU8IltM4Rj3ZY0f5095C42+CmKKnOGk/uQ3VuEa1/yj17hi8bhCCqfHjiKDa18UvDUcTfJBYBcUo8becXtNGWTO4hNVEXB+qUHWuiM3nCgyk5K9cY7Oc0ER7AM0UIoC0ylEjvBELwhC6Ijy3mZDqN/kKh4EG3lokR+hsgnJ2BipoY9+rOZ3GscXRA6bH7RkBigWW/MXO0fd+58HhtBgNxLiCJleHWm87KQY3PxzguqVz++ATsusKScaDwFkiKHJFxMziyLbKDvtKunrEjQ1jm4b2gAJo/S7nTC/u0rTFsGFePXpSQWqEy0g8i0km7BvxM/PLo7K9JIv/1gGyLXWHHwK31yIztqyqmTikvjN9NIAyg2BWGFeC6tMzyws1dTQuZb/h9DsluRmOAfMSvxW4= X-MS-Office365-Filtering-Correlation-Id: 71474cad-7485-4772-801f-08d36312bc34 X-Microsoft-Exchange-Diagnostics: 1; BLUPR0201MB1857; 2:AfMAXk0/bOgIwuoTz+5WWihL8VOxDgZJa7aykkL6bA/FCU6yttTv88+5dT0zVHKJD7P6p9BbJaKjbbosaQZX8N3uiFq3+mU4dxvT28E5qtilZus7GEjgp1aAs4G1O8xq/j18/zUpW5MaqJUOFZEM19rq4KwB2jvWWuPtJ74R9jwMusWaCVzhnxn1lAjKSH64; 3:a2grC/Jsc0dxR3mLWfsLu0i+TajF2zdna+ICzb3hlSIj4SAJJ1ZXoTpSLOW2z8IO4PmD93rjnBLgbhsYTwJVrJSMgdjgaUvxwkYr4IViZyZhlIfF7Na6bugtUY60v+GlcalG1DQPDga/YYPldHLHZg3XQGjUG+evOlHXzISKZMcKHEQ/Q+OrfMLY5MLEeQUKmwgAq8UUzqMf+Aq6YK6LGlhH0P9QAcDosXEDmmSzvIC2KlZWEiYVIRxxqhTeJYbzre00Bd0btKLcGPakTRGeqA== X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(8251501002); SRVR:BLUPR0201MB1857; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0201MB1857; 25:XB9WfohMpgRbnxlzW5zRmriXo9ZQAI/SeFNwBcvfK4G0yCs3EqWNzaLbnm7jJ1e20zfT7STGpo5w61XUXfAIgtBe9+QqSBLbfNTi9C9OU2nWkhqI8+nC5j00i1jPkDgCwxyAYz1xDsN+riBuLu7LX9clYyS+8oxagtmcUWQuXS6x3GkhLdXkVTSfpfUp2dLBvdi9jrbVF+KZz75mNFA610rKVkHnZDsu8f/DJxCCLWMdinXvJiL5+MvIGZEIjoMNuqkn9nlVJ0UQZQpT2zMZ1MHYiVRypOhdjiS9DUufcG0bkahDPXzGrjx12AbcYpWg+jgv6rrJKYiUYl7FcCC6nXCWgd0WuUuN4xWJ5BNfl3JpzwY4HNj+YnTQlrkMBrrMfnaUg/w+dQVvujS/Sc6AoVi10g9LzyFs1D/veeenhEVi44ghG8ueyDrh0Srrr2RaVvpC3+t60peFM/sj4olYdehixvSbK5CA20RPYZseK227cE0yshdcz884FYuq1JHNr43R5b/2J3u0hCezQgoi6/6AwNuW3C7WMa6Cr62m0mVLtBTktqP1A9HH9qsK23XXkQmO3BSnw6OU0czWx0ZrTGTzAfssWL7vJHLtcY+E7mgLZ+d9zQD/ESzaDZqJU3IvXmAv+vAs0jaQzmT2tjW13769ZThfOm35EHGblh/NYduhHeRYot1R1IQ35jpRVU39A8rUV59rXCp4oJy4tRBO8g== X-Microsoft-Exchange-Diagnostics: 1; BLUPR0201MB1857; 20:V1pDidqwJpXnUXTfT41vGWzmeVbdWN4ewIotrb9gQjRcgTiOV4m31EjAolXCHFGLHWHAdIEc/2yiqDnTNHkRU0bLJ6GUsQKu1K9W0TO1MmMTaM4ZfhoCpG+IOqG4iKyAqZ3AHOkuP/4wthDtBaEuG1cvF4U6MzxTQjdo6kDWqn6oWdcCOTste3gwfpBAAQmBU8nswxgSHw+o8LL/Axc+L3fVsudNJbbWzcj19aqu7HRTcWAaGYmEfHK/EOzPwL3Gz9vs8fEhftW12tdhhvaEklFyEBs6ZIgjUftCv0I3Vxy+mpk7F6gGJyDROI3tKg9UZR+arjTsXSvFSmxnJBzYG3DqzzGUe06GFYTA1gctg2eKpnIIlhGuQ+NPXGhGEsFjufd2r4eEI6uKftT5CCkwUW/8s9358/p8eUSpgzbJFYX7NnYbmwVY3vHqSkIONtQtTgTxJVeWSto05TbB5vJmfslGT6fGKjQtmp9BNx4Xh3vzbZtuzBveQ37TDy5J7MmJ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(235219596079481); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(13018025)(13016025)(8121501046)(10201501046)(3002001)(2002001); SRVR:BLUPR0201MB1857; BCL:0; PCL:0; RULEID:; SRVR:BLUPR0201MB1857; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0201MB1857; 4:2MYX7b7vwlxbv6s2DLqhKsR9jrANvM+VgVSze2BDWAA2UmzBvq1lwxpvRCVoVrXCK7dpr5dDdLqfPPtudJ4xCAxsO8I5JwAlh1XD1IHuJwn8rYE3Ti5Sio2nYGlEdyvtHvTbCnnuWAEG3uZ28cmyXKN5WneWbW+B1yGEXm0ULqe7fvANvIvAQYPonAI0jMxakbn8Kf2MB9jLIDMmBMFyT82MbvhOhg/kTkNtQcYotq/IKw0ycpsYmt2YuefrFS7dxXSoz6cYfxN3/BK5vDo7FMqnVAepKESVGwYdH0TJdAMnuZKuSvjfUjo3YVTZR/yvHKGIdAz5++Tgoeaxiz3/2kRjK5O79AR3xq5ySyQ/4EHTwLIz3FsHIgNL8JITjwZl6NnesddzmlE7MhsRV90fXS3cDvmYRZtjDUCPs+wSWVqq/+J9ghpW2e0odKasudG9zE/CTuqiztNupUIHuZllHI4E/JOFu8JZHXJurbR8CyA= X-Forefront-PRVS: 0910AAF391 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTFVQUjAyMDFNQjE4NTc7MjM6NDhwU3ZJSERrY1B6MVZkSStNazVOQVZr?= =?utf-8?B?Y2dVOWRWdXhMaHIvUzJ1VHNTYmxBT0VDT0I1RzRENzJPVXVzNERsMjVWWFZ4?= =?utf-8?B?Vkl5M0N4cWdyYnQ4a3VQNDdIS3ZBK1lsK3p2OUNKMkRkTnB2b1Awd3Nxd3Ur?= =?utf-8?B?RnA3Y0d3VFJTQW4rK3JwUFJ0NGNGMVk1Y01tZDlaUmFaeHMycU8wVTBmMHFM?= =?utf-8?B?Wll3RGdMT3ZwR2owbjhDeVlKNDJjMXJyY3R6M0pFeTNCQU9kZFhBTlFQT1Q4?= =?utf-8?B?Y1dySHFxRDlMWlROUHRya1pZaUtaT2tzYmc1T2RyM2J0SDNBQ2YzcDRxWlBW?= =?utf-8?B?ajBVdm5HNy80NkQyUXlsOEp4cUY3eTl1SDRrR0psZnpxTnV1eHJxSm1UNk5j?= =?utf-8?B?MGdmUTlRZ0wybjlHZ2ZrTFg3UzJ4dDV3aXZlN3dOQ2tsK3hJVEM4YUN4OTRz?= =?utf-8?B?STN1OXdWOFFNYnVPRFB4Z1pQRlJ4c0s0Rmh2K0JOamg4TnpybFZQT2FyVDR1?= =?utf-8?B?Vm83KzI0NWd3OXFVcHd2blYyTk03WWc0QkpGWFhKdDZrVFIzaWpDZ3A3TUpT?= =?utf-8?B?TGlCR2JmbjR4UzBOT0ZLbEMzNHBORzNBamNyQ2R2aGJLQmpiYTlySDBVNUJ4?= =?utf-8?B?Q3NRRCtoSUM4aElibkhHRXVHOWFXNnJBR2IrV1NiSDlHM205cFpiS0xuRXhW?= =?utf-8?B?RVUvTFpqaGxKek5JOE1KeVU3UDkyMXBIZVpPYUZ3ZHRQWEpiRXhuS0Vpejc0?= =?utf-8?B?b2hpTDFISUo4aCtiWjZ2NUJxeVlYNjZ0cExleUZ3TG1NMGk0WlVqcEV6eHN0?= =?utf-8?B?aXhwVkRwTE4xL2tXMzNOSllvQ1NZQ3h3TTVZU0xZbkNtVko3blBxRVp6SmIz?= =?utf-8?B?cHBUbHNVaStBWEp3d2VDNnA4YWtxYkVlUm41QzJpYWVFQmh4UnByMHBDRnY0?= =?utf-8?B?YkdsaDg4T052eVhFbnFObmZ6RG83SnpTZ09FRWtQR0xqd1lNVTZUOFBPRDNP?= =?utf-8?B?cFNFQVE1dkozWENEckcvRzE5SFd6ZjFsL0xNS2dNWEo3MzBmbnJnOG0xUmpB?= =?utf-8?B?cHphQXhWaTlCV2dGbzhxZVVPYTcreGJLZUlpczRTdmxnaGM1bE1ZdzlRNGVq?= =?utf-8?B?V2c1K3VNVmpBWCs0WVlXWFpNNGlBUDk3VDZKVTQyVEl3Wk12Szlrd01UeFYy?= =?utf-8?B?Q1VVcEVNU21UcFE2ZmIrOXNPc2xCaWxqQmJRSXRWc1JJcUtoRHl2TFZWa1BF?= =?utf-8?B?NURHK0VMSVdBc1VrR1B6NFNUeFQvdW52L3R1aFBtNDNaMVU0cjJyRnFpcVU0?= =?utf-8?B?bW02QmY4N2huNERHcDdGOE9Hb09aNlV5emhMSjRqaXhqRGJOaDhkZm1HTUhM?= =?utf-8?B?TVhiMDRrNHJmTTU0VUxPYXhSbU1udTM4OWpvMFo1S1NjU2xpK1lpU3YyM3V5?= =?utf-8?B?M3VZVWd1c2tNeFU4L2Q3M0FPQTArRTJub1RqaXhCbjg0TTJ5VnhjS3l4R0wx?= =?utf-8?B?bDgrZkVxT0xleTZ5UkV5M21CbEQrZXZ0cGF4ZnE4VmFJaU42K2lFNXZZc0lv?= =?utf-8?B?RWhzRjVTZHVNVjd3V09wSEdCNXhvYVl2dkFETi96dnpSNEkwQmlNSHVndld0?= =?utf-8?B?NEgvcWd1dXB3aENyR1hxZW5mUmJ5UlQyQTAxQ1g2YkVVd0VkemNiNlpQaVdU?= =?utf-8?Q?ytEPE8qoOoHkR6OZCf+9f98cBa9Mdp7kETVeU/O+T?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0201MB1857; 5:OOb56baajD0iUgXXdU5CJuzvvaEDBUhJAOdKnLMGcpdS8TVJv/3OTR/yO6+sjAwAmsLQFMASGSkfxZdQRrSLKNw1Am6Vi7bSnHix3sj1ZLPDNVTzdZWsVZuceCVU049MotnIcd8re6wh1/xeFDOFEg==; 24:kfhaykJvg75D79J/cWtlWaXJmmrmfhD0A8fbf8EcscBxdU+yEP8KiGt6zQtkzpnM/R5+mGfMANOvnZTRjneFsQ==; 20:NJ4pG6sLkArX2X9hkVlFypKpZ7j1q3nk6xz+1mhgol+5P1VeziOWPnWERJ9KRiwxeIwRzh7GwcwgfB5TUigxmwTXb80OayRV1OAxxjUh4Hhb5uf5o0kuwWH6H8P7v7eXmiZgD7wNA1k+dJ472lnzUlgP9YOraYazVDSUgKyaSeDTsz6HOFLEr+qm6U7KP67y1P+mitQexad4AaAEMVrIYErJkycXJ1qDpkfa0gZxmS6TaPNH9FNi0TAF8QXNgZLM SpamDiagnosticOutput: 1:22 SpamDiagnosticMetadata: 00000000%2D0000%2D0000%2D0000%2D000000000000 X-OriginatorOrg: sandisk.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Apr 2016 20:40:49.9378 (UTC) X-MS-Exchange-CrossTenant-Id: fcd9ea9c-ae8c-460c-ab3c-3db42d7ac64d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=fcd9ea9c-ae8c-460c-ab3c-3db42d7ac64d; Ip=[63.163.107.21]; Helo=[milsmgep15.sandisk.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0201MB1857 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org X-Spam-Status: No, score=-3.2 required=5.0 tests=AXB_X_FF_SEZ_S,BAYES_00, DKIM_SIGNED, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY, URIBL_BLACK 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 Split discard requests as follows: * If the start sector is not aligned, an initial write request up to the first aligned sector. * A discard request from the first aligned sector in the range up to the last aligned sector in the discarded range. * If the end sector is not aligned, a final write request from the last aligned sector up to the end. Note: if the start and/or end sectors are not aligned and if the range is small enough the discard request will be submitted with bi_size == 0. Signed-off-by: Bart Van Assche Cc: Jan Kara Cc: Christoph Hellwig Cc: Mike Snitzer Cc: Martin K. Petersen Cc: Dmitry Monakhov Cc: Darrick J. Wong Cc: Sagi Grimberg --- block/blk-lib.c | 4 ++-- block/blk-merge.c | 55 ++++++++++++++++++++++++++++++------------------------- block/blk.h | 3 +++ 3 files changed, 35 insertions(+), 27 deletions(-) diff --git a/block/blk-lib.c b/block/blk-lib.c index 9a93ca4..d78ded5 100644 --- a/block/blk-lib.c +++ b/block/blk-lib.c @@ -30,7 +30,7 @@ static void bio_batch_end_io(struct bio *bio) * Return the largest number that is less than or equal to @s and for which * the remainder of the division by @granularity is @alignment. */ -static sector_t blk_round_sect_down(sector_t s, u32 granularity, u32 alignment) +sector_t blk_round_sect_down(sector_t s, u32 granularity, u32 alignment) { sector_t tmp = s, res = s; u32 remainder; @@ -219,7 +219,7 @@ int blkdev_issue_write_same(struct block_device *bdev, sector_t sector, } EXPORT_SYMBOL(blkdev_issue_write_same); -static void bio_add_zero_pages(struct bio *bio, sector_t nr_sects) +void bio_add_zero_pages(struct bio *bio, sector_t nr_sects) { unsigned int sz; int ret; diff --git a/block/blk-merge.c b/block/blk-merge.c index 2613531..fd15606 100644 --- a/block/blk-merge.c +++ b/block/blk-merge.c @@ -16,42 +16,47 @@ static struct bio *blk_bio_discard_split(struct request_queue *q, struct bio_set *bs, unsigned *nsegs) { + struct bio *wr; unsigned int max_discard_sectors, granularity; int alignment; - sector_t tmp; - unsigned split_sectors; + sector_t start, start_r, end, end_r, skip; *nsegs = 1; /* Zero-sector (unknown) and one-sector granularities are the same. */ granularity = max(q->limits.discard_granularity >> 9, 1U); - + alignment = (q->limits.discard_alignment >> 9) % granularity; max_discard_sectors = min(q->limits.max_discard_sectors, UINT_MAX >> 9); - max_discard_sectors -= max_discard_sectors % granularity; - - if (unlikely(!max_discard_sectors)) { - /* XXX: warn */ - return NULL; - } - - if (bio_sectors(bio) <= max_discard_sectors) - return NULL; - - split_sectors = max_discard_sectors; + WARN_ON_ONCE(max_discard_sectors == 0); /* - * If the next starting sector would be misaligned, stop the discard at - * the previous aligned sector. + * If the start or end sector are misaligned, issue a write same + * same request if the discard_zeroes_data flag has been set. */ - alignment = (q->limits.discard_alignment >> 9) % granularity; - - tmp = bio->bi_iter.bi_sector + split_sectors - alignment; - tmp = sector_div(tmp, granularity); - - if (split_sectors > tmp) - split_sectors -= tmp; - - return bio_split(bio, split_sectors, GFP_NOIO, bs); + start = bio->bi_iter.bi_sector; + start_r = blk_round_sect_down(start, granularity, alignment); + end = start + min(max_discard_sectors, bio_sectors(bio)); + end_r = blk_round_sect_down(end, granularity, alignment); + if (start == start_r && start < end_r) { + if (end == end_r && bio_sectors(bio) == end_r - start) + return NULL; + return bio_split(bio, end_r - start, GFP_NOIO, bs); + } + if (q->limits.discard_zeroes_data && start < end) { + end = min(end, start_r + granularity); + wr = bio_alloc_bioset(GFP_NOIO, end - start, bs); + if (WARN_ON_ONCE(!wr)) + return NULL; + wr->bi_rw = REQ_WRITE; + wr->bi_iter.bi_sector = start; + wr->bi_bdev = bio->bi_bdev; + bio_add_zero_pages(wr, end - start); + bio_advance(bio, wr->bi_iter.bi_size); + return wr; + } + skip = (min(start_r + granularity, end) - start) << 9; + bio_advance(bio, skip); + return NULL; } static struct bio *blk_bio_write_same_split(struct request_queue *q, diff --git a/block/blk.h b/block/blk.h index 70e4aee..31b13f9 100644 --- a/block/blk.h +++ b/block/blk.h @@ -36,6 +36,9 @@ extern struct kmem_cache *request_cachep; extern struct kobj_type blk_queue_ktype; extern struct ida blk_queue_ida; +sector_t blk_round_sect_down(sector_t s, u32 granularity, u32 alignment); +void bio_add_zero_pages(struct bio *bio, sector_t nr_sects); + static inline struct blk_flush_queue *blk_get_flush_queue( struct request_queue *q, struct blk_mq_ctx *ctx) {