Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754645AbdDOS4R (ORCPT ); Sat, 15 Apr 2017 14:56:17 -0400 Received: from mail-dm3nam03on0058.outbound.protection.outlook.com ([104.47.41.58]:56073 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752985AbdDOS4O (ORCPT ); Sat, 15 Apr 2017 14:56:14 -0400 Authentication-Results: fb.com; dkim=none (message not signed) header.d=none;fb.com; dmarc=none action=none header.from=cnexlabs.com; From: =?UTF-8?q?Matias=20Bj=C3=B8rling?= To: CC: , , =?UTF-8?q?Matias=20Bj=C3=B8rling?= Subject: [GIT PULL 00/19] LightNVM patches for 4.12. Date: Sat, 15 Apr 2017 20:55:34 +0200 Message-ID: <20170415185553.16098-1-matias@cnexlabs.com> X-Mailer: git-send-email 2.9.3 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Originating-IP: [193.106.164.211] X-ClientProxiedBy: AM5PR0701CA0069.eurprd07.prod.outlook.com (10.169.145.159) To CY4PR06MB2774.namprd06.prod.outlook.com (10.175.117.142) X-MS-Office365-Filtering-Correlation-Id: 8ab14e53-d780-4687-febd-08d4843115f8 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:CY4PR06MB2774; X-Microsoft-Exchange-Diagnostics: 1;CY4PR06MB2774;3:cQ/eOh3w5WgH29Te6mRtm97XcdtIng2HYmWkZZ0/OXxYxa0IcILAYPd09nx7Mw/5vWYfoy6GxN8SX7ZwBMsMZCpcJ4AolJplSrpU1LZhQE1o/xJtXyX5FZdr9OjxcChi9AtQjH2UBLcteMdu4NouBelntSh6BM3IABGjqrXtuFTw87LRvnn1Sq1hBnTCPlXJRCm814j1hRRzwBjuEJBqKmyF2HYATZu+Q85mFarkjxbOA0dNT6yXhlVZwsJCcGOsdpTOX7Kt4kZye9vlPMrRvPcgxbYmbYSdIY1E6Pr9LecYItjgSewvsItDhBgyukb45bqWW77l5XFkCnRXmxgq6w==;25:Rn9neA9nu6DtDdSCY+HsKRXXy9MZaRm6zLboXhA3R3TYjhpx0YX0TGHuG9F6psZUewC9UQWYVn7dEeuPdPSsdfHp1C2+aFLHDYpHGriwf7t9herqDL9CRGiH+xmYu7ge6uvb4PJtBV8EMCT99/y6iZ1BWRqlWPF6kDfyAozKiKUFwHk7klUjELziPR1u3An4DnmwWpXS5/wBKG1WBNtt9IKhuJMyrPfSM2WiYP3ppzPqcb4PF9H2CyHarfAt4IxB9bhOIJb/eGmuKQURV6qReOoqZAkc9ANBgwWzuME5B19VjFJTW1gUh2qUophHelO9pUqmLUpQqdi6x1BX5eq+n/HLK9aBb8taJNLzeSQpolFEyiR291F+UD9r6gomaMhm/rbYwrQ0HphRgItmMra1JVrOfN/UnB0PT/7Jv9T/FTVjTwJP5Yg0wh+fcaIFhyfssrlNqgsQGGms6SZ3RHFjdw== X-Microsoft-Exchange-Diagnostics: 1;CY4PR06MB2774;31:zZRSQQhITEluU59t4RhNys+5BcqeMeErIgVXo8MPIcHWCSCmzKr4rdqZ9IFdzrvFsQtIhsxw9EZyYVxo56mTgU9NAHxdz62We57D4twV6stBgLU0EyNAQitZLxZT7LmhbBx2bXbGds1yMLQN7ZsVg9mY4Bv+c6p1tTOWEKZ3VU7NFTVGqIgE6xmjBvWiiNS+lL9v52ZCev4cxE+hE8bVnYHIZu+64u1g5XO7JElmLpI4rNdfUQuKTD3BdWUfYHGt;20:6MILN7Sg7kcg+fCFT4iVJeuiJMHI2NCOoSJkyqBt2nJkwK28DWAYlI7FjANri0lePaSxG3leEPmmPJ1f2TX6JTiY9fNk3BT7rdg+izmoKu4mShPmzKyqvfD013Ht2RE76wY5TeD+jCAgFQKSJgtjuYfTOir6/iCqHKgdm9gC+Lc= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(166708455590820); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(6041248)(20161123564025)(20161123562025)(20161123560025)(201703131423075)(201703061421075)(20161123555025)(6072148);SRVR:CY4PR06MB2774;BCL:0;PCL:0;RULEID:;SRVR:CY4PR06MB2774; X-Microsoft-Exchange-Diagnostics: 1;CY4PR06MB2774;4:h6D5AaLmzXqg80DuWioxLDTrGeZLEVKtspXDx2qhJ7zsm7GsqF6Ug/DrIytWm9sqLCoqySajiKcgSm1bUitAgDln9VrX/CFCarINDu7mVwEFZvJLO2XtiFsYhwYVytUXKQ4kLrSDn0XIL36hKysEr7LpoClCswvhxBY+FBDAD6apnm8YGuHygZCsYyZFKYD9dVDqHHzqmCn8Xi5UkX8zz6LYG6pR3w4YdUJ7y4VHH3kb6d8UlPDMQuf4cFMZc6VdA8TshEr0Tr5ncNcqC5J6HkmE7V+G5NjUhls/6iSunhFtlhGpZ+Ucc426WRWytIENTXvlQB31UhvChCkyvI8Eyqsniml9sdKDRSQf5aPx8bfS4IZUElWrEZLwkFkOLTzQgKf0JmmDYVa2mZhQaMkL02VvOKdffx93wmhYpamhXKUqDFwQK/luct4uVpxbx3Xfk/uq/Jxvohjmd3M5qFwuzl0BCH9+cj1c8KthPbUYUs3aLf4BHnJ8xlgkgT/2KL9MQnqiPJp4UUDiMxvm85hZJh4i6Uy7WcefVx165BSc5WRy31yJN0SOaLD6KEPA0cefTYYjco7ruWDSxW9pUU34XLz8rbcpNDvJHmB8lmj1HlWateqwApjd62j7/FsOUZTx6IhMf1y3ulyIRdTVdcFJum2FPRbU6JkR3gDy6jCePa8F13NF6GxT5ClYKDxRrZbogiAOihEWLthMeLkBdOw3yuGyEqV7wMTCFjx8y37DIW4= X-Forefront-PRVS: 02788FF38E X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(39400400002)(39450400003)(86362001)(305945005)(1076002)(6916009)(6666003)(25786009)(6486002)(2906002)(6306002)(3846002)(6116002)(2870700001)(54906002)(189998001)(53936002)(53416004)(107886003)(110136004)(5660300001)(38730400002)(50986999)(2351001)(4326008)(66066001)(5820100001)(23676002)(81166006)(47776003)(42186005)(36756003)(33646002)(50226002)(8676002)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR06MB2774;H:skyninja.cnexlabs.com;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjA2TUIyNzc0OzIzOnFyNzBwME91c3VJVytmVVF6cmtCL09XdHBZ?= =?utf-8?B?NkdsRDY1WUY4cE9jWGFyZlhudUFWTnJjZjJGYzcvSWI3ZzdteklMa202Y2hJ?= =?utf-8?B?NTBaeHNsWDVkYWZvWTVvbER0ODdtY0UzQytyQnp2WWxKZzZEbHQzUFRwWGF1?= =?utf-8?B?cnIzR0cxVVRKRXJ6MWV0RUgyMFpia095KzQ1MHdjbkdNb05KcWV6Ri91OU9j?= =?utf-8?B?Mml1dU5kYzZyNWtEaWRyRWFtVW93TW5QYkw2NU1aR041UWc1RW50b0JSNXVC?= =?utf-8?B?QkFDNTJjQ2hXaTlFdGVKQjU5Lzg2ZndzTHVQeG5XaHNZb0tEVElBKzdNb1Uz?= =?utf-8?B?bFoyc2oyNmJFU2prbk5BSTkybzdoNERCZDNKVFRrOXF4Nm93VVpCV0tYK1RR?= =?utf-8?B?NWJuYmpTbDhuYms4cnFJU0NuQWZ3ajg5cDJUaTJLTmlwSm91RjRlTEtFVlhB?= =?utf-8?B?ZU13UzNleVZQMUVXaWxzSTk1LzRDYVJvYmJDK2dOeHZ5SmJVdTJqYnFrZ3NG?= =?utf-8?B?ZVI2RTBnVGx2OXdQYlV4MzhhL0ZycitPUis2bUZ3NUVDcnVuRUlORmdEUG1k?= =?utf-8?B?RWRSUCtMNnlYK1I2MU96NWV1cS80eUFtWm5Eby9TSnJnNDVvVnpzT3ZGcDlY?= =?utf-8?B?Q1dsTVFQeDM1Z21ZekVGQXIrTThTVVgrcjhvK2VLTTNKN0pjYk9sbW9HSjNx?= =?utf-8?B?T1U5b1VwVXhZei9iTGViN0JLSUs5MTJ4ZFhBdFFXSTAweFUrTk10UHU5TkpY?= =?utf-8?B?MnIzdjVzV21hWGhhYTR6Qzdaek5RUHlOa0FzMmRZK1NRNnowejlISWZmRlI4?= =?utf-8?B?YVhmQWRuempWQ0JBNXBwTTZoazRHdit3QlVoazRQZTM3MHZyLzVLU25xS2lm?= =?utf-8?B?K1BZSk8vbEpuQ0hvWjJoakV2VWt5QXR0RlpYV2FjUnBzRUZLT1pNWFh1b1Bz?= =?utf-8?B?Q2NqdS9EcGdmVVJudmM2U2Z4SW02THIvSmdtRCs5VEhaWGxXbmFPNlVMckl0?= =?utf-8?B?M01wdmdkODNnb0l2VlRzZXNwNTVLNEpIbE9CVnM4dDNuK3BISUEyL0FRNlBx?= =?utf-8?B?NzJXUG9sVXJSOGR1aVUzcklEUWxUc2pBZTBPQSs3RDc4QitzdEpJZHVzeXBP?= =?utf-8?B?Uzh2R29HME9CY3IrakZMRC9FYm1Sc1g3ZFZET2RHTG8zc1laeDhLMThNcG0v?= =?utf-8?B?MWNJcndjWURMNmJCMGdtTjE2eXhEa21iNS9ERDZkdVVEV1FqU2FiemtUaTNt?= =?utf-8?B?OGNvM1VZUXJUSkQvaHpQZ0RWem9HWjY1b1hCeTZGK3p4aVFUOTIrbllSTWt6?= =?utf-8?B?QWZXVVo0RzdJRFE9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR06MB2774;6:Uz20hkln2Qv5Hs8L3qfRzY07CsJTcBLSV4NkzPN6aVzPxcf08p5Bfq305ybseADNTIvZj9XyWYHuGqwZ66cOet0zokCyUtLVaDXUb4HXrO15KKD3YV0e7fQ/rNnvNdi7eyvNz5ZIM7yDrp9gYj6BhDA6SDLTxRpXBQsh4kYqZumjHaMoAVrfGXAoRnEs/XabwJCjirdcl+jwfJqMEFCiGSF+G9GUZDABHBEoBji30RDqM/nmnIGPLsIgT5hCZiycaHNPHgySfDItYrsKk4+rivb7MLhsnHZ2xdn508eUNRMKjaJOAP2jLNa8I4twbb7X4sPW18c9eJ5WG6wkPd1isSvJslzhqDmTa0Aa1YuUL+O/BNC78FSDV7YylfnpmgXUCL9TOgRADrb+N4lQGKaPhnQBvtrgBjVDefcUbVvGrdfmG0DyDGfZfOoSb7MSC9CUuibA/PCZck9s3sKl5ianCQ==;5:38q8hoMvb5tUVG4F6uP5v95K+iKJtDAHS/2DXx1qZ5/DlL/B0o/lC6yBcVcW7wPVwD6xcLI/sGXYwL6U1u0LvipWz8d9qFJJZX0S4iMINLCAqutCM7FQsN2xrhYoZn9ggDIPvw6FvGh/PY1qESjmJQ==;24:cCsTSBA/Nsz03yO28hq/KEz1x82vXXuHMa5iSV7ItBKAndF7HlGbNt2hVkjDDZwwZMeJ/mW+WUtvHrQqaqIxDFo20IPEvo8jhbOleKkQA+U= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR06MB2774;7:nRpQpc8dAjlwG+JXAxFpc05d2gSk55LG3PWgNsEQpdEcZmxqLNjn2bWkMX5L5tkapM+rPmNoV5fNoh7S1oIS00tUK8EyD3vOQ7KEIcOM/VNzQwqvcStQTYYq9VY7N1G3HTU2hOXNHZr2Myj/BsVO0C6J/SU/rgDZxIynzCgTM85KfpldGkLHjkgvMiBfd/H54M8efzu3BNDgHxg02Kofo5Xh8JykBZJBptB1ZPF3rJsMO4juzRZ9Zy1D/rBdXVHzQNZMiD9P232BhOOyvRrmVPGsHcsIbaI+KNPU6TegpvUAXlS1nuW8I/HPgOY64c0/TNrAEI5q+/Y5NP83e//f9A== X-OriginatorOrg: cnexlabs.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2017 18:56:11.4188 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR06MB2774 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 5061 Lines: 125 Hi Jens, With this merge window, we like to push pblk upstream. It is a new host-side translation layer that implements support for exposing Open-Channel SSDs as block devices. We have described pblk in the LightNVM paper "LightNVM: The Linux Open-Channel SSD Subsystem" that was accepted at FAST 2017. The paper defines open-channel SSDs, the subsystem, pblk and has an evaluation as well. Over the past couple of kernel versions we have shipped the support patches for pblk, and we are now comfortable pushing the core of pblk upstream. The core contains the logic to control data placement and I/O scheduling on open-channel SSDs. Including implementation of translation table management, GC, recovery, rate-limiting, and similar components. It assumes that the SSD is media-agnostic, and runs on both 1.2 and 2.0 of the Open-Channel SSD specification without modifications. I want to point out two neat features of pblk. First, pblk can be instantiated multiple times on the same SSD, enabling I/O isolation between tenants, and makes it able to fulfill strict QoS requirements. We showed results from this at the NVMW '17 workshop this year, while presenting the "Multi-Tenant I/O Isolation with Open-Channel SSDs" talk. Second, now that a full host-side translation layer is implemented, one can begin to optimize its data placement and I/O scheduling algorithms to match user workloads. We have shown a couple of the benefits in the LightNVM paper, and we know of a couple of companies and universities that have begun making new algorithms. In detail, this pull request contains: - The new host-side FTL pblk from Javier, and other contributors. - Add support to the "create" ioctl to force a target to be re-initialized at using "factory" flag from Javier. - Fix various errors in LightNVM core from Javier and me. - An optimization from Neil Brown to skip error checking on mempool allocations that can sleep. - A buffer overflow fix in nvme_nvm_identify from Scott Bauer. - Fix for bad block discovery handle error handling from Christophe Jaillet. - Fixes from Dan Carpenter to pblk after it went into linux-next. Please pull from the for-jens branch or apply the patches posted with this mail: https://github.com/OpenChannelSSD/linux.git for-jens Thanks, Matias Christophe JAILLET (1): lightnvm: Fix error handling Dan Carpenter (3): lightnvm: pblk-gc: fix an error pointer dereference in init lightnvm: fix some WARN() messages lightnvm: fix some error code in pblk-init.c Javier González (12): lightnvm: submit erases using the I/O path lightnvm: rename scrambler controller hint lightnvm: free reverse device map lightnvm: double-clear of dev->lun_map on target init error lightnvm: fix cleanup order of disk on init error lightnvm: bad type conversion for nvme control bits lightnvm: allow to init targets on factory mode lightnvm: make nvm_free static lightnvm: clean unused variable lightnvm: fix type checks on rrpc lightnvm: convert sprintf into strlcpy lightnvm: physical block device (pblk) target Matias Bjørling (1): lightnvm: enable nvme size compile asserts NeilBrown (1): lightnvm: don't check for failure from mempool_alloc() Scott Bauer (1): nvme/lightnvm: Prevent small buffer overflow in nvme_nvm_identify Documentation/lightnvm/pblk.txt | 21 + drivers/lightnvm/Kconfig | 9 + drivers/lightnvm/Makefile | 5 + drivers/lightnvm/core.c | 124 +-- drivers/lightnvm/pblk-cache.c | 114 +++ drivers/lightnvm/pblk-core.c | 1655 ++++++++++++++++++++++++++++++++++++++ drivers/lightnvm/pblk-gc.c | 555 +++++++++++++ drivers/lightnvm/pblk-init.c | 957 ++++++++++++++++++++++ drivers/lightnvm/pblk-map.c | 136 ++++ drivers/lightnvm/pblk-rb.c | 852 ++++++++++++++++++++ drivers/lightnvm/pblk-read.c | 529 ++++++++++++ drivers/lightnvm/pblk-recovery.c | 998 +++++++++++++++++++++++ drivers/lightnvm/pblk-rl.c | 182 +++++ drivers/lightnvm/pblk-sysfs.c | 507 ++++++++++++ drivers/lightnvm/pblk-write.c | 411 ++++++++++ drivers/lightnvm/pblk.h | 1121 ++++++++++++++++++++++++++ drivers/lightnvm/rrpc.c | 25 +- drivers/nvme/host/lightnvm.c | 42 +- include/linux/lightnvm.h | 13 +- include/uapi/linux/lightnvm.h | 4 + 20 files changed, 8165 insertions(+), 95 deletions(-) create mode 100644 Documentation/lightnvm/pblk.txt create mode 100644 drivers/lightnvm/pblk-cache.c create mode 100644 drivers/lightnvm/pblk-core.c create mode 100644 drivers/lightnvm/pblk-gc.c create mode 100644 drivers/lightnvm/pblk-init.c create mode 100644 drivers/lightnvm/pblk-map.c create mode 100644 drivers/lightnvm/pblk-rb.c create mode 100644 drivers/lightnvm/pblk-read.c create mode 100644 drivers/lightnvm/pblk-recovery.c create mode 100644 drivers/lightnvm/pblk-rl.c create mode 100644 drivers/lightnvm/pblk-sysfs.c create mode 100644 drivers/lightnvm/pblk-write.c create mode 100644 drivers/lightnvm/pblk.h -- 2.9.3