From: "Verma, Vishal L" <vishal.l.verma@intel.com> To: "Elliott@hp.com" <Elliott@hp.com> Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "mingo@kernel.org" <mingo@kernel.org>, "neilb@suse.de" <neilb@suse.de>, "hch@lst.de" <hch@lst.de>, "Williams, Dan J" <dan.j.williams@intel.com>, "axboe@fb.com" <axboe@fb.com>, "hpa@zytor.com" <hpa@zytor.com>, "linux-nvdimm@lists.01.org" <linux-nvdimm@lists.01.org>, "gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>, "luto@amacapital.net" <luto@amacapital.net>, "david@fromorbit.com" <david@fromorbit.com> Subject: Re: [Linux-nvdimm] [PATCH v2 19/20] nd_btt: atomic sector updates Date: Mon, 18 May 2015 22:38:11 +0000 [thread overview] Message-ID: <1431988690.15857.31.camel@intel.com> (raw) In-Reply-To: <94D0CD8314A33A4D9D801C0FE68B40295A9097E5@G9W0745.americas.hpqcorp.net> On Sun, 2015-05-17 at 01:19 +0000, Elliott, Robert (Server Storage) wrote: > > -----Original Message----- > > From: Linux-nvdimm [mailto:linux-nvdimm-bounces@lists.01.org] On Behalf Of > > Dan Williams > > Sent: Tuesday, April 28, 2015 1:26 PM > > To: linux-nvdimm@lists.01.org > > Cc: Ingo Molnar; Neil Brown; Greg KH; Dave Chinner; linux- > > kernel@vger.kernel.org; Andy Lutomirski; Jens Axboe; H. Peter Anvin; > > Christoph Hellwig > > Subject: [Linux-nvdimm] [PATCH v2 19/20] nd_btt: atomic sector updates > > > > 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 ->rw_bytes() capability > > of provided nd namespace devices. > > > > The BTT works as a stacked blocked device, and reserves a chunk of space > > from the backing device for its accounting metadata. BLK namespaces may > > mandate use of a BTT and expect the bus to initialize a BTT if not > > already present. Otherwise if a BTT is desired for other namespaces (or > > partitions of a namespace) a BTT may be manually configured. > ... > > Running btt above pmem with a variety of workloads, I see an awful lot > of time spent in two places: > * _raw_spin_lock > * btt_make_request I'm curious about why _raw_spin_lock might be taking up so much time - does the test system have more than 256 CPUs? Even ignoring Dan's fix for nr_cpus which will allow the lockless path optimization to kick in (coming in v3), the lane spinlocks should be largely uncontested unless you have more than 256 CPUs. One explanation could be that this is being dominated by 'map_locks' - I'd need to get my perf setup going again to find out. (The more I think about it, the more I'm convinced this is the case. Fortunately it is simple to reduce map_lock contention by increasing the number of locks). > > This occurs for fio to raw /dev/ndN devices, ddpt over ext4 or xfs, > cp -R of large directories, and running make on the linux kernel. > > Some specific results: > > fio 4 KiB random reads, WC cache type, memcpy: > * 43175 MB/s, 8 M IOPS pmem0 and pmem1 > * 18500 MB/s, 1.5 M IOPS nd0 and nd1 > > fio 4 KiB random reads, WC cache type, memcpy with non-temporal > loads (when everything is 64-byte aligned): > * 33814 MB/s, 4.3 M IOPS nd0 and nd1 > > Zeroing out 32 MiB with ddpt: > * 19 s, 1800 MiB/s pmem > * 55 s, 625 MiB/s btt > > If btt_make_request needs to stall this much, maybe it'd be better > to utilize the blk-mq request queues, keeping requests in per-CPU > queues while they're waiting, and using IPIs for completion > interrupts when they're finally done. > > > fio 4 KiB random reads without non-temporal memcpy > ================================================== > perf top shows memcpy_erms taking all the time, a function that > uses 8-byte REP; MOVSB instructions: > 85.78% [kernel] [k] memcpy_erms > 1.21% [kernel] [k] _raw_spin_lock > 0.72% [nd_btt] [k] btt_make_request > 0.67% [kernel] [k] do_blockdev_direct_IO > 0.47% fio [.] get_io_u > > fio 4 KiB random reads with non-temporal memcpy > =============================================== > perf top shows there are still quite a few unaligned accesses > resulting in legacy memcpy, but about equal time is now spent > in legacy vs NT memcpy: I take it memcpy_lnt_st_64 expects 64B aligned accesses? The BTT will always have some unaligned accesses - the map updates are 4B long. Flog updates are 16B long, but about half of them will not start at a 64B alignment due to how it is laid out. I'm open to hearing ideas about how this could be improved. One way, as Dan already said is reducing the number of metadata updates by configuring a larger (4K) sector size. > 30.47% [kernel] [k] memcpy_erms > 26.27% [kernel] [k] memcpy_lnt_st_64 > 5.37% [kernel] [k] _raw_spin_lock > 2.20% [kernel] [k] btt_make_request > 2.03% [kernel] [k] do_blockdev_direct_IO > 1.41% fio [.] get_io_u > 1.22% [kernel] [k] btt_map_read > 1.15% [kernel] [k] pmem_rw_bytes > 1.01% [kernel] [k] nd_btt_rw_bytes > 0.98% [kernel] [k] nd_region_acquire_lane > 0.89% fio [.] get_next_rand_block > 0.88% fio [.] thread_main > 0.79% fio [.] ios_completed > 0.76% fio [.] td_io_queue > 0.75% [kernel] [k] _raw_spin_lock_irqsave > 0.68% [kernel] [k] kmem_cache_free > 0.66% [kernel] [k] kmem_cache_alloc > 0.59% [kernel] [k] __audit_syscall_exit > 0.57% [kernel] [k] aio_complete > 0.54% [kernel] [k] do_io_submit > 0.52% [kernel] [k] _raw_spin_unlock_irqrestore > > fio randrw workload > =================== > perf top shows that adding writes to the mix brings btt_make_request > its cpu_relax() loop to the forefront: This is good data - we've thought about benchmarking an alternate strategy for the 'Read Tracking Table' - instead of a linear array, use a hash table (hash new_postmap into an RTT slot) . It will add false waiting due to hash collisions, but the writers won't have to walk the array - they can just hash into the right spot. Another option that Dan suggested could be instead of waiting in the cpu_relax() loop, we drop the lane, and start over with _acquire_lane. This way, we are waiting in the spin_lock stage, thus giving a chance to other threads/CPUs that resolve to the same spinlock to run. > 21.09% [nd_btt] [k] btt_make_request > 19.06% [kernel] [k] memcpy_erms > 14.35% [kernel] [k] _raw_spin_lock > 10.38% [nd_pmem] [k] memcpy_lnt_st_64 > 1.57% [kernel] [k] do_blockdev_direct_IO > 1.51% [nd_pmem] [k] memcpy_lt_snt_64 > 1.43% [nd_btt] [k] nd_btt_rw_bytes > 1.39% [kernel] [k] radix_tree_next_chunk > 1.33% [kernel] [k] put_page > 1.21% [nd_pmem] [k] pmem_rw_bytes > 1.11% fio [.] get_io_u > 0.90% fio [.] io_u_queued_complete > 0.74% [kernel] [k] system_call > 0.72% [libnd] [k] nd_region_acquire_lane > 0.71% [nd_btt] [k] btt_map_read > 0.62% fio [.] thread_main > > inside btt_make_request: > > ¦ /* Wait if the new block is being read from */ > ¦ for (i = 0; i < arena->nfree; i++) > 2.98 ¦ ? je 2b4 > 0.05 ¦ mov 0x60(%r14),%rax > 0.00 ¦ mov %ebx,%edx > ¦ xor %esi,%esi > 0.03 ¦ or $0x80000000,%edx > 0.05 ¦ nop > ¦ while (arena->rtt[i] == (RTT_VALID | new_postmap)) > 22.98 ¦290: mov %esi,%edi > 0.01 ¦ cmp %edx,(%rax,%rdi,4) > 30.97 ¦ lea 0x0(,%rdi,4),%rcx > 21.05 ¦ ? jne 2ab > ¦ nop > ¦ } > ¦ > ¦ /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */ > ¦ static inline void rep_nop(void) > ¦ { > ¦ asm volatile("rep; nop" ::: "memory"); > ¦2a0: pause > ¦ mov 0x60(%r14),%rax > ¦ cmp (%rax,%rcx,1),%edx > ¦ ? je 2a0 > ¦ } > > > ddpt zeroing out > ================ > perf top shows 27% in spinlocks, and 14% in btt_make_request (all in > the "wait if the new block is being read from" loop). > > 26.48% [kernel] [k] _raw_spin_lock > 14.46% [nd_btt] [k] btt_make_request > 13.14% [kernel] [k] memcpy_erms > 10.34% [kernel] [k] copy_user_enhanced_fast_string > 3.12% [nd_pmem] [k] memcpy_lt_snt_64 > 1.15% [kernel] [k] __block_commit_write.isra.21 > 0.96% [nd_pmem] [k] pmem_rw_bytes > 0.96% [nd_btt] [k] nd_btt_rw_bytes > 0.86% [kernel] [k] unlock_page > 0.65% [kernel] [k] _raw_spin_lock_irqsave > 0.58% [kernel] [k] bdev_read_only > 0.56% [kernel] [k] release_pages > 0.54% [nd_pmem] [k] memcpy_lnt_st_64 > 0.53% [ext4] [k] ext4_mark_iloc_dirty > 0.52% [kernel] [k] __wake_up_bit > 0.52% [kernel] [k] __clear_user > > --- > Robert Elliott, HP Server Storage Thanks, this is great analysis - I'd be quite interested in how these numbers look like with the two changes Dan mentioned. -Vishal
WARNING: multiple messages have this Message-ID (diff)
From: "Verma, Vishal L" <vishal.l.verma@intel.com> To: "Elliott@hp.com" <Elliott@hp.com> Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "mingo@kernel.org" <mingo@kernel.org>, "neilb@suse.de" <neilb@suse.de>, "hch@lst.de" <hch@lst.de>, "Williams, Dan J" <dan.j.williams@intel.com>, "axboe@fb.com" <axboe@fb.com>, "hpa@zytor.com" <hpa@zytor.com>, "linux-nvdimm@lists.01.org" <linux-nvdimm@ml01.01.org>, "gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>, "luto@amacapital.net" <luto@amacapital.net>, "david@fromorbit.com" <david@fromorbit.com> Subject: Re: [Linux-nvdimm] [PATCH v2 19/20] nd_btt: atomic sector updates Date: Mon, 18 May 2015 22:38:11 +0000 [thread overview] Message-ID: <1431988690.15857.31.camel@intel.com> (raw) In-Reply-To: <94D0CD8314A33A4D9D801C0FE68B40295A9097E5@G9W0745.americas.hpqcorp.net> [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain; charset="utf-8", Size: 9597 bytes --] On Sun, 2015-05-17 at 01:19 +0000, Elliott, Robert (Server Storage) wrote: > > -----Original Message----- > > From: Linux-nvdimm [mailto:linux-nvdimm-bounces@lists.01.org] On Behalf Of > > Dan Williams > > Sent: Tuesday, April 28, 2015 1:26 PM > > To: linux-nvdimm@lists.01.org > > Cc: Ingo Molnar; Neil Brown; Greg KH; Dave Chinner; linux- > > kernel@vger.kernel.org; Andy Lutomirski; Jens Axboe; H. Peter Anvin; > > Christoph Hellwig > > Subject: [Linux-nvdimm] [PATCH v2 19/20] nd_btt: atomic sector updates > > > > 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 ->rw_bytes() capability > > of provided nd namespace devices. > > > > The BTT works as a stacked blocked device, and reserves a chunk of space > > from the backing device for its accounting metadata. BLK namespaces may > > mandate use of a BTT and expect the bus to initialize a BTT if not > > already present. Otherwise if a BTT is desired for other namespaces (or > > partitions of a namespace) a BTT may be manually configured. > ... > > Running btt above pmem with a variety of workloads, I see an awful lot > of time spent in two places: > * _raw_spin_lock > * btt_make_request I'm curious about why _raw_spin_lock might be taking up so much time - does the test system have more than 256 CPUs? Even ignoring Dan's fix for nr_cpus which will allow the lockless path optimization to kick in (coming in v3), the lane spinlocks should be largely uncontested unless you have more than 256 CPUs. One explanation could be that this is being dominated by 'map_locks' - I'd need to get my perf setup going again to find out. (The more I think about it, the more I'm convinced this is the case. Fortunately it is simple to reduce map_lock contention by increasing the number of locks). > > This occurs for fio to raw /dev/ndN devices, ddpt over ext4 or xfs, > cp -R of large directories, and running make on the linux kernel. > > Some specific results: > > fio 4 KiB random reads, WC cache type, memcpy: > * 43175 MB/s, 8 M IOPS pmem0 and pmem1 > * 18500 MB/s, 1.5 M IOPS nd0 and nd1 > > fio 4 KiB random reads, WC cache type, memcpy with non-temporal > loads (when everything is 64-byte aligned): > * 33814 MB/s, 4.3 M IOPS nd0 and nd1 > > Zeroing out 32 MiB with ddpt: > * 19 s, 1800 MiB/s pmem > * 55 s, 625 MiB/s btt > > If btt_make_request needs to stall this much, maybe it'd be better > to utilize the blk-mq request queues, keeping requests in per-CPU > queues while they're waiting, and using IPIs for completion > interrupts when they're finally done. > > > fio 4 KiB random reads without non-temporal memcpy > ================================================== > perf top shows memcpy_erms taking all the time, a function that > uses 8-byte REP; MOVSB instructions: > 85.78% [kernel] [k] memcpy_erms > 1.21% [kernel] [k] _raw_spin_lock > 0.72% [nd_btt] [k] btt_make_request > 0.67% [kernel] [k] do_blockdev_direct_IO > 0.47% fio [.] get_io_u > > fio 4 KiB random reads with non-temporal memcpy > =============================================== > perf top shows there are still quite a few unaligned accesses > resulting in legacy memcpy, but about equal time is now spent > in legacy vs NT memcpy: I take it memcpy_lnt_st_64 expects 64B aligned accesses? The BTT will always have some unaligned accesses - the map updates are 4B long. Flog updates are 16B long, but about half of them will not start at a 64B alignment due to how it is laid out. I'm open to hearing ideas about how this could be improved. One way, as Dan already said is reducing the number of metadata updates by configuring a larger (4K) sector size. > 30.47% [kernel] [k] memcpy_erms > 26.27% [kernel] [k] memcpy_lnt_st_64 > 5.37% [kernel] [k] _raw_spin_lock > 2.20% [kernel] [k] btt_make_request > 2.03% [kernel] [k] do_blockdev_direct_IO > 1.41% fio [.] get_io_u > 1.22% [kernel] [k] btt_map_read > 1.15% [kernel] [k] pmem_rw_bytes > 1.01% [kernel] [k] nd_btt_rw_bytes > 0.98% [kernel] [k] nd_region_acquire_lane > 0.89% fio [.] get_next_rand_block > 0.88% fio [.] thread_main > 0.79% fio [.] ios_completed > 0.76% fio [.] td_io_queue > 0.75% [kernel] [k] _raw_spin_lock_irqsave > 0.68% [kernel] [k] kmem_cache_free > 0.66% [kernel] [k] kmem_cache_alloc > 0.59% [kernel] [k] __audit_syscall_exit > 0.57% [kernel] [k] aio_complete > 0.54% [kernel] [k] do_io_submit > 0.52% [kernel] [k] _raw_spin_unlock_irqrestore > > fio randrw workload > =================== > perf top shows that adding writes to the mix brings btt_make_request > its cpu_relax() loop to the forefront: This is good data - we've thought about benchmarking an alternate strategy for the 'Read Tracking Table' - instead of a linear array, use a hash table (hash new_postmap into an RTT slot) . It will add false waiting due to hash collisions, but the writers won't have to walk the array - they can just hash into the right spot. Another option that Dan suggested could be instead of waiting in the cpu_relax() loop, we drop the lane, and start over with _acquire_lane. This way, we are waiting in the spin_lock stage, thus giving a chance to other threads/CPUs that resolve to the same spinlock to run. > 21.09% [nd_btt] [k] btt_make_request > 19.06% [kernel] [k] memcpy_erms > 14.35% [kernel] [k] _raw_spin_lock > 10.38% [nd_pmem] [k] memcpy_lnt_st_64 > 1.57% [kernel] [k] do_blockdev_direct_IO > 1.51% [nd_pmem] [k] memcpy_lt_snt_64 > 1.43% [nd_btt] [k] nd_btt_rw_bytes > 1.39% [kernel] [k] radix_tree_next_chunk > 1.33% [kernel] [k] put_page > 1.21% [nd_pmem] [k] pmem_rw_bytes > 1.11% fio [.] get_io_u > 0.90% fio [.] io_u_queued_complete > 0.74% [kernel] [k] system_call > 0.72% [libnd] [k] nd_region_acquire_lane > 0.71% [nd_btt] [k] btt_map_read > 0.62% fio [.] thread_main > > inside btt_make_request: > > ¦ /* Wait if the new block is being read from */ > ¦ for (i = 0; i < arena->nfree; i++) > 2.98 ¦ ? je 2b4 > 0.05 ¦ mov 0x60(%r14),%rax > 0.00 ¦ mov %ebx,%edx > ¦ xor %esi,%esi > 0.03 ¦ or $0x80000000,%edx > 0.05 ¦ nop > ¦ while (arena->rtt[i] == (RTT_VALID | new_postmap)) > 22.98 ¦290: mov %esi,%edi > 0.01 ¦ cmp %edx,(%rax,%rdi,4) > 30.97 ¦ lea 0x0(,%rdi,4),%rcx > 21.05 ¦ ? jne 2ab > ¦ nop > ¦ } > ¦ > ¦ /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */ > ¦ static inline void rep_nop(void) > ¦ { > ¦ asm volatile("rep; nop" ::: "memory"); > ¦2a0: pause > ¦ mov 0x60(%r14),%rax > ¦ cmp (%rax,%rcx,1),%edx > ¦ ? je 2a0 > ¦ } > > > ddpt zeroing out > ================ > perf top shows 27% in spinlocks, and 14% in btt_make_request (all in > the "wait if the new block is being read from" loop). > > 26.48% [kernel] [k] _raw_spin_lock > 14.46% [nd_btt] [k] btt_make_request > 13.14% [kernel] [k] memcpy_erms > 10.34% [kernel] [k] copy_user_enhanced_fast_string > 3.12% [nd_pmem] [k] memcpy_lt_snt_64 > 1.15% [kernel] [k] __block_commit_write.isra.21 > 0.96% [nd_pmem] [k] pmem_rw_bytes > 0.96% [nd_btt] [k] nd_btt_rw_bytes > 0.86% [kernel] [k] unlock_page > 0.65% [kernel] [k] _raw_spin_lock_irqsave > 0.58% [kernel] [k] bdev_read_only > 0.56% [kernel] [k] release_pages > 0.54% [nd_pmem] [k] memcpy_lnt_st_64 > 0.53% [ext4] [k] ext4_mark_iloc_dirty > 0.52% [kernel] [k] __wake_up_bit > 0.52% [kernel] [k] __clear_user > > --- > Robert Elliott, HP Server Storage Thanks, this is great analysis - I'd be quite interested in how these numbers look like with the two changes Dan mentioned. -Vishal ÿôèº{.nÇ+·®+%Ëÿ±éݶ\x17¥wÿº{.nÇ+·¥{±þG«éÿ{ayº\x1dÊÚë,j\a¢f£¢·hïêÿêçz_è®\x03(éÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?¨èÚ&£ø§~á¶iOæ¬z·vØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?I¥
next prev parent reply other threads:[~2015-05-18 22:38 UTC|newest] Thread overview: 179+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-04-28 18:24 [PATCH v2 00/20] libnd: non-volatile memory device support Dan Williams 2015-04-28 18:24 ` Dan Williams 2015-04-28 18:24 ` [PATCH v2 01/20] e820, efi: add ACPI 6.0 persistent memory types Dan Williams 2015-04-28 18:24 ` Dan Williams 2015-04-28 20:49 ` Andy Lutomirski 2015-04-28 20:49 ` Andy Lutomirski 2015-04-28 20:57 ` Dan Williams 2015-04-28 20:57 ` Dan Williams 2015-04-28 21:05 ` Andy Lutomirski 2015-04-28 21:05 ` Andy Lutomirski 2015-05-15 15:43 ` [Linux-nvdimm] " Jeff Moyer 2015-05-15 15:48 ` Dan Williams 2015-05-18 19:28 ` Andy Lutomirski 2015-04-28 18:24 ` [PATCH v2 02/20] libnd, nd_acpi: initial libnd infrastructure and NFIT support Dan Williams 2015-04-28 18:24 ` Dan Williams 2015-04-30 23:23 ` Rafael J. Wysocki 2015-04-30 23:23 ` Rafael J. Wysocki 2015-05-01 0:39 ` Dan Williams 2015-05-01 0:39 ` Dan Williams 2015-05-01 1:21 ` Rafael J. Wysocki 2015-05-01 1:21 ` Rafael J. Wysocki 2015-05-01 16:23 ` Dan Williams 2015-05-01 16:23 ` Dan Williams 2015-05-04 23:58 ` Rafael J. Wysocki 2015-05-04 23:58 ` Rafael J. Wysocki 2015-05-04 23:46 ` Dan Williams 2015-05-04 23:46 ` Dan Williams 2015-05-15 19:44 ` [Linux-nvdimm] " Jeff Moyer 2015-05-15 20:41 ` Dan Williams 2015-04-28 18:24 ` [PATCH v2 03/20] nd_acpi, nfit-test: manufactured NFITs for interface development Dan Williams 2015-04-28 18:24 ` Dan Williams 2015-05-15 20:25 ` [Linux-nvdimm] " Jeff Moyer 2015-05-15 20:50 ` Dan Williams 2015-04-28 18:24 ` [PATCH v2 04/20] libnd: ndctl class device, and nd bus attributes Dan Williams 2015-04-28 18:24 ` Dan Williams 2015-05-15 21:00 ` [Linux-nvdimm] " Jeff Moyer 2015-04-28 18:24 ` [PATCH v2 05/20] libnd, nd_acpi: dimm/memory-devices Dan Williams 2015-04-28 18:24 ` Dan Williams 2015-05-01 17:48 ` [Linux-nvdimm] " Toshi Kani 2015-05-01 17:48 ` Toshi Kani 2015-05-01 18:22 ` Dan Williams 2015-05-01 18:22 ` Dan Williams 2015-05-01 18:19 ` Toshi Kani 2015-05-01 18:19 ` Toshi Kani 2015-05-01 18:43 ` Dan Williams 2015-05-01 18:43 ` Dan Williams 2015-05-01 19:15 ` Toshi Kani 2015-05-01 19:15 ` Toshi Kani 2015-05-01 19:38 ` Dan Williams 2015-05-01 19:38 ` Dan Williams 2015-05-01 20:08 ` Toshi Kani 2015-05-01 20:08 ` Toshi Kani 2015-04-28 18:24 ` [PATCH v2 06/20] libnd: ndctl.h, the nd ioctl abi Dan Williams 2015-04-28 18:24 ` Dan Williams 2015-04-28 18:24 ` [PATCH v2 07/20] libnd, nd_dimm: dimm driver and base libnd device-driver infrastructure Dan Williams 2015-04-28 18:24 ` Dan Williams 2015-05-20 16:59 ` [Linux-nvdimm] " Elliott, Robert (Server Storage) 2015-05-20 16:59 ` Elliott, Robert (Server Storage) 2015-05-20 17:02 ` Dan Williams 2015-05-20 17:02 ` Dan Williams 2015-04-28 18:24 ` [PATCH v2 08/20] libnd, nd_acpi: regions (block-data-window, persistent memory, volatile memory) Dan Williams 2015-04-28 18:24 ` Dan Williams 2015-04-29 15:53 ` [Linux-nvdimm] " Elliott, Robert (Server Storage) 2015-04-29 15:53 ` Elliott, Robert (Server Storage) 2015-04-29 15:59 ` Dan Williams 2015-04-29 15:59 ` Dan Williams 2015-05-04 20:26 ` Toshi Kani 2015-05-04 20:26 ` Toshi Kani 2015-05-09 23:55 ` Dan Williams 2015-05-09 23:55 ` Dan Williams 2015-05-28 18:36 ` Toshi Kani 2015-05-28 18:36 ` Toshi Kani 2015-05-28 19:59 ` Dan Williams 2015-05-28 19:59 ` Dan Williams 2015-05-28 20:51 ` Linda Knippers 2015-05-28 20:51 ` Linda Knippers 2015-05-28 20:58 ` Dan Williams 2015-05-28 20:58 ` Dan Williams 2015-04-28 18:25 ` [PATCH v2 09/20] libnd: support for legacy (non-aliasing) nvdimms Dan Williams 2015-04-28 18:25 ` Dan Williams 2015-04-28 18:25 ` [PATCH v2 10/20] pmem: use ida Dan Williams 2015-04-28 18:25 ` Dan Williams 2015-04-29 18:25 ` [Linux-nvdimm] " Toshi Kani 2015-04-29 18:25 ` Toshi Kani 2015-04-29 18:59 ` Dan Williams 2015-04-29 18:59 ` Dan Williams 2015-04-29 18:53 ` Toshi Kani 2015-04-29 18:53 ` Toshi Kani 2015-04-29 20:49 ` Linda Knippers 2015-04-29 20:49 ` Linda Knippers 2015-04-29 21:36 ` Dan Williams 2015-04-29 21:36 ` Dan Williams 2015-04-28 18:25 ` [PATCH v2 11/20] libnd, nd_pmem: add libnd support to the pmem driver Dan Williams 2015-04-28 18:25 ` Dan Williams 2015-04-28 21:04 ` Andy Lutomirski 2015-04-28 21:04 ` Andy Lutomirski 2015-04-28 22:21 ` [Linux-nvdimm] " Phil Pokorny 2015-04-28 22:21 ` Phil Pokorny 2015-04-28 22:58 ` Andy Lutomirski 2015-04-28 22:58 ` Andy Lutomirski 2015-04-29 0:17 ` Phil Pokorny 2015-04-29 0:17 ` Phil Pokorny 2015-04-29 0:28 ` Andy Lutomirski 2015-04-29 0:28 ` Andy Lutomirski 2015-04-29 15:55 ` Dan Williams 2015-04-29 15:55 ` Dan Williams 2015-04-29 18:36 ` Andy Lutomirski 2015-04-29 18:36 ` Andy Lutomirski 2015-04-28 18:25 ` [PATCH v2 12/20] libnd, nd_acpi: add interleave-set state-tracking infrastructure Dan Williams 2015-04-28 18:25 ` Dan Williams 2015-04-28 18:25 ` [PATCH v2 13/20] libnd: namespace indices: read and validate Dan Williams 2015-04-28 18:25 ` Dan Williams 2015-04-28 18:25 ` [PATCH v2 14/20] libnd: pmem label sets and namespace instantiation Dan Williams 2015-04-28 18:25 ` Dan Williams 2015-04-28 18:25 ` [PATCH v2 15/20] libnd: blk labels " Dan Williams 2015-04-28 18:25 ` Dan Williams 2015-04-28 18:25 ` [PATCH v2 16/20] libnd: write pmem label set Dan Williams 2015-04-28 18:25 ` Dan Williams 2015-04-28 18:25 ` [PATCH v2 17/20] libnd: write blk " Dan Williams 2015-04-28 18:25 ` Dan Williams 2015-04-28 18:25 ` [PATCH v2 18/20] libnd: infrastructure for btt devices Dan Williams 2015-04-28 18:25 ` Dan Williams 2015-05-12 16:33 ` [Linux-nvdimm] " Toshi Kani 2015-05-12 16:33 ` Toshi Kani 2015-05-15 0:41 ` Dan Williams 2015-05-15 0:41 ` Dan Williams 2015-05-15 4:25 ` Elliott, Robert (Server Storage) 2015-05-15 4:25 ` Elliott, Robert (Server Storage) 2015-04-28 18:25 ` [PATCH v2 19/20] nd_btt: atomic sector updates Dan Williams 2015-04-28 18:25 ` Dan Williams 2015-05-17 1:19 ` [Linux-nvdimm] " Elliott, Robert (Server Storage) 2015-05-17 1:19 ` Elliott, Robert (Server Storage) 2015-05-17 3:22 ` Dan Williams 2015-05-17 3:22 ` Dan Williams 2015-05-20 17:20 ` Elliott, Robert (Server Storage) 2015-05-20 17:20 ` Elliott, Robert (Server Storage) 2015-05-18 22:38 ` Verma, Vishal L [this message] 2015-05-18 22:38 ` Verma, Vishal L 2015-04-28 18:26 ` [PATCH v2 20/20] libnd, nd_acpi, nd_blk: driver for BLK-mode access persistent memory Dan Williams 2015-04-28 18:26 ` Dan Williams 2015-04-28 21:10 ` Andy Lutomirski 2015-04-28 21:10 ` Andy Lutomirski 2015-04-28 22:30 ` Dan Williams 2015-04-28 22:30 ` Dan Williams 2015-04-28 23:06 ` Andy Lutomirski 2015-04-28 23:06 ` Andy Lutomirski 2015-04-29 17:10 ` Dan Williams 2015-04-29 17:10 ` Dan Williams 2015-04-29 19:28 ` Andy Lutomirski 2015-04-29 19:28 ` Andy Lutomirski 2015-04-28 20:52 ` [PATCH v2 00/20] libnd: non-volatile memory device support Andy Lutomirski 2015-04-28 20:52 ` Andy Lutomirski 2015-04-28 20:59 ` Dan Williams 2015-04-28 20:59 ` Dan Williams 2015-04-28 21:06 ` Andy Lutomirski 2015-04-28 21:06 ` Andy Lutomirski 2015-04-28 22:28 ` Dan Williams 2015-04-28 22:28 ` Dan Williams 2015-04-28 23:05 ` Andy Lutomirski 2015-04-28 23:05 ` Andy Lutomirski 2015-04-30 20:56 ` Ross Zwisler 2015-04-30 20:56 ` Ross Zwisler 2015-04-28 21:24 ` [Linux-nvdimm] " Elliott, Robert (Server Storage) 2015-04-28 21:24 ` Elliott, Robert (Server Storage) 2015-04-28 22:15 ` Dan Williams 2015-04-28 22:15 ` Dan Williams 2015-05-07 7:29 ` Christoph Hellwig 2015-05-07 7:29 ` Christoph Hellwig 2015-04-29 0:25 ` Rafael J. Wysocki 2015-04-29 0:25 ` Rafael J. Wysocki 2015-04-29 1:22 ` Dan Williams 2015-04-29 1:22 ` Dan Williams 2015-04-29 1:22 ` Dan Williams 2015-05-05 0:06 ` Rafael J. Wysocki 2015-05-05 0:06 ` Rafael J. Wysocki 2015-05-05 0:06 ` Rafael J. Wysocki 2015-05-08 6:31 ` Williams, Dan J 2015-05-08 6:31 ` Williams, Dan J 2015-05-08 6:31 ` Williams, Dan J
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1431988690.15857.31.camel@intel.com \ --to=vishal.l.verma@intel.com \ --cc=Elliott@hp.com \ --cc=axboe@fb.com \ --cc=dan.j.williams@intel.com \ --cc=david@fromorbit.com \ --cc=gregkh@linuxfoundation.org \ --cc=hch@lst.de \ --cc=hpa@zytor.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-nvdimm@lists.01.org \ --cc=luto@amacapital.net \ --cc=mingo@kernel.org \ --cc=neilb@suse.de \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.