From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934204AbcBDNI3 (ORCPT ); Thu, 4 Feb 2016 08:08:29 -0500 Received: from mail-wm0-f53.google.com ([74.125.82.53]:38169 "EHLO mail-wm0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933702AbcBDNI0 (ORCPT ); Thu, 4 Feb 2016 08:08:26 -0500 From: "=?UTF-8?q?Javier=20Gonz=C3=A1lez?=" X-Google-Original-From: =?UTF-8?q?Javier=20Gonz=C3=A1lez?= To: mb@lightnvm.io Cc: linux-kernel@vger.kernel.org, linux-block@vger.kernel.org Subject: [RFC 0/4] lightnvm: add write buffering to rrpc Date: Thu, 4 Feb 2016 14:08:15 +0100 Message-Id: <1454591299-30305-1-git-send-email-javier@javigon.com> X-Mailer: git-send-email 2.1.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, This patchset adds write buffering to rrpc. This is necessary to support writes that are smaller than the actual flash controller page size. Typically, these are larger tahn 4K (e.g., 64K) since they are organized organized in several 4K sectors and planes. The code can be tested on the lightnvm enabled qemu, built on top of Keith Busch's qemu-nvme [1]. At the moment, different flushing strategies are enabled by flags. I am now working on flushing the writer work queue when syncs are not aligned with the device's page size, but this should not change the general architecture. Any feedback on the architecture, design and implementation are more than welcome. Thanks, Javier [1] https://github.com/OpenChannelSSD/qemu-nvme Javier González (4): lightnvm: precalculate controller write boundaries lightnvm: add write buffering for rrpc lightnvm: read from rrpc write buffer if possible lightnvm: add debug info for rrpc target drivers/lightnvm/core.c | 10 + drivers/lightnvm/rrpc.c | 1233 ++++++++++++++++++++++++++++++++++++++-------- drivers/lightnvm/rrpc.h | 93 +++- include/linux/lightnvm.h | 11 +- 4 files changed, 1138 insertions(+), 209 deletions(-) -- 2.1.4