Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1163582
| From | Dan Williams <dan.j.williams@intel.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH v6 18/21] nd_btt: atomic sector updates |
| Date | 2015-06-11 22:30 +0200 |
| Message-ID | <pAhgS-8jH-17@gated-at.bofh.it> (permalink) |
| References | <pAh7c-86n-3@gated-at.bofh.it> <pAh7c-86n-21@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Thu, Jun 11, 2015 at 1:11 PM, Dan Williams <dan.j.williams@intel.com> wrote: > From: Vishal Verma <vishal.l.verma@linux.intel.com> > > BTT stands for Block Translation Table, and is a way to provide power > fail sector atomicity semantics for block devices that have the ability > to perform byte granularity IO. It relies on the capability of libnvdimm > namespace devices to do byte aligned IO. > > The BTT works as a stacked blocked device, and reserves a chunk of space > from the backing device for its accounting metadata. It is a bio-based > driver because all IO is done synchronously, and there is no queuing or > asynchronous completions at either the device or the driver level. > > The BTT uses 'lanes' to index into various 'on-disk' data structures, > and lanes also act as a synchronization mechanism in case there are more > CPUs than available lanes. We did a comparison between two lane lock > strategies - first where we kept an atomic counter around that tracked > which was the last lane that was used, and 'our' lane was determined by > atomically incrementing that. That way, for the nr_cpus > nr_lanes case, > theoretically, no CPU would be blocked waiting for a lane. The other > strategy was to use the cpu number we're scheduled on to and hash it to > a lane number. Theoretically, this could block an IO that could've > otherwise run using a different, free lane. But some fio workloads > showed that the direct cpu -> lane hash performed faster than tracking > 'last lane' - my reasoning is the cache thrash caused by moving the > atomic variable made that approach slower than simply waiting out the > in-progress IO. This supports the conclusion that the driver can be a > very simple bio-based one that does synchronous IOs instead of queuing. > Copy / paste error... following 2 paragraphs were from the previous version of this patch and will be deleted when pushing upstream. > BTT stands for Block Translation Table, and is a way to provide power > fail sector atomicity semantics for block devices that have the ability > to perform byte granularity IO. It relies on the ->rw_bytes() capability > of libnd namespace devices. > > The BTT works as a stacked blocked device, and reserves a chunk of space > from the backing device for its accounting metadata. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH v6 00/21] libnvdimm: non-volatile memory devices Dan Williams <dan.j.williams@intel.com> - 2015-06-11 22:20 +0200
[PATCH v6 01/21] e820, efi: add ACPI 6.0 persistent memory types Dan Williams <dan.j.williams@intel.com> - 2015-06-11 22:20 +0200
[PATCH v6 11/21] libnvdimm, nfit: add interleave-set state-tracking infrastructure Dan Williams <dan.j.williams@intel.com> - 2015-06-11 22:20 +0200
Re: [PATCH v6 11/21] libnvdimm, nfit: add interleave-set state-tracking infrastructure "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2015-06-17 23:50 +0200
[PATCH v6 04/21] libnvdimm, nfit: dimm/memory-devices Dan Williams <dan.j.williams@intel.com> - 2015-06-11 22:20 +0200
Re: [PATCH v6 04/21] libnvdimm, nfit: dimm/memory-devices "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2015-06-17 23:40 +0200
[PATCH v6 06/21] libnvdimm, nvdimm: dimm driver and base libnvdimm device-driver infrastructure Dan Williams <dan.j.williams@intel.com> - 2015-06-11 22:20 +0200
[PATCH v6 12/21] libnvdimm: namespace indices: read and validate Dan Williams <dan.j.williams@intel.com> - 2015-06-11 22:20 +0200
[PATCH v6 15/21] libnvdimm: write pmem label set Dan Williams <dan.j.williams@intel.com> - 2015-06-11 22:20 +0200
[PATCH v6 09/21] libnvdimm, pmem: move pmem to drivers/nvdimm/ Dan Williams <dan.j.williams@intel.com> - 2015-06-11 22:20 +0200
[PATCH v6 03/21] libnvdimm: control character device and nvdimm_bus sysfs attributes Dan Williams <dan.j.williams@intel.com> - 2015-06-11 22:20 +0200
Re: [PATCH v6 03/21] libnvdimm: control character device and nvdimm_bus sysfs attributes "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2015-06-17 23:40 +0200
Re: [PATCH v6 18/21] nd_btt: atomic sector updates Dan Williams <dan.j.williams@intel.com> - 2015-06-11 22:30 +0200
Re: [PATCH v6 19/21] libnvdimm, nfit, nd_blk: driver for BLK-mode access persistent memory "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2015-06-17 23:50 +0200
csiph-web