Rename min/max _used to _flushed
parent
41dddddbf2
commit
1696446545
|
@ -152,7 +152,7 @@ struct blockstore_op_private_t
|
||||||
std::vector<fulfill_read_t> read_vec;
|
std::vector<fulfill_read_t> read_vec;
|
||||||
|
|
||||||
// Sync, write
|
// Sync, write
|
||||||
uint64_t min_used_journal_sector, max_used_journal_sector;
|
uint64_t min_flushed_journal_sector, max_flushed_journal_sector;
|
||||||
|
|
||||||
// Write
|
// Write
|
||||||
struct iovec iov_zerofill[3];
|
struct iovec iov_zerofill[3];
|
||||||
|
|
|
@ -60,7 +60,7 @@ int blockstore_impl_t::dequeue_rollback(blockstore_op_t *op)
|
||||||
journal.sector_info[journal.cur_sector].dirty)
|
journal.sector_info[journal.cur_sector].dirty)
|
||||||
{
|
{
|
||||||
if (cur_sector == -1)
|
if (cur_sector == -1)
|
||||||
PRIV(op)->min_used_journal_sector = 1 + journal.cur_sector;
|
PRIV(op)->min_flushed_journal_sector = 1 + journal.cur_sector;
|
||||||
cur_sector = journal.cur_sector;
|
cur_sector = journal.cur_sector;
|
||||||
prepare_journal_sector_write(journal, cur_sector, sqe[s++], cb);
|
prepare_journal_sector_write(journal, cur_sector, sqe[s++], cb);
|
||||||
}
|
}
|
||||||
|
@ -103,12 +103,12 @@ int blockstore_impl_t::dequeue_rollback(blockstore_op_t *op)
|
||||||
if (cur_sector != journal.cur_sector)
|
if (cur_sector != journal.cur_sector)
|
||||||
{
|
{
|
||||||
if (cur_sector == -1)
|
if (cur_sector == -1)
|
||||||
PRIV(op)->min_used_journal_sector = 1 + journal.cur_sector;
|
PRIV(op)->min_flushed_journal_sector = 1 + journal.cur_sector;
|
||||||
cur_sector = journal.cur_sector;
|
cur_sector = journal.cur_sector;
|
||||||
prepare_journal_sector_write(journal, cur_sector, sqe[s++], cb);
|
prepare_journal_sector_write(journal, cur_sector, sqe[s++], cb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PRIV(op)->max_used_journal_sector = 1 + journal.cur_sector;
|
PRIV(op)->max_flushed_journal_sector = 1 + journal.cur_sector;
|
||||||
PRIV(op)->pending_ops = s;
|
PRIV(op)->pending_ops = s;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,7 +98,7 @@ int blockstore_impl_t::dequeue_stable(blockstore_op_t *op)
|
||||||
journal.sector_info[journal.cur_sector].dirty)
|
journal.sector_info[journal.cur_sector].dirty)
|
||||||
{
|
{
|
||||||
if (cur_sector == -1)
|
if (cur_sector == -1)
|
||||||
PRIV(op)->min_used_journal_sector = 1 + journal.cur_sector;
|
PRIV(op)->min_flushed_journal_sector = 1 + journal.cur_sector;
|
||||||
cur_sector = journal.cur_sector;
|
cur_sector = journal.cur_sector;
|
||||||
prepare_journal_sector_write(journal, cur_sector, sqe[s++], cb);
|
prepare_journal_sector_write(journal, cur_sector, sqe[s++], cb);
|
||||||
}
|
}
|
||||||
|
@ -120,12 +120,12 @@ int blockstore_impl_t::dequeue_stable(blockstore_op_t *op)
|
||||||
if (cur_sector != journal.cur_sector)
|
if (cur_sector != journal.cur_sector)
|
||||||
{
|
{
|
||||||
if (cur_sector == -1)
|
if (cur_sector == -1)
|
||||||
PRIV(op)->min_used_journal_sector = 1 + journal.cur_sector;
|
PRIV(op)->min_flushed_journal_sector = 1 + journal.cur_sector;
|
||||||
cur_sector = journal.cur_sector;
|
cur_sector = journal.cur_sector;
|
||||||
prepare_journal_sector_write(journal, cur_sector, sqe[s++], cb);
|
prepare_journal_sector_write(journal, cur_sector, sqe[s++], cb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PRIV(op)->max_used_journal_sector = 1 + journal.cur_sector;
|
PRIV(op)->max_flushed_journal_sector = 1 + journal.cur_sector;
|
||||||
PRIV(op)->pending_ops = s;
|
PRIV(op)->pending_ops = s;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,7 +54,7 @@ int blockstore_impl_t::continue_sync(blockstore_op_t *op)
|
||||||
// Write out the last journal sector if it happens to be dirty
|
// Write out the last journal sector if it happens to be dirty
|
||||||
BS_SUBMIT_GET_ONLY_SQE(sqe);
|
BS_SUBMIT_GET_ONLY_SQE(sqe);
|
||||||
prepare_journal_sector_write(journal, journal.cur_sector, sqe, cb);
|
prepare_journal_sector_write(journal, journal.cur_sector, sqe, cb);
|
||||||
PRIV(op)->min_used_journal_sector = PRIV(op)->max_used_journal_sector = 1 + journal.cur_sector;
|
PRIV(op)->min_flushed_journal_sector = PRIV(op)->max_flushed_journal_sector = 1 + journal.cur_sector;
|
||||||
PRIV(op)->pending_ops = 1;
|
PRIV(op)->pending_ops = 1;
|
||||||
PRIV(op)->sync_state = SYNC_JOURNAL_WRITE_SENT;
|
PRIV(op)->sync_state = SYNC_JOURNAL_WRITE_SENT;
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -81,7 +81,7 @@ int blockstore_impl_t::continue_sync(blockstore_op_t *op)
|
||||||
my_uring_prep_fsync(sqe, data_fd, IORING_FSYNC_DATASYNC);
|
my_uring_prep_fsync(sqe, data_fd, IORING_FSYNC_DATASYNC);
|
||||||
data->iov = { 0 };
|
data->iov = { 0 };
|
||||||
data->callback = cb;
|
data->callback = cb;
|
||||||
PRIV(op)->min_used_journal_sector = PRIV(op)->max_used_journal_sector = 0;
|
PRIV(op)->min_flushed_journal_sector = PRIV(op)->max_flushed_journal_sector = 0;
|
||||||
PRIV(op)->pending_ops = 1;
|
PRIV(op)->pending_ops = 1;
|
||||||
PRIV(op)->sync_state = SYNC_DATA_SYNC_SENT;
|
PRIV(op)->sync_state = SYNC_DATA_SYNC_SENT;
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -121,7 +121,7 @@ int blockstore_impl_t::continue_sync(blockstore_op_t *op)
|
||||||
journal.sector_info[journal.cur_sector].dirty)
|
journal.sector_info[journal.cur_sector].dirty)
|
||||||
{
|
{
|
||||||
if (cur_sector == -1)
|
if (cur_sector == -1)
|
||||||
PRIV(op)->min_used_journal_sector = 1 + journal.cur_sector;
|
PRIV(op)->min_flushed_journal_sector = 1 + journal.cur_sector;
|
||||||
cur_sector = journal.cur_sector;
|
cur_sector = journal.cur_sector;
|
||||||
prepare_journal_sector_write(journal, cur_sector, sqe[s++], cb);
|
prepare_journal_sector_write(journal, cur_sector, sqe[s++], cb);
|
||||||
}
|
}
|
||||||
|
@ -146,12 +146,12 @@ int blockstore_impl_t::continue_sync(blockstore_op_t *op)
|
||||||
if (cur_sector != journal.cur_sector)
|
if (cur_sector != journal.cur_sector)
|
||||||
{
|
{
|
||||||
if (cur_sector == -1)
|
if (cur_sector == -1)
|
||||||
PRIV(op)->min_used_journal_sector = 1 + journal.cur_sector;
|
PRIV(op)->min_flushed_journal_sector = 1 + journal.cur_sector;
|
||||||
cur_sector = journal.cur_sector;
|
cur_sector = journal.cur_sector;
|
||||||
prepare_journal_sector_write(journal, cur_sector, sqe[s++], cb);
|
prepare_journal_sector_write(journal, cur_sector, sqe[s++], cb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PRIV(op)->max_used_journal_sector = 1 + journal.cur_sector;
|
PRIV(op)->max_flushed_journal_sector = 1 + journal.cur_sector;
|
||||||
PRIV(op)->pending_ops = s;
|
PRIV(op)->pending_ops = s;
|
||||||
PRIV(op)->sync_state = SYNC_JOURNAL_WRITE_SENT;
|
PRIV(op)->sync_state = SYNC_JOURNAL_WRITE_SENT;
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -128,7 +128,7 @@ int blockstore_impl_t::dequeue_write(blockstore_op_t *op)
|
||||||
sqe, data_fd, PRIV(op)->iov_zerofill, vcnt, data_offset + (loc << block_order) + op->offset - stripe_offset
|
sqe, data_fd, PRIV(op)->iov_zerofill, vcnt, data_offset + (loc << block_order) + op->offset - stripe_offset
|
||||||
);
|
);
|
||||||
PRIV(op)->pending_ops = 1;
|
PRIV(op)->pending_ops = 1;
|
||||||
PRIV(op)->min_used_journal_sector = PRIV(op)->max_used_journal_sector = 0;
|
PRIV(op)->min_flushed_journal_sector = PRIV(op)->max_flushed_journal_sector = 0;
|
||||||
// Remember big write as unsynced
|
// Remember big write as unsynced
|
||||||
unsynced_big_writes.push_back((obj_ver_id){
|
unsynced_big_writes.push_back((obj_ver_id){
|
||||||
.oid = op->oid,
|
.oid = op->oid,
|
||||||
|
@ -163,13 +163,12 @@ int blockstore_impl_t::dequeue_write(blockstore_op_t *op)
|
||||||
if (sqe1)
|
if (sqe1)
|
||||||
{
|
{
|
||||||
prepare_journal_sector_write(journal, journal.cur_sector, sqe1, cb);
|
prepare_journal_sector_write(journal, journal.cur_sector, sqe1, cb);
|
||||||
// FIXME rename to min/max _flushing
|
PRIV(op)->min_flushed_journal_sector = PRIV(op)->max_flushed_journal_sector = 1 + journal.cur_sector;
|
||||||
PRIV(op)->min_used_journal_sector = PRIV(op)->max_used_journal_sector = 1 + journal.cur_sector;
|
|
||||||
PRIV(op)->pending_ops++;
|
PRIV(op)->pending_ops++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PRIV(op)->min_used_journal_sector = PRIV(op)->max_used_journal_sector = 0;
|
PRIV(op)->min_flushed_journal_sector = PRIV(op)->max_flushed_journal_sector = 0;
|
||||||
}
|
}
|
||||||
// Then pre-fill journal entry
|
// Then pre-fill journal entry
|
||||||
journal_entry_small_write *je = (journal_entry_small_write*)
|
journal_entry_small_write *je = (journal_entry_small_write*)
|
||||||
|
@ -251,18 +250,18 @@ void blockstore_impl_t::handle_write_event(ring_data_t *data, blockstore_op_t *o
|
||||||
void blockstore_impl_t::release_journal_sectors(blockstore_op_t *op)
|
void blockstore_impl_t::release_journal_sectors(blockstore_op_t *op)
|
||||||
{
|
{
|
||||||
// Release used journal sectors
|
// Release used journal sectors
|
||||||
if (PRIV(op)->min_used_journal_sector > 0 &&
|
if (PRIV(op)->min_flushed_journal_sector > 0 &&
|
||||||
PRIV(op)->max_used_journal_sector > 0)
|
PRIV(op)->max_flushed_journal_sector > 0)
|
||||||
{
|
{
|
||||||
uint64_t s = PRIV(op)->min_used_journal_sector;
|
uint64_t s = PRIV(op)->min_flushed_journal_sector;
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
journal.sector_info[s-1].usage_count--;
|
journal.sector_info[s-1].usage_count--;
|
||||||
if (s == PRIV(op)->max_used_journal_sector)
|
if (s == PRIV(op)->max_flushed_journal_sector)
|
||||||
break;
|
break;
|
||||||
s = 1 + s % journal.sector_count;
|
s = 1 + s % journal.sector_count;
|
||||||
}
|
}
|
||||||
PRIV(op)->min_used_journal_sector = PRIV(op)->max_used_journal_sector = 0;
|
PRIV(op)->min_flushed_journal_sector = PRIV(op)->max_flushed_journal_sector = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -319,7 +318,7 @@ int blockstore_impl_t::dequeue_del(blockstore_op_t *op)
|
||||||
journal.crc32_last = je->crc32;
|
journal.crc32_last = je->crc32;
|
||||||
auto cb = [this, op](ring_data_t *data) { handle_write_event(data, op); };
|
auto cb = [this, op](ring_data_t *data) { handle_write_event(data, op); };
|
||||||
prepare_journal_sector_write(journal, journal.cur_sector, sqe, cb);
|
prepare_journal_sector_write(journal, journal.cur_sector, sqe, cb);
|
||||||
PRIV(op)->min_used_journal_sector = PRIV(op)->max_used_journal_sector = 1 + journal.cur_sector;
|
PRIV(op)->min_flushed_journal_sector = PRIV(op)->max_flushed_journal_sector = 1 + journal.cur_sector;
|
||||||
PRIV(op)->pending_ops = 1;
|
PRIV(op)->pending_ops = 1;
|
||||||
dirty_it->second.state = ST_DEL_SUBMITTED;
|
dirty_it->second.state = ST_DEL_SUBMITTED;
|
||||||
// Remember small write as unsynced
|
// Remember small write as unsynced
|
||||||
|
|
Loading…
Reference in New Issue