From: Jianpeng Ma Date: Thu, 29 Jan 2015 06:45:51 +0000 (+0800) Subject: osdc: Make ObjectCache can accept fadvise_flags. X-Git-Tag: v0.93~139^2~6 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=28e73a7b8d2cde6ae61efb17d316caf54746e484;p=ceph.git osdc: Make ObjectCache can accept fadvise_flags. The field flags of OSDRead/OSDWrite don't use anymore. Replace it with fadvise_flags. Signed-off-by: Jianpeng Ma --- diff --git a/src/librbd/ImageCtx.cc b/src/librbd/ImageCtx.cc index ddc5cfe524fb..92da3194e2d6 100644 --- a/src/librbd/ImageCtx.cc +++ b/src/librbd/ImageCtx.cc @@ -486,9 +486,9 @@ namespace librbd { } void ImageCtx::aio_read_from_cache(object_t o, bufferlist *bl, size_t len, - uint64_t off, Context *onfinish) { + uint64_t off, Context *onfinish, int fadvise_flags) { snap_lock.get_read(); - ObjectCacher::OSDRead *rd = object_cacher->prepare_read(snap_id, bl, 0); + ObjectCacher::OSDRead *rd = object_cacher->prepare_read(snap_id, bl, fadvise_flags); snap_lock.put_read(); ObjectExtent extent(o, 0 /* a lie */, off, len, 0); extent.oloc.pool = data_ctx.get_id(); @@ -502,10 +502,10 @@ namespace librbd { } void ImageCtx::write_to_cache(object_t o, bufferlist& bl, size_t len, - uint64_t off, Context *onfinish) { + uint64_t off, Context *onfinish, int fadvise_flags) { snap_lock.get_read(); ObjectCacher::OSDWrite *wr = object_cacher->prepare_write(snapc, bl, - utime_t(), 0); + utime_t(), fadvise_flags); snap_lock.put_read(); ObjectExtent extent(o, 0, off, len, 0); extent.oloc.pool = data_ctx.get_id(); @@ -526,7 +526,7 @@ namespace librbd { Cond cond; bool done; Context *onfinish = new C_SafeCond(&mylock, &cond, &done, &r); - aio_read_from_cache(o, bl, len, off, onfinish); + aio_read_from_cache(o, bl, len, off, onfinish, 0); mylock.Lock(); while (!done) cond.Wait(mylock); diff --git a/src/librbd/ImageCtx.h b/src/librbd/ImageCtx.h index 41dfd3398005..df9c84988d83 100644 --- a/src/librbd/ImageCtx.h +++ b/src/librbd/ImageCtx.h @@ -156,9 +156,9 @@ namespace librbd { int get_parent_overlap(librados::snap_t in_snap_id, uint64_t *overlap) const; void aio_read_from_cache(object_t o, bufferlist *bl, size_t len, - uint64_t off, Context *onfinish); + uint64_t off, Context *onfinish, int fadvise_flags); void write_to_cache(object_t o, bufferlist& bl, size_t len, uint64_t off, - Context *onfinish); + Context *onfinish, int fadivse_flags); int read_from_cache(object_t o, bufferlist *bl, size_t len, uint64_t off); void user_flushed(); void flush_cache_aio(Context *onfinish); diff --git a/src/librbd/internal.cc b/src/librbd/internal.cc index 7c51b5c36580..7cf63ae8eaa7 100644 --- a/src/librbd/internal.cc +++ b/src/librbd/internal.cc @@ -3601,7 +3601,7 @@ reprotect_and_return_err: C_AioWrite *req_comp = new C_AioWrite(cct, c); if (ictx->object_cacher) { c->add_request(); - ictx->write_to_cache(p->oid, bl, p->length, p->offset, req_comp); + ictx->write_to_cache(p->oid, bl, p->length, p->offset, req_comp, op_flags); } else { // reverse map this object extent onto the parent vector > objectx; @@ -3797,7 +3797,7 @@ reprotect_and_return_err: ictx->readahead.inc_pending(); ictx->aio_read_from_cache(q->oid, NULL, q->length, q->offset, - req_comp); + req_comp, 0); } } ictx->perfcounter->inc(l_librbd_readahead); @@ -3871,7 +3871,7 @@ reprotect_and_return_err: C_CacheRead *cache_comp = new C_CacheRead(req); ictx->aio_read_from_cache(q->oid, &req->data(), q->length, q->offset, - cache_comp); + cache_comp, op_flags); } else { r = req->send(); if (r == -ENOENT) diff --git a/src/osdc/ObjectCacher.h b/src/osdc/ObjectCacher.h index b2acf986dfb9..da7b17d95d79 100644 --- a/src/osdc/ObjectCacher.h +++ b/src/osdc/ObjectCacher.h @@ -56,8 +56,8 @@ class ObjectCacher { snapid_t snap; map read_data; // bits of data as they come back bufferlist *bl; - int flags; - OSDRead(snapid_t s, bufferlist *b, int f) : snap(s), bl(b), flags(f) {} + int fadvise_flags; + OSDRead(snapid_t s, bufferlist *b, int f) : snap(s), bl(b), fadvise_flags(f) {} }; OSDRead *prepare_read(snapid_t snap, bufferlist *b, int f) { @@ -70,8 +70,8 @@ class ObjectCacher { SnapContext snapc; bufferlist bl; utime_t mtime; - int flags; - OSDWrite(const SnapContext& sc, bufferlist& b, utime_t mt, int f) : snapc(sc), bl(b), mtime(mt), flags(f) {} + int fadvise_flags; + OSDWrite(const SnapContext& sc, bufferlist& b, utime_t mt, int f) : snapc(sc), bl(b), mtime(mt), fadvise_flags(f) {} }; OSDWrite *prepare_write(const SnapContext& sc, bufferlist &b, utime_t mt, int f) {