#undef dout
#define dout(x) if (x <= g_conf.debug_ebofs) cout << "ebofs."
+#define derr(x) if (x <= g_conf.debug_ebofs) cerr << "ebofs."
char *nice_blocks(block_t b)
{
<< "size " << bc.get_size()
<< ", trimmable " << bc.get_trimmable()
<< ", max " << g_conf.ebofs_bc_size
+ << "; dirty " << bc.get_stat_dirty()
+ << ", tx " << bc.get_stat_tx()
+ << ", max dirty " << g_conf.ebofs_bc_max_dirty
<< endl;
assert(old.size() == 1);
if (bc.bh_cancel_write(bh)) {
- dout(10) << "alloc_write unallocated " << old[0] << ", canceled " << *bh << endl;
+ dout(10) << "alloc_write unallocated tx " << old[0] << ", canceled " << *bh << endl;
allocator.unallocate(old[0]); // release (into free)
+ alloc.insert(bh->start(), bh->length());
} else {
- dout(10) << "alloc_write released " << old[0] << ", couldn't canceled " << *bh << endl;
- allocator.release(old[0]); // release (into limbo)
+ if (bh->start() >= start && bh->end() <= start+len) {
+ dout(10) << "alloc_write released tx " << old[0] << ", couldn't cancel " << *bh << endl;
+ allocator.release(old[0]); // release (into limbo)
+ alloc.insert(bh->start(), bh->length());
+ } else {
+ dout(10) << "alloc_write skipped tx " << old[0] << ", not entirely within "
+ << start << "~" << len << " and couldn't cancel " << *bh << endl;
+ }
}
-
- alloc.insert(bh->start(), bh->length());
}
dout(10) << "alloc_write will (re)alloc " << alloc << " on " << *on << endl;
while (_write_will_block())
bc.waitfor_stat(); // waits on ebofs_lock
- dout(7) << "_write unblocked "
+ dout(10) << "_write unblocked "
<< hex << oid << dec << " " << offset << "~" << length << endl;
}
'nummds' => 1,
'numosd' => [8],#10,14,16],
'numclient' => [10*16],
- 'n' => 13,
+ 'n' => 15,
'fs' => 'ebofs',
'writefile' => 1,
'writefile_size' => [4096,
-# 8*1024,
+ 8*1024,
16*1024,
-# 32*1024,
+ 32*1024,
64*1024,
-# 128*1024,
+ 128*1024,
256*1024,
# 512*1024,
# 4*1024*1024,
# 2*1024*1024,
- 1024*1024],
+# 1024*1024
+],
'writefile_mb' => 10000,
'file_layout_num_rep' => 1,
'osd_pg_bits' => 12,
- 'ebofs_freelist' => [0, 1080, 65400],
+# 'ebofs_freelist' => [0, 1080, 65400],
+ 'custom' => '--objecter_buffer_uncommitted 0',
#'custom' => '--tcp_skip_rank0',