33 #include "mongo/util/concurrency/mutex.h" 50 return (
char*)
p -
len;
74 return (out <<
"p: " << wi.
p <<
" end: " << wi.
end() <<
" len: " << wi.
len);
91 MONGO_DISALLOW_COPYING(
Already);
99 memset(
this, 0,
sizeof(*
this));
109 const unsigned x = hashPointer(p);
110 std::pair<void*, int>& nd = nodes[x % Prime];
113 if (nd.second < len) {
128 unsigned char*
p = (
unsigned char*)&v;
129 for (
unsigned i = 0; i <
sizeof(
void*); i++) {
135 std::pair<void*, int> nodes[Prime];
152 void noteOp(std::shared_ptr<DurOp>
p);
159 void note(
void* p,
int len);
172 void committingReset();
187 sort(_intents.begin(), _intents.end());
191 const DurOpsVector&
ops()
const {
bool hasWritten() const
When this value is false we don't have to do any group commit.
Definition: dur_commitjob.h:164
static unsigned hashPointer(void *v)
Definition: dur_commitjob.h:126
size_t _bytes
Definition: dur_commitjob.h:216
size_t bytes() const
We check how much written and if it is getting to be a lot, we commit sooner.
Definition: dur_commitjob.h:177
friend std::ostream & operator<<(std::ostream &out, const WriteIntent &wi)
Definition: dur_commitjob.h:73
Tracks all write operations on the private view so they can be journaled.
Definition: dur_commitjob.h:142
unsigned len
Definition: dur_commitjob.h:79
void absorb(const WriteIntent &other)
Definition: dur_commitjob.cpp:54
uint64_t _lastComplainMs
Definition: dur_commitjob.h:219
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
SimpleMutex groupCommitMutex
Definition: dur_commitjob.h:195
void _insertWriteIntent(void *p, int len)
Definition: dur_commitjob.h:198
unsigned _complains
Definition: dur_commitjob.h:220
DurOpsVector _durOps
Definition: dur_commitjob.h:211
bool overlaps(const WriteIntent &rhs) const
Definition: dur_commitjob.h:62
Already()
Definition: dur_commitjob.h:94
bool checkAndSet(void *p, int len)
Checks if we have Already recorded/indicated our write intent for this region of memory and automatic...
Definition: dur_commitjob.h:108
Declaration of an intent to write to a region of a memory mapped view.
Definition: dur_commitjob.h:45
void clear()
Definition: dur_commitjob.h:98
const WriteIntentsVector & getIntentsSorted()
Sorts the internal list of write intents so that overlapping and duplicate items can be merged...
Definition: dur_commitjob.h:186
Already< 127 > _alreadyNoted
Definition: dur_commitjob.h:207
WriteIntentsVector _intents
Definition: dur_commitjob.h:208
std::vector< WriteIntent > WriteIntentsVector
Definition: dur_commitjob.h:82
size_t _lastNotedPos
Definition: dur_commitjob.h:215
Bitmap to remember things we have already marked for journaling.
Definition: dur_commitjob.h:90
void * start() const
Definition: dur_commitjob.h:49
const DurOpsVector & ops() const
Definition: dur_commitjob.h:191
bool contains(const WriteIntent &rhs) const
Definition: dur_commitjob.h:66
WriteIntent(void *a, unsigned b)
Definition: dur_commitjob.h:47
void * p
Definition: dur_commitjob.h:78
bool _hasWritten
Definition: dur_commitjob.h:204
unsigned length() const
Definition: dur_commitjob.h:55
void * end() const
Definition: dur_commitjob.h:52
bool operator<(const WriteIntent &rhs) const
Definition: dur_commitjob.h:58
WriteIntent()
Definition: dur_commitjob.h:46
std::vector< std::shared_ptr< DurOp > > DurOpsVector
Definition: dur_commitjob.h:38