From: Tang Junhui
Hello Mike,
I thought twice, and feel this patch is a little complex and still not very
accurate for
small backend devices. I think we can resolve it like this:
uint64_t cache_dirty_target =
div_u64(cache_sectors * dc->writeback_percent,
On Fri, Jan 05, 2018 at 02:56:38PM -0700, Jens Axboe wrote:
> Don't pass in the hardware queue to __dd_dispatch_request(), since it
> leads the reader to believe that we are returning a request for that
> specific hardware queue. That's not how mq-deadline works, the state
> for determining which
Don't pass in the hardware queue to __dd_dispatch_request(), since it
leads the reader to believe that we are returning a request for that
specific hardware queue. That's not how mq-deadline works, the state
for determining which request to serve next is shared across all
hardware queues for a
On 01/05/2018 01:17 PM, Michael Lyle wrote:
> Bcache needs to scale the dirty data in the cache over the multiple
> backing disks in order to calculate writeback rates for each.
> The previous code did this by multiplying the target number of dirty
> sectors by the backing device size, and
Bcache needs to scale the dirty data in the cache over the multiple
backing disks in order to calculate writeback rates for each.
The previous code did this by multiplying the target number of dirty
sectors by the backing device size, and expected it to fit into a
uint64_t; this blows up on
On 01/05/2018 11:56 AM, Javier Gonzalez wrote:
>> On 5 Jan 2018, at 20.53, Matias Bjørling wrote:
>>
>> On 01/05/2018 08:52 PM, Javier Gonzalez wrote:
On 5 Jan 2018, at 20.33, Randy Dunlap wrote:
On 01/05/2018 05:16 AM, Matias Bjørling
On 01/05/2018 08:52 PM, Javier Gonzalez wrote:
On 5 Jan 2018, at 20.33, Randy Dunlap wrote:
On 01/05/2018 05:16 AM, Matias Bjørling wrote:
From: Javier González
Allow to set the over-provision percentage on target creation. In case
that the value
> On 5 Jan 2018, at 20.33, Randy Dunlap wrote:
>
> On 01/05/2018 05:16 AM, Matias Bjørling wrote:
>> From: Javier González
>>
>> Allow to set the over-provision percentage on target creation. In case
>> that the value is not provided, fall back to
On 1/5/18 9:26 AM, Bart Van Assche wrote:
> Hello Jens,
>
> As you know there are multiple drivers that both allocate a scatter/gather
> list and populate that list with pages. This patch series moves the code for
> allocating and freeing such scatterlists from several drivers into
>
On 01/05/2018 05:16 AM, Matias Bjørling wrote:
> From: Javier González
>
> Allow to set the over-provision percentage on target creation. In case
> that the value is not provided, fall back to the default value set by
> the target.
>
> In pblk, set the default OP to 11% of
On Fri, Jan 05, 2018 at 09:15:41AM -0800, Michael Lyle wrote:
> Jens & Kent,
>
> On 01/05/2018 08:05 AM, Jens Axboe wrote:
> > On 12/30/17 4:09 PM, Michael Lyle wrote:
> >> +void __closure_sync(struct closure *cl)
> >> +{
> >> + struct closure_syncer s = { .task = current };
> >>
> >> + cl->s
On 05/01/18 12:01 PM, Keith Busch wrote:
On Fri, Jan 05, 2018 at 11:19:28AM -0700, Logan Gunthorpe wrote:
Although it is not explicitly stated anywhere, pci_alloc_p2pmem() should
always be at least 4k aligned. This is because the gen_pool that implements
it is created with PAGE_SHIFT for its
On Fri, Jan 05, 2018 at 11:19:28AM -0700, Logan Gunthorpe wrote:
> Although it is not explicitly stated anywhere, pci_alloc_p2pmem() should
> always be at least 4k aligned. This is because the gen_pool that implements
> it is created with PAGE_SHIFT for its min_alloc_order.
Ah, I see that now.
On 01/05/2018 04:50 PM, Jens Axboe wrote:
On Fri, Jan 05 2018, Matias Bjørling wrote:
Hi Jens,
Here is a couple of patches for 4.16.
This patchset prepares the lightnvm and pblk source code for the 2.0
specification release. The specification is close to its final
revision. After these
On 01/05/2018 04:42 PM, Jens Axboe wrote:
On Fri, Jan 05 2018, Matias Bjørling wrote:
From: Javier González
Since pblk registers its own block device, the iostat accounting is
not automatically done for us. Therefore, add the necessary
accounting logic to satisfy the
On 05/01/18 11:11 AM, Keith Busch wrote:
On Thu, Jan 04, 2018 at 12:01:34PM -0700, Logan Gunthorpe wrote:
Register the CMB buffer as p2pmem and use the appropriate allocation
functions to create and destroy the IO SQ.
If the CMB supports WDS and RDS, publish it for use as p2p memory
by other
On 05/01/18 08:30 AM, Marta Rybczynska wrote:
@@ -429,10 +429,7 @@ static void __nvme_submit_cmd(struct nvme_queue *nvmeq,
{
u16 tail = nvmeq->sq_tail;
- if (nvmeq->sq_cmds_io)
- memcpy_toio(>sq_cmds_io[tail], cmd, sizeof(*cmd));
- else
-
On Thu, Jan 04, 2018 at 12:01:34PM -0700, Logan Gunthorpe wrote:
> Register the CMB buffer as p2pmem and use the appropriate allocation
> functions to create and destroy the IO SQ.
>
> If the CMB supports WDS and RDS, publish it for use as p2p memory
> by other devices.
<>
> + if (qid &&
On 1/5/18 10:15 AM, Christoph Hellwig wrote:
> Hi Jens,
>
> I have a few more small nvme fixes for you for Linux 4.15:
>
> The following changes since commit 6d0e4827b72afc71349784336d5eb6df4df106e6:
>
> Revert "bdi: add error handle for bdi_debug_register" (2017-12-21 10:01:30
> -0700)
>
>
On Fri, 5 Jan 2018 10:10:51 -0700
Logan Gunthorpe wrote:
> On 04/01/18 08:33 PM, Alex Williamson wrote:
> > That's exactly what IOMMU groups represent, the smallest set of devices
> > which have DMA isolation from other devices. By poking this hole, the
> > IOMMU group is
Jens & Kent,
On 01/05/2018 08:05 AM, Jens Axboe wrote:
> On 12/30/17 4:09 PM, Michael Lyle wrote:
>> +void __closure_sync(struct closure *cl)
>> +{
>> +struct closure_syncer s = { .task = current };
>>
>> +cl->s =
>> +continue_at(cl, closure_sync_fn, NULL);
>> +
>> +while (1) {
Hi Jens,
I have a few more small nvme fixes for you for Linux 4.15:
The following changes since commit 6d0e4827b72afc71349784336d5eb6df4df106e6:
Revert "bdi: add error handle for bdi_debug_register" (2017-12-21 10:01:30
-0700)
are available in the git repository at:
On 04/01/2018 1:09 AM, Michael Lyle wrote:
> On 01/03/2018 06:03 AM, Coly Li wrote:
>> Kernel thread routine bch_allocator_thread() references macro
>> allocator_wait() to wait for a condition or quit to do_exit()
>> when kthread_should_stop() is true.
>>
>> Macro allocator_wait() has 2 issues in
On 04/01/18 08:33 PM, Alex Williamson wrote:
That's exactly what IOMMU groups represent, the smallest set of devices
which have DMA isolation from other devices. By poking this hole, the
IOMMU group is invalid. We cannot turn off ACS only for a specific
device, in order to enable p2p it
On 04/01/2018 1:08 AM, Michael Lyle wrote:
> On 01/03/2018 06:03 AM, Coly Li wrote:
>> Kernel thread routine bch_writeback_thread() has the following code block,
>>
>> 452 set_current_state(TASK_INTERRUPTIBLE);
>> 453
>> 454 if
On Fri, Jan 05, 2018 at 11:49:41AM -0500, bfields wrote:
> On Mon, Jan 01, 2018 at 02:18:55AM -0800, Matthew Wilcox wrote:
> > On Sat, Dec 30, 2017 at 06:00:57PM -0500, Theodore Ts'o wrote:
> > > On Sat, Dec 30, 2017 at 05:40:28PM -0500, Theodore Ts'o wrote:
> > > > On Sat, Dec 30, 2017 at
On Mon, Jan 01, 2018 at 02:18:55AM -0800, Matthew Wilcox wrote:
> On Sat, Dec 30, 2017 at 06:00:57PM -0500, Theodore Ts'o wrote:
> > On Sat, Dec 30, 2017 at 05:40:28PM -0500, Theodore Ts'o wrote:
> > > On Sat, Dec 30, 2017 at 12:44:17PM -0800, Matthew Wilcox wrote:
> > > >
> > > > I'm not sure I
On 1/5/2018 8:26 AM, Bart Van Assche wrote:
Use the sgl_alloc() and sgl_free() functions instead of open coding
these functions.
Signed-off-by: Bart Van Assche
Reviewed-by: Johannes Thumshirn
Reviewed-by: Hannes Reinecke
Cc: Keith
On 12/13/17 11:10 PM, Paolo Valente wrote:
> Hi Jens,
> do you think this version could be ok?
It's definitely an improvement. I will add it for 4.16.
--
Jens Axboe
On 12/14/17 11:23 PM, Paolo Valente wrote:
> Hi,
> this patch reduces false positives in the detection of bfq_queues
> associated with soft real-time applications. As such, this patch
> reduces the damages caused by these false positives to other
> applications. The patch proved to be very
On 12/20/17 4:38 AM, Paolo Valente wrote:
> Hi,
> the main patch in this series ("block, bfq: let a queue be merged only
> shortly after starting I/O") eliminates an outlier in the application
> start-up time guaranteed by BFQ. This outlier occurs more or less
> frequently, as a function of the
Use the sgl_alloc() and sgl_free() functions instead of open coding
these functions.
Signed-off-by: Bart Van Assche
Acked-by: Ard Biesheuvel
Cc: Herbert Xu
---
crypto/Kconfig | 1 +
crypto/scompress.c | 51
Use the sgl_alloc() and sgl_free() functions instead of open coding
these functions.
Signed-off-by: Bart Van Assche
Reviewed-by: Johannes Thumshirn
Reviewed-by: Hannes Reinecke
Cc: Keith Busch
Cc: Christoph
Use the sgl_alloc_order() and sgl_free() functions instead of open
coding these functions.
Signed-off-by: Bart Van Assche
Acked-by: Nicholas A. Bellinger
Reviewed-by: Hannes Reinecke
Cc: Christoph Hellwig
Cc: Sagi
Many kernel drivers contain code that allocates and frees both a
scatterlist and the pages that populate that scatterlist.
Introduce functions in lib/scatterlist.c that perform these tasks
instead of duplicating this functionality in multiple drivers.
Only include these functions in the build if
Use the sgl_alloc() and sgl_free() functions instead of open coding
these functions.
Signed-off-by: Bart Van Assche
Reviewed-by: Johannes Thumshirn
Reviewed-by: Hannes Reinecke
Cc: Keith Busch
Cc: Christoph
Hello Jens,
As you know there are multiple drivers that both allocate a scatter/gather
list and populate that list with pages. This patch series moves the code for
allocating and freeing such scatterlists from several drivers into
lib/scatterlist.c. Please consider this patch series for kernel
On 12/20/17 9:27 AM, Paolo Valente wrote:
> If two processes do I/O close to each other, i.e., are cooperating
> processes in BFQ (and CFQ'S) nomenclature, then BFQ merges their
> associated bfq_queues, so as to get sequential I/O from the union of
> the I/O requests of the processes, and thus
On Thu, Dec 21 2017, Damien Le Moal wrote:
> This series, formerly titled "scsi-mq support for ZBC disks", implements
> support for ZBC disks for system using the scsi-mq I/O path.
>
> The current scsi level support of ZBC disks guarantees write request ordering
> using a per-zone write lock
On 11/29/17 4:56 PM, Ming Lei wrote:
> Now we track legacy requests with .q_usage_counter in commit 055f6e18e08f
> ("block: Make q_usage_counter also track legacy requests"), but that
> commit never runs and drains legacy queue before waiting for this counter
> becoming zero, then IO hang is
On 12/30/17 4:09 PM, Michael Lyle wrote:
> +void __closure_sync(struct closure *cl)
> +{
> + struct closure_syncer s = { .task = current };
>
> + cl->s =
> + continue_at(cl, closure_sync_fn, NULL);
> +
> + while (1) {
> + __set_current_state(TASK_UNINTERRUPTIBLE);
>
On 1/2/18 12:39 PM, Bart Van Assche wrote:
> Hello Jens,
>
> This patch series fixes two bugs in the pktcdvd driver. The second patch fixes
> a recently introduced regression while the first patch fixes a regression that
> was introduced a long time ago. Please consider these patches for the
On Fri, Jan 05 2018, Matias Bjørling wrote:
> Hi Jens,
>
> Here is a couple of patches for 4.16.
>
> This patchset prepares the lightnvm and pblk source code for the 2.0
> specification release. The specification is close to its final
> revision. After these changes, 2.0 support is a quick drop.
On Fri, 5 Jan 2018 01:47:01 -0500
Jerome Glisse wrote:
> On Thu, Jan 04, 2018 at 08:33:00PM -0700, Alex Williamson wrote:
> > On Thu, 4 Jan 2018 17:00:47 -0700
> > Logan Gunthorpe wrote:
> >
> > > On 04/01/18 03:35 PM, Alex Williamson wrote:
> > > >
> @@ -429,10 +429,7 @@ static void __nvme_submit_cmd(struct nvme_queue *nvmeq,
> {
> u16 tail = nvmeq->sq_tail;
>
> - if (nvmeq->sq_cmds_io)
> - memcpy_toio(>sq_cmds_io[tail], cmd, sizeof(*cmd));
> - else
> - memcpy(>sq_cmds[tail], cmd, sizeof(*cmd));
> +
On 1/5/18 12:09 AM, Liu Bo wrote:
> Commit de1482974080
> ("blk-mq: introduce .get_budget and .put_budget in blk_mq_ops")
> changes the function to return bool type, and then commit 1f460b63d4b3
> ("blk-mq: don't restart queue when .get_budget returns BLK_STS_RESOURCE")
> changes it back to void,
With rrpc to be removed, the null_blk lightnvm support is no longer
functional. Remove the lightnvm implementation and maybe add it to
another module in the future if someone takes on the challenge.
Signed-off-by: Matias Bjørling
---
drivers/block/null_blk.c | 220
From: Matias Bjørling
Prepare for the 2.0 revision by adapting the geometry
structures to coexist with the 1.2 revision.
Signed-off-by: Matias Bjørling
Reviewed-by: Javier González
Signed-off-by: Matias Bjørling
From: Javier González
Remove the wait filed in nvm_rq. It is not used anymore, as targets rely
on the functionality provided by the LightNVM subsystem when sending
sync I/O.
Signed-off-by: Javier González
Signed-off-by: Matias Bjørling
From: Javier González
Until now, target unique naming is only guaranteed per device. This is
ok from a lightnvm perspective, but not from a sysfs one, since groups
will collide regardless of the underlying device.
Check that names are unique across all lightnvm-capable
From: Javier González
Through time, we have generated some redundant helper functions.
Refactor them to eliminate redundant and unnecessary code. Also, reorder
them to improve readability
Signed-off-by: Javier González
Signed-off-by: Matias Bjørling
From: Javier González
Refactor target type lookup to use/not use locks explicitly instead of
using a hidden parameter to make the function locking.
Signed-off-by: Javier González
Signed-off-by: Matias Bjørling
---
Now that rrpc has been removed, the only users of the ppa helpers
is pblk. However, pblk already defines similar functions.
Switch pblk to use the internal ones, and remove the generic ppa
helpers.
Signed-off-by: Matias Bjørling
---
drivers/lightnvm/pblk-map.c | 2 +-
From: Hans Holmberg
Unless we protect flush pointer updates with a lock, we risk
resetting new flush points before we've synced all sectors
up to that point.
This patch protects new flush points with the same spin lock
that is being held when advancing the sync
From: Javier González
Signed-off-by: Javier González
Signed-off-by: Matias Bjørling
---
drivers/lightnvm/pblk.h | 4
1 file changed, 4 deletions(-)
diff --git a/drivers/lightnvm/pblk.h b/drivers/lightnvm/pblk.h
index
From: Hans Holmberg
Move completion of syncs and clearing of flush points to the
write completion path - this ensures that the data has been
comitted to the media before completing bios containing syncs.
Signed-off-by: Hans Holmberg
From: Hans Holmberg
Currently pblk_recov_get_lba list does two separate things:
it checks the consistency of the emeta and extracts the lba list.
This patch separates the consistency check to make the code easier
to read and to prepare for version checks of the line
From: Hans Holmberg
pblk_gc_stop just sets pblk->gc->gc_active to zero, ignoring
the flush parameter. This is plain confusing, so remove the
function and set the gc active flag at the call points instead.
Signed-off-by: Hans Holmberg
From: Javier González
Until now, pblk's rate-limiter has used a heuristic to reserve space for
GC I/O given that the over-provision area was fixed.
In preparation for allowing to define the over-provision area on target
creation, define a dedicated free_block counter in the
From: Javier González
Allow to set the over-provision percentage on target creation. In case
that the value is not provided, fall back to the default value set by
the target.
In pblk, set the default OP to 11% of the total size of the device
Signed-off-by: Javier González
From: Javier González
When creating the write thread, ensure that the kthread has been created
before initializing the timer responsible from kicking it. Otherwise, if
the kthread creation fails or gets killed from used space, we risk
kicking an empty thread structure.
From: Javier González
On scan recovery, reads can fail. This happens because the first page
for each line is read in order to determined if the line has been used
(and thus needs to be recovered), or not. This can lead to "empty page"
read errors.
Since these errors are
From: Hans Holmberg
Sync point is a really confusing name for keeping track of
the last entry that needs to be flushed so change the name
to to flush_point instead.
Signed-off-by: Hans Holmberg
Signed-off-by: Javier González
Shorten function to simply return the value of the if statement.
Signed-off-by: Matias Bjørling
---
drivers/lightnvm/pblk.h | 5 +
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/drivers/lightnvm/pblk.h b/drivers/lightnvm/pblk.h
index 8af374e..8c357fb 100644
From: Javier González
Add the instance name to the information printed out on target creation.
Signed-off-by: Javier González
Signed-off-by: Matias Bjørling
---
drivers/lightnvm/pblk-init.c | 3 ++-
1 file changed, 2 insertions(+),
The hybrid mode for 1.2 revision was deprecated, and have
no users. Remove to make it easier to move to the 2.0 revision.
Signed-off-by: Matias Bjørling
---
drivers/lightnvm/Kconfig |7 -
drivers/lightnvm/Makefile |1 -
drivers/lightnvm/rrpc.c | 1625
Now that rrpc have been removed. Also remove the hybrid 1.2 support
from the core.
Signed-off-by: Matias Bjørling
---
drivers/lightnvm/core.c | 141 ---
drivers/nvme/host/lightnvm.c | 96 -
From: Javier González
Since pblk registers its own block device, the iostat accounting is
not automatically done for us. Therefore, add the necessary
accounting logic to satisfy the iostat interface.
Signed-off-by: Javier González
Signed-off-by: Matias
Hi Jens,
Here is a couple of patches for 4.16.
This patchset prepares the lightnvm and pblk source code for the 2.0
specification release. The specification is close to its final
revision. After these changes, 2.0 support is a quick drop.
While adopting 2.0 specification, the rrpc and null_blk
On 01/04/2018 08:10 PM, Darrick J. Wong wrote:
> On Wed, Nov 22, 2017 at 06:29:01AM -0600, Goldwyn Rodrigues wrote:
>> From: Goldwyn Rodrigues
>>
>> In case direct I/O encounters an error midway, it returns the error.
>> Instead it should be returning the number of bytes
Commit de1482974080
("blk-mq: introduce .get_budget and .put_budget in blk_mq_ops")
changes the function to return bool type, and then commit 1f460b63d4b3
("blk-mq: don't restart queue when .get_budget returns BLK_STS_RESOURCE")
changes it back to void, but the comment remains.
Signed-off-by: Liu
71 matches
Mail list logo