34
void ThreadLocalIntents::push(const WriteIntent& x) {
35
ThreadLocalIntents::~ThreadLocalIntents() {
36
fassert( 16731, intents.size() == 0 );
39
void ThreadLocalIntents::push(const WriteIntent& x) {
35
40
if( !commitJob._hasWritten )
36
41
commitJob._hasWritten = true;
43
if( intents.size() == N ) {
49
intents.push_back( x );
40
50
#if( CHECK_SPOOLING )
44
54
void ThreadLocalIntents::_unspool() {
46
for( int j = 0; j < n; j++ )
47
commitJob.note(i[j].start(), i[j].length());
49
nSpooled.signedAdd(-n);
52
dassert( cmdLine.dur );
55
if ( intents.size() == 0 )
58
for( unsigned j = 0; j < intents.size(); j++ ) {
59
commitJob.note(intents[j].start(), intents[j].length());
63
nSpooled.signedAdd( -1 * static_cast<int>(intents.size()) );
69
bool ThreadLocalIntents::condense() {
70
std::sort( intents.begin(), intents.end() );
72
bool didAnything = false;
74
for ( unsigned x = 0; x < intents.size() - 1 ; x++ ) {
75
if ( intents[x].overlaps( intents[x+1] ) ) {
76
intents[x].absorb( intents[x+1] );
77
intents.erase( intents.begin() + x + 1 );
81
nSpooled.signedAdd(-1);
55
89
void ThreadLocalIntents::unspool() {
90
if ( intents.size() ) {
57
91
SimpleMutex::scoped_lock lk(commitJob.groupCommitMutex);