// async, caching, non-blocking.
r = objectcacher->file_write(&in->oset, &in->layout, in->snaprealm->get_snap_context(),
- offset, size, bl, ceph_clock_now(cct), 0,
- client_lock);
-
+ offset, size, bl, ceph_clock_now(cct), 0);
put_cap_ref(in, CEPH_CAP_FILE_BUFFER);
if (r < 0)
wr->extents.push_back(extent);
{
Mutex::Locker l(cache_lock);
- object_cacher->writex(wr, object_set, cache_lock, onfinish);
+ object_cacher->writex(wr, object_set, onfinish);
}
}
waitfor_read.splice(waitfor_read.end(), ls);
}
-int ObjectCacher::writex(OSDWrite *wr, ObjectSet *oset, Mutex& wait_on_lock,
- Context *onfreespace)
+int ObjectCacher::writex(OSDWrite *wr, ObjectSet *oset, Context *onfreespace)
{
assert(lock.is_locked());
utime_t now = ceph_clock_now(cct);
}
}
- int r = _wait_for_write(wr, bytes_written, oset, wait_on_lock, onfreespace);
+ int r = _wait_for_write(wr, bytes_written, oset, onfreespace);
delete wr;
//verify_stats();
}
// blocking wait for write.
-int ObjectCacher::_wait_for_write(OSDWrite *wr, uint64_t len, ObjectSet *oset, Mutex& lock, Context *onfreespace)
+int ObjectCacher::_wait_for_write(OSDWrite *wr, uint64_t len, ObjectSet *oset, Context *onfreespace)
{
assert(lock.is_locked());
int ret = 0;
* the return value is total bytes read
*/
int readx(OSDRead *rd, ObjectSet *oset, Context *onfinish);
- int writex(OSDWrite *wr, ObjectSet *oset, Mutex& wait_on_lock,
- Context *onfreespace);
+ int writex(OSDWrite *wr, ObjectSet *oset, Context *onfreespace);
bool is_cached(ObjectSet *oset, vector<ObjectExtent>& extents, snapid_t snapid);
private:
// write blocking
- int _wait_for_write(OSDWrite *wr, uint64_t len, ObjectSet *oset, Mutex& lock,
- Context *onfreespace);
+ int _wait_for_write(OSDWrite *wr, uint64_t len, ObjectSet *oset, Context *onfreespace);
void maybe_wait_for_writeback(uint64_t len);
bool _flush_set_finish(C_GatherBuilder *gather, Context *onfinish);
int file_write(ObjectSet *oset, ceph_file_layout *layout, const SnapContext& snapc,
loff_t offset, uint64_t len,
- bufferlist& bl, utime_t mtime, int flags,
- Mutex& wait_on_lock) {
+ bufferlist& bl, utime_t mtime, int flags) {
OSDWrite *wr = prepare_write(snapc, bl, mtime, flags);
Striper::file_to_extents(cct, oset->ino, layout, offset, len, oset->truncate_size, wr->extents);
- return writex(wr, oset, wait_on_lock, NULL);
+ return writex(wr, oset, NULL);
}
bool file_flush(ObjectSet *oset, ceph_file_layout *layout, const SnapContext& snapc,
ObjectCacher::OSDWrite *wr = obc.prepare_write(snapc, bl, utime_t(), 0);
wr->extents.push_back(op->extent);
lock.Lock();
- obc.writex(wr, &object_set, lock, NULL);
+ obc.writex(wr, &object_set, NULL);
lock.Unlock();
}
}