]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge branch 'unstable' into snap
authorSage Weil <sage@newdream.net>
Mon, 7 Jul 2008 18:36:48 +0000 (11:36 -0700)
committerSage Weil <sage@newdream.net>
Mon, 7 Jul 2008 18:36:48 +0000 (11:36 -0700)
1  2 
src/client/Client.cc
src/client/Client.h
src/config.cc
src/osdc/ObjectCacher.cc
src/osdc/ObjectCacher.h
src/osdc/Objecter.h

index 5d6dba39542f54c5695bf5b657e81e086dd13da1,a3f31f137ff1e918d51276eb969edfc786eba214..90511ade5034aa0c2fee7496e1da9012fbb4a68b
@@@ -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);
  
 -      objectcacher->file_read(in->inode.ino, &in->inode.layout, offset, l, NULL, 0, 0);
+       // 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;
++      #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) 
index bd9da386466c916c9286feb9a188e429a1f82466,7c41acc90bbff20c83e580886d70501ee1534f8a..76bffcf9a231062e70c9675cbce38231b63a9e90
@@@ -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<ObjectExtent>& 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/config.cc
Simple merge
Simple merge
Simple merge
index 04efaaaf577ced310cd88e311a9e96d87fae0e36,2e5d28dec4becc32caf4dc77800d2df6887b1fee..838030fb167cef88bd5a26fcdcb3c2dda7dfeb62
@@@ -85,8 -84,9 +85,9 @@@ class Objecter 
      map<object_t, bufferlist*> read_data;  // bits of data as they come back
      int flags;
  
 -    OSDRead(bufferlist *b, int f) : bl(b), onfinish(0), flags(f) {
 +    OSDRead(vector<snapid_t> &s, bufferlist *b, int f) : OSDOp(s), bl(b), onfinish(0), flags(f) {
-       bl->clear();
+       if (bl)
+       bl->clear();
      }
    };