assert(theFile->canWrite());
assert(!theBuf.isNull());
- static const int ps = getpagesize();
- const size_t tail = (ps - (theBuf.contentSize() % ps)) % ps;
- const int64_t writeSize = theBuf.contentSize() + tail;
+ // TODO: if DiskIO module is mmap-based, we should be writing whole pages
+ // to avoid triggering read-page;new_head+old_tail;write-page overheads
+
debugs(79, 5, HERE << swap_filen << " at " << offset_ << '+' <<
- theBuf.contentSize() << '+' << tail);
+ theBuf.contentSize());
assert(theBuf.contentSize() <= slotSize);
- assert(writeSize <= slotSize);
// theFile->write may call writeCompleted immediatelly
theFile->write(new WriteRequest(::WriteRequest(theBuf.content(), offset_,
- writeSize, theBuf.freeFunc()), this));
+ theBuf.contentSize(), theBuf.freeFunc()), this));
}
//
if (max_objsize <= 0)
fatal("Rock store requires a positive max-size");
- // Rock::IoState::startWriting() inflates write size to the end of the page
- // so that mmap does not have to read the tail and then write it back.
- // This is a weak check that the padded area will be allocated by [growing]
- // MemBuf and a sufficient check that inflated size will not exceed the
- // slot size.
- static const int ps = getpagesize();
- if (ps > 0 && (max_objsize % ps != 0))
- fatal("Rock store max-size should be a multiple of page size");
-
/*
const int64_t eLimitHi = 0xFFFFFF; // Core sfileno maximum
const int64_t eLimitLo = map.entryLimit(); // dynamic shrinking unsupported