lightnvm: pblk: rename sync_point to flush_point
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 <hans.holmberg@cnexlabs.com> Signed-off-by: Javier González <javier@cnexlabs.com> Signed-off-by: Matias Bjørling <m@bjorling.me> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
06bc072b3f
commit
8154d296d9
|
@ -54,7 +54,7 @@ int pblk_rb_init(struct pblk_rb *rb, struct pblk_rb_entry *rb_entry_base,
|
||||||
rb->seg_size = (1 << power_seg_sz);
|
rb->seg_size = (1 << power_seg_sz);
|
||||||
rb->nr_entries = (1 << power_size);
|
rb->nr_entries = (1 << power_size);
|
||||||
rb->mem = rb->subm = rb->sync = rb->l2p_update = 0;
|
rb->mem = rb->subm = rb->sync = rb->l2p_update = 0;
|
||||||
rb->sync_point = EMPTY_ENTRY;
|
rb->flush_point = EMPTY_ENTRY;
|
||||||
|
|
||||||
spin_lock_init(&rb->w_lock);
|
spin_lock_init(&rb->w_lock);
|
||||||
spin_lock_init(&rb->s_lock);
|
spin_lock_init(&rb->s_lock);
|
||||||
|
@ -112,7 +112,7 @@ int pblk_rb_init(struct pblk_rb *rb, struct pblk_rb_entry *rb_entry_base,
|
||||||
up_write(&pblk_rb_lock);
|
up_write(&pblk_rb_lock);
|
||||||
|
|
||||||
#ifdef CONFIG_NVM_DEBUG
|
#ifdef CONFIG_NVM_DEBUG
|
||||||
atomic_set(&rb->inflight_sync_point, 0);
|
atomic_set(&rb->inflight_flush_point, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -349,26 +349,26 @@ void pblk_rb_write_entry_gc(struct pblk_rb *rb, void *data,
|
||||||
smp_store_release(&entry->w_ctx.flags, flags);
|
smp_store_release(&entry->w_ctx.flags, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pblk_rb_sync_point_set(struct pblk_rb *rb, struct bio *bio,
|
static int pblk_rb_flush_point_set(struct pblk_rb *rb, struct bio *bio,
|
||||||
unsigned int pos)
|
unsigned int pos)
|
||||||
{
|
{
|
||||||
struct pblk_rb_entry *entry;
|
struct pblk_rb_entry *entry;
|
||||||
unsigned int subm, sync_point;
|
unsigned int subm, flush_point;
|
||||||
|
|
||||||
subm = READ_ONCE(rb->subm);
|
subm = READ_ONCE(rb->subm);
|
||||||
|
|
||||||
#ifdef CONFIG_NVM_DEBUG
|
#ifdef CONFIG_NVM_DEBUG
|
||||||
atomic_inc(&rb->inflight_sync_point);
|
atomic_inc(&rb->inflight_flush_point);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (pos == subm)
|
if (pos == subm)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
sync_point = (pos == 0) ? (rb->nr_entries - 1) : (pos - 1);
|
flush_point = (pos == 0) ? (rb->nr_entries - 1) : (pos - 1);
|
||||||
entry = &rb->entries[sync_point];
|
entry = &rb->entries[flush_point];
|
||||||
|
|
||||||
/* Protect syncs */
|
/* Protect flush points */
|
||||||
smp_store_release(&rb->sync_point, sync_point);
|
smp_store_release(&rb->flush_point, flush_point);
|
||||||
|
|
||||||
if (!bio)
|
if (!bio)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -416,7 +416,7 @@ void pblk_rb_flush(struct pblk_rb *rb)
|
||||||
struct pblk *pblk = container_of(rb, struct pblk, rwb);
|
struct pblk *pblk = container_of(rb, struct pblk, rwb);
|
||||||
unsigned int mem = READ_ONCE(rb->mem);
|
unsigned int mem = READ_ONCE(rb->mem);
|
||||||
|
|
||||||
if (pblk_rb_sync_point_set(rb, NULL, mem))
|
if (pblk_rb_flush_point_set(rb, NULL, mem))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
pblk_write_should_kick(pblk);
|
pblk_write_should_kick(pblk);
|
||||||
|
@ -440,7 +440,7 @@ static int pblk_rb_may_write_flush(struct pblk_rb *rb, unsigned int nr_entries,
|
||||||
#ifdef CONFIG_NVM_DEBUG
|
#ifdef CONFIG_NVM_DEBUG
|
||||||
atomic_long_inc(&pblk->nr_flush);
|
atomic_long_inc(&pblk->nr_flush);
|
||||||
#endif
|
#endif
|
||||||
if (pblk_rb_sync_point_set(&pblk->rwb, bio, mem))
|
if (pblk_rb_flush_point_set(&pblk->rwb, bio, mem))
|
||||||
*io_ret = NVM_IO_OK;
|
*io_ret = NVM_IO_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -607,17 +607,18 @@ try:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & PBLK_FLUSH_ENTRY) {
|
if (flags & PBLK_FLUSH_ENTRY) {
|
||||||
unsigned int sync_point;
|
unsigned int flush_point;
|
||||||
|
|
||||||
sync_point = READ_ONCE(rb->sync_point);
|
flush_point = READ_ONCE(rb->flush_point);
|
||||||
if (sync_point == pos) {
|
if (flush_point == pos) {
|
||||||
/* Protect syncs */
|
/* Protect flush points */
|
||||||
smp_store_release(&rb->sync_point, EMPTY_ENTRY);
|
smp_store_release(&rb->flush_point,
|
||||||
|
EMPTY_ENTRY);
|
||||||
}
|
}
|
||||||
|
|
||||||
flags &= ~PBLK_FLUSH_ENTRY;
|
flags &= ~PBLK_FLUSH_ENTRY;
|
||||||
#ifdef CONFIG_NVM_DEBUG
|
#ifdef CONFIG_NVM_DEBUG
|
||||||
atomic_dec(&rb->inflight_sync_point);
|
atomic_dec(&rb->inflight_flush_point);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -746,20 +747,20 @@ unsigned int pblk_rb_sync_advance(struct pblk_rb *rb, unsigned int nr_entries)
|
||||||
return sync;
|
return sync;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int pblk_rb_sync_point_count(struct pblk_rb *rb)
|
unsigned int pblk_rb_flush_point_count(struct pblk_rb *rb)
|
||||||
{
|
{
|
||||||
unsigned int subm, sync_point;
|
unsigned int subm, flush_point;
|
||||||
unsigned int count;
|
unsigned int count;
|
||||||
|
|
||||||
/* Protect syncs */
|
/* Protect flush points */
|
||||||
sync_point = smp_load_acquire(&rb->sync_point);
|
flush_point = smp_load_acquire(&rb->flush_point);
|
||||||
if (sync_point == EMPTY_ENTRY)
|
if (flush_point == EMPTY_ENTRY)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
subm = READ_ONCE(rb->subm);
|
subm = READ_ONCE(rb->subm);
|
||||||
|
|
||||||
/* The sync point itself counts as a sector to sync */
|
/* The sync point itself counts as a sector to sync */
|
||||||
count = pblk_rb_ring_count(sync_point, subm, rb->nr_entries) + 1;
|
count = pblk_rb_ring_count(flush_point, subm, rb->nr_entries) + 1;
|
||||||
|
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
@ -801,7 +802,7 @@ int pblk_rb_tear_down_check(struct pblk_rb *rb)
|
||||||
|
|
||||||
if ((rb->mem == rb->subm) && (rb->subm == rb->sync) &&
|
if ((rb->mem == rb->subm) && (rb->subm == rb->sync) &&
|
||||||
(rb->sync == rb->l2p_update) &&
|
(rb->sync == rb->l2p_update) &&
|
||||||
(rb->sync_point == EMPTY_ENTRY)) {
|
(rb->flush_point == EMPTY_ENTRY)) {
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -848,7 +849,7 @@ ssize_t pblk_rb_sysfs(struct pblk_rb *rb, char *buf)
|
||||||
queued_entries++;
|
queued_entries++;
|
||||||
spin_unlock_irq(&rb->s_lock);
|
spin_unlock_irq(&rb->s_lock);
|
||||||
|
|
||||||
if (rb->sync_point != EMPTY_ENTRY)
|
if (rb->flush_point != EMPTY_ENTRY)
|
||||||
offset = scnprintf(buf, PAGE_SIZE,
|
offset = scnprintf(buf, PAGE_SIZE,
|
||||||
"%u\t%u\t%u\t%u\t%u\t%u\t%u - %u/%u/%u - %d\n",
|
"%u\t%u\t%u\t%u\t%u\t%u\t%u - %u/%u/%u - %d\n",
|
||||||
rb->nr_entries,
|
rb->nr_entries,
|
||||||
|
@ -857,14 +858,14 @@ ssize_t pblk_rb_sysfs(struct pblk_rb *rb, char *buf)
|
||||||
rb->sync,
|
rb->sync,
|
||||||
rb->l2p_update,
|
rb->l2p_update,
|
||||||
#ifdef CONFIG_NVM_DEBUG
|
#ifdef CONFIG_NVM_DEBUG
|
||||||
atomic_read(&rb->inflight_sync_point),
|
atomic_read(&rb->inflight_flush_point),
|
||||||
#else
|
#else
|
||||||
0,
|
0,
|
||||||
#endif
|
#endif
|
||||||
rb->sync_point,
|
rb->flush_point,
|
||||||
pblk_rb_read_count(rb),
|
pblk_rb_read_count(rb),
|
||||||
pblk_rb_space(rb),
|
pblk_rb_space(rb),
|
||||||
pblk_rb_sync_point_count(rb),
|
pblk_rb_flush_point_count(rb),
|
||||||
queued_entries);
|
queued_entries);
|
||||||
else
|
else
|
||||||
offset = scnprintf(buf, PAGE_SIZE,
|
offset = scnprintf(buf, PAGE_SIZE,
|
||||||
|
@ -875,13 +876,13 @@ ssize_t pblk_rb_sysfs(struct pblk_rb *rb, char *buf)
|
||||||
rb->sync,
|
rb->sync,
|
||||||
rb->l2p_update,
|
rb->l2p_update,
|
||||||
#ifdef CONFIG_NVM_DEBUG
|
#ifdef CONFIG_NVM_DEBUG
|
||||||
atomic_read(&rb->inflight_sync_point),
|
atomic_read(&rb->inflight_flush_point),
|
||||||
#else
|
#else
|
||||||
0,
|
0,
|
||||||
#endif
|
#endif
|
||||||
pblk_rb_read_count(rb),
|
pblk_rb_read_count(rb),
|
||||||
pblk_rb_space(rb),
|
pblk_rb_space(rb),
|
||||||
pblk_rb_sync_point_count(rb),
|
pblk_rb_flush_point_count(rb),
|
||||||
queued_entries);
|
queued_entries);
|
||||||
|
|
||||||
return offset;
|
return offset;
|
||||||
|
|
|
@ -508,7 +508,7 @@ static int pblk_submit_write(struct pblk *pblk)
|
||||||
if (!secs_avail)
|
if (!secs_avail)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
secs_to_flush = pblk_rb_sync_point_count(&pblk->rwb);
|
secs_to_flush = pblk_rb_flush_point_count(&pblk->rwb);
|
||||||
if (!secs_to_flush && secs_avail < pblk->min_write_pgs)
|
if (!secs_to_flush && secs_avail < pblk->min_write_pgs)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
|
|
@ -166,7 +166,7 @@ struct pblk_rb {
|
||||||
* the last submitted entry that has
|
* the last submitted entry that has
|
||||||
* been successfully persisted to media
|
* been successfully persisted to media
|
||||||
*/
|
*/
|
||||||
unsigned int sync_point; /* Sync point - last entry that must be
|
unsigned int flush_point; /* Sync point - last entry that must be
|
||||||
* flushed to the media. Used with
|
* flushed to the media. Used with
|
||||||
* REQ_FLUSH and REQ_FUA
|
* REQ_FLUSH and REQ_FUA
|
||||||
*/
|
*/
|
||||||
|
@ -189,7 +189,7 @@ struct pblk_rb {
|
||||||
spinlock_t s_lock; /* Sync lock */
|
spinlock_t s_lock; /* Sync lock */
|
||||||
|
|
||||||
#ifdef CONFIG_NVM_DEBUG
|
#ifdef CONFIG_NVM_DEBUG
|
||||||
atomic_t inflight_sync_point; /* Not served REQ_FLUSH | REQ_FUA */
|
atomic_t inflight_flush_point; /* Not served REQ_FLUSH | REQ_FUA */
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -687,7 +687,7 @@ unsigned int pblk_rb_sync_advance(struct pblk_rb *rb, unsigned int nr_entries);
|
||||||
struct pblk_rb_entry *pblk_rb_sync_scan_entry(struct pblk_rb *rb,
|
struct pblk_rb_entry *pblk_rb_sync_scan_entry(struct pblk_rb *rb,
|
||||||
struct ppa_addr *ppa);
|
struct ppa_addr *ppa);
|
||||||
void pblk_rb_sync_end(struct pblk_rb *rb, unsigned long *flags);
|
void pblk_rb_sync_end(struct pblk_rb *rb, unsigned long *flags);
|
||||||
unsigned int pblk_rb_sync_point_count(struct pblk_rb *rb);
|
unsigned int pblk_rb_flush_point_count(struct pblk_rb *rb);
|
||||||
|
|
||||||
unsigned int pblk_rb_read_count(struct pblk_rb *rb);
|
unsigned int pblk_rb_read_count(struct pblk_rb *rb);
|
||||||
unsigned int pblk_rb_sync_count(struct pblk_rb *rb);
|
unsigned int pblk_rb_sync_count(struct pblk_rb *rb);
|
||||||
|
|
Loading…
Reference in New Issue