Commit 8154d296 authored by Hans Holmberg's avatar Hans Holmberg Committed by Jens Axboe

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: default avatarHans Holmberg <hans.holmberg@cnexlabs.com>
Signed-off-by: default avatarJavier González <javier@cnexlabs.com>
Signed-off-by: default avatarMatias Bjørling <m@bjorling.me>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 06bc072b
...@@ -54,7 +54,7 @@ int pblk_rb_init(struct pblk_rb *rb, struct pblk_rb_entry *rb_entry_base, ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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, ...@@ -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 @@ unsigned int pblk_rb_read_to_bio(struct pblk_rb *rb, struct nvm_rq *rqd, ...@@ -607,17 +607,18 @@ unsigned int pblk_rb_read_to_bio(struct pblk_rb *rb, struct nvm_rq *rqd,
} }
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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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 { ...@@ -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 { ...@@ -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); ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment