From: Sage Weil Date: Mon, 7 Jul 2008 18:36:48 +0000 (-0700) Subject: Merge branch 'unstable' into snap X-Git-Tag: v0.4~476 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=182abcec9f4387ce817db8c711385d0a7f690445;p=ceph.git Merge branch 'unstable' into snap --- 182abcec9f4387ce817db8c711385d0a7f690445 diff --cc src/client/Client.cc index 5d6dba39542,a3f31f137ff..90511ade503 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@@ -3205,9 -3125,22 +3208,24 @@@ int Client::_read(Fh *f, __s64 offset, if (in->cap_refs[CEPH_CAP_RDCACHE] == 0) in->get_cap_ref(CEPH_CAP_RDCACHE); + // readahead? + if (f->nr_consec_read) { + loff_t l = f->consec_read_bytes * 2; + l = MAX(l, g_conf.client_readahead_min); + l = MIN(l, MIN(g_conf.client_readahead_max_bytes, + g_conf.client_readahead_max_periods + * ceph_file_layout_period(in->inode.layout))); + dout(10) << "readahead " << f->nr_consec_read << " reads " + << f->consec_read_bytes << " bytes ... readahead " << offset << "~" << l + << " (caller wants " << offset << "~" << size << ")" << dendl; - objectcacher->file_read(in->inode.ino, &in->inode.layout, offset, l, NULL, 0, 0); ++ #warning bleh ++ //objectcacher->file_read(in->inode.ino, &in->inode.layout, offset, l, NULL, 0, 0); + dout(10) << "readahead initiated" << dendl; + } + // read (and possibly block) - r = objectcacher->file_read(in->inode.ino, &in->inode.layout, offset, size, bl, 0, onfinish); + #warning bleh + //r = objectcacher->file_read(in->inode.ino, &in->inode.layout, offset, size, bl, 0, onfinish); if (r == 0) { while (!done) diff --cc src/client/Client.h index bd9da386466,7c41acc90bb..76bffcf9a23 --- a/src/client/Client.h +++ b/src/client/Client.h @@@ -958,11 -904,8 +964,11 @@@ public int get_stripe_width(int fd); int get_stripe_period(int fd); int enumerate_layout(int fd, list& result, - off_t length, off_t offset); + loff_t length, loff_t offset); + int mksnap(const char *path, const char *name); + int rmsnap(const char *path, const char *name); + // low-level interface int ll_lookup(inodeno_t parent, const char *name, struct stat *attr, int uid = -1, int gid = -1); bool ll_forget(inodeno_t ino, int count); diff --cc src/osdc/Objecter.h index 04efaaaf577,2e5d28dec4b..838030fb167 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@@ -85,8 -84,9 +85,9 @@@ class Objecter map read_data; // bits of data as they come back int flags; - OSDRead(bufferlist *b, int f) : bl(b), onfinish(0), flags(f) { + OSDRead(vector &s, bufferlist *b, int f) : OSDOp(s), bl(b), onfinish(0), flags(f) { - bl->clear(); + if (bl) + bl->clear(); } };