]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge branch 'inclock1' into unstable
authorSage Weil <sage@newdream.net>
Tue, 1 Apr 2008 22:42:14 +0000 (15:42 -0700)
committerSage Weil <sage@newdream.net>
Tue, 1 Apr 2008 22:42:14 +0000 (15:42 -0700)
Conflicts:

src/TODO
src/client/FileCache.cc
src/kernel/mdsmap.h
src/osdc/Filer.h
src/osdc/ObjectCacher.h

15 files changed:
1  2 
src/Makefile.am
src/TODO
src/client/Client.cc
src/client/FileCache.cc
src/client/SyntheticClient.cc
src/include/ceph_fs.h
src/kernel/mdsmap.c
src/kernel/mdsmap.h
src/kernel/osd_client.c
src/kernel/osdmap.c
src/mds/MDCache.cc
src/mds/MDS.cc
src/osdc/Filer.cc
src/osdc/Filer.h
src/osdc/ObjectCacher.h

diff --cc src/Makefile.am
Simple merge
diff --cc src/TODO
Simple merge
Simple merge
index 94fc82fbf487c89ebcd6c896a668e04b3a87de00,e69d5ef5d247fb5e62406557541f88f592e9c41a..3ff496417b3eb883d493780a2877875b7d062d74
@@@ -194,7 -194,7 +194,7 @@@ int FileCache::read(off_t offset, size_
      int rvalue = 0;
      C_Cond *onfinish = new C_Cond(&cond, &done, &rvalue);
      
-     r = oc->file_read(ino, &layout, offset, size, &blist, onfinish);
 -    r = oc->file_read(inode, offset, size, &blist, 0, onfinish);
++    r = oc->file_read(ino, &layout, offset, size, &blist, 0, onfinish);
      
      if (r == 0) {
        // block
        delete onfinish;
      }
    } else {
-     r = oc->file_atomic_sync_read(ino, &layout, offset, size, &blist, client_lock);
 -    r = oc->file_atomic_sync_read(inode, offset, size, &blist, 0, client_lock);
++    r = oc->file_atomic_sync_read(ino, &layout, offset, size, &blist, 0, client_lock);
    }
  
    // dec reading counter
@@@ -238,10 -238,10 +238,10 @@@ void FileCache::write(off_t offset, siz
        oc->wait_for_write(size, client_lock);
        
        // async, caching, non-blocking.
-       oc->file_write(ino, &layout, offset, size, blist);
 -      oc->file_write(inode, offset, size, blist, 0);
++      oc->file_write(ino, &layout, offset, size, blist, 0);
      } else {
        // atomic, synchronous, blocking.
-       oc->file_atomic_sync_write(ino, &layout, offset, size, blist, client_lock);
 -      oc->file_atomic_sync_write(inode, offset, size, blist, 0, client_lock);
++      oc->file_atomic_sync_write(ino, &layout, offset, size, blist, 0, client_lock);
      }    
    }
      
Simple merge
Simple merge
index f009546dd94243971696ca9495f0e19ec23bb387,690da8789fb2bfdb96788635df3e60090f372615..6feb35501c29f21c35efdbdd26416217c272acfe
@@@ -65,8 -65,9 +65,9 @@@ struct ceph_mdsmap *ceph_mdsmap_decode(
        ceph_decode_need(p, end, 10*sizeof(__u32), bad);
        ceph_decode_32(p, m->m_epoch);
        ceph_decode_32(p, m->m_client_epoch);
+       ceph_decode_32(p, m->m_last_failure);
        ceph_decode_32(p, m->m_created.tv_sec);
 -      ceph_decode_32(p, m->m_created.tv_usec);
 +      ceph_decode_32(p, m->m_created.tv_nsec);
        ceph_decode_32(p, m->m_anchortable);
        ceph_decode_32(p, m->m_root);
        ceph_decode_32(p, m->m_cap_bit_timeout);
index c373107722bfe039e55903f40a3851c19f1388c4,6c879d910588f8fe3af780ba0ec609c73eb314d0..e41c7d68a90a791b3d2916f8c063baaae803a1a9
@@@ -9,8 -9,8 +9,8 @@@
   * fields limited to those the client cares about
   */
  struct ceph_mdsmap {
-       ceph_epoch_t m_epoch, m_client_epoch;
+       ceph_epoch_t m_epoch, m_client_epoch, m_last_failure;
 -      struct ceph_timeval m_created;
 +      struct ceph_timespec m_created;
        __u32 m_anchortable;
        __u32 m_root;
        __u32 m_cap_bit_timeout;
index cf2966a847db350eaa3fe100aac3b64fbfa81d70,199c503d154627d6f6e6bc7cdc0bec8e92350cde..9b74ddccdb8e49b1d2a7d83be892c6c2e5d1dbfb
@@@ -190,7 -181,7 +190,7 @@@ struct ceph_osd_request *register_reque
        req->r_tid = head->tid = ++osdc->last_tid;
        req->r_flags = 0;
        req->r_request = msg;
--      req->r_pgid = head->layout.ol_pgid;
++      req->r_pgid.pg64 = le64_to_cpu(head->layout.ol_pgid);
        req->r_reply = 0;
        req->r_result = 0;
        atomic_set(&req->r_ref, 2);  /* one for request_tree, one for caller */
index f4b60a55f0ea333cba39d046a072c9c385d7ae9c,841e203c59c3e283fe2b002612ccb5851a158b38..4ef7b433e7faf40fd5e9ddf14d86cd323ebeea9f
@@@ -543,6 -543,6 +543,8 @@@ void calc_object_layout(struct ceph_obj
                        struct ceph_osdmap *osdmap)
  {
        unsigned num, num_mask;
++      union ceph_pg pgid;
++
        if (fl->fl_pg_preferred >= 0) {
                num = osdmap->lpg_num;
                num_mask = osdmap->lpg_num_mask;
                num = osdmap->pg_num;
                num_mask = osdmap->pg_num_mask;
        }
--      ol->ol_pgid.pg.ps = 
--              ceph_stable_mod(oid->bno + crush_hash32_2(oid->ino, 
--                                                        oid->ino>>32), 
--                              num, num_mask);
--      ol->ol_pgid.pg.preferred = fl->fl_pg_preferred;
--      ol->ol_pgid.pg.type = fl->fl_pg_type;
--      ol->ol_pgid.pg.size = fl->fl_pg_size;
--      ol->ol_stripe_unit = fl->fl_object_stripe_unit;
++
++      pgid.pg64 = 0;   /* start with it zeroed out */
++      pgid.pg.ps = ceph_stable_mod(oid->bno + crush_hash32_2(oid->ino, 
++                                                             oid->ino>>32), 
++                                   num, num_mask);
++      pgid.pg.preferred = fl->fl_pg_preferred;
++      pgid.pg.type = fl->fl_pg_type;
++      pgid.pg.size = fl->fl_pg_size;
++
++      ol->ol_pgid = cpu_to_le64(pgid.pg64);
++      ol->ol_stripe_unit = cpu_to_le32(fl->fl_object_stripe_unit);
  }
Simple merge
diff --cc src/mds/MDS.cc
Simple merge
Simple merge
index c9f5f0f4badf08e05e537633c040cff9184ed395,6a094035b10568b792fe67d6a27bc764792227bb..637f562e3c0d5c44ec2fcaeb9b314b37d68f3809
@@@ -83,9 -84,10 +84,10 @@@ class Filer 
    Objecter::OSDRead *prepare_read(inode_t& inode,
                                  off_t offset, 
                                  size_t len, 
-                                 bufferlist *bl) {
-     Objecter::OSDRead *rd = new Objecter::OSDRead(bl);
 -                                bufferlist *bl,
++                                bufferlist *bl, 
+                                 int flags) {
+     Objecter::OSDRead *rd = objecter->prepare_read(bl, flags);
 -    file_to_extents(inode, offset, len, rd->extents);
 +    file_to_extents(inode.ino, &inode.layout, offset, len, rd->extents);
      return rd;
    }
    int read(inode_t& inode,
              Context *onack,
              Context *oncommit,
            objectrev_t rev=0) {
-     Objecter::OSDWrite *wr = new Objecter::OSDWrite(bl);
+     Objecter::OSDWrite *wr = objecter->prepare_write(bl, flags);
 -    file_to_extents(inode, offset, len, wr->extents, rev);
 +    file_to_extents(inode.ino, &inode.layout, offset, len, wr->extents, rev);
      return objecter->modifyx(wr, onack, oncommit) > 0 ? 0:-1;
    }
  
    int zero(inode_t& inode,
             off_t offset,
             size_t len,
+          int flags,
             Context *onack,
             Context *oncommit) {
-     Objecter::OSDModify *z = new Objecter::OSDModify(CEPH_OSD_OP_ZERO);
+     Objecter::OSDModify *z = objecter->prepare_modify(CEPH_OSD_OP_ZERO, flags);
 -    file_to_extents(inode, offset, len, z->extents);
 +    file_to_extents(inode.ino, &inode.layout, offset, len, z->extents);
      return objecter->modifyx(z, onack, oncommit) > 0 ? 0:-1;
    }
  
    int remove(inode_t& inode,
             off_t offset,
             size_t len,
+            int flags,
             Context *onack,
             Context *oncommit) {
-     Objecter::OSDModify *z = new Objecter::OSDModify(CEPH_OSD_OP_DELETE);
+     Objecter::OSDModify *z = objecter->prepare_modify(CEPH_OSD_OP_DELETE, flags);
 -    file_to_extents(inode, offset, len, z->extents);
 +    file_to_extents(inode.ino, &inode.layout, offset, len, z->extents);
      return objecter->modifyx(z, onack, oncommit) > 0 ? 0:-1;
    }
  
index 2da641312248def1a86ecf5c3194ecdf96bb89fc,170b2e0e9b683b6ff457aa4e543de9ad0540f2cc..196687f92094e197aa911e10b5c2816a6842312d
@@@ -484,45 -484,46 +484,46 @@@ class ObjectCacher 
    // file functions
  
    /*** async+caching (non-blocking) file interface ***/
 -  int file_read(inode_t& inode,
 +  int file_read(inodeno_t ino, ceph_file_layout *layout,
                  off_t offset, size_t len, 
                  bufferlist *bl,
+               int flags,
                  Context *onfinish) {
-     Objecter::OSDRead *rd = new Objecter::OSDRead(bl);
+     Objecter::OSDRead *rd = objecter->prepare_read(bl, flags);
 -    filer.file_to_extents(inode, offset, len, rd->extents);
 -    return readx(rd, inode.ino, onfinish);
 +    filer.file_to_extents(ino, layout, offset, len, rd->extents);
 +    return readx(rd, ino, onfinish);
    }
  
 -  int file_write(inode_t& inode,
 +  int file_write(inodeno_t ino, ceph_file_layout *layout,
                   off_t offset, size_t len, 
-                  bufferlist& bl,
-                                objectrev_t rev=0) {
-     Objecter::OSDWrite *wr = new Objecter::OSDWrite(bl);
+                  bufferlist& bl, int flags,
+                objectrev_t rev=0) {
+     Objecter::OSDWrite *wr = objecter->prepare_write(bl, flags);
 -    filer.file_to_extents(inode, offset, len, wr->extents);
 -    return writex(wr, inode.ino);
 +    filer.file_to_extents(ino, layout, offset, len, wr->extents);
 +    return writex(wr, ino);
    }
  
  
  
    /*** sync+blocking file interface ***/
    
 -  int file_atomic_sync_read(inode_t& inode,
 +  int file_atomic_sync_read(inodeno_t ino, ceph_file_layout *layout,
                              off_t offset, size_t len, 
-                             bufferlist *bl,
+                             bufferlist *bl, int flags,
                              Mutex &lock) {
-     Objecter::OSDRead *rd = new Objecter::OSDRead(bl);
+     Objecter::OSDRead *rd = objecter->prepare_read(bl, flags);
 -    filer.file_to_extents(inode, offset, len, rd->extents);
 -    return atomic_sync_readx(rd, inode.ino, lock);
 +    filer.file_to_extents(ino, layout, offset, len, rd->extents);
 +    return atomic_sync_readx(rd, ino, lock);
    }
  
 -  int file_atomic_sync_write(inode_t& inode,
 +  int file_atomic_sync_write(inodeno_t ino, ceph_file_layout *layout,
                               off_t offset, size_t len, 
-                              bufferlist& bl,
+                              bufferlist& bl, int flags,
                               Mutex &lock,
-                                                        objectrev_t rev=0) {
-     Objecter::OSDWrite *wr = new Objecter::OSDWrite(bl);
+                            objectrev_t rev=0) {
+     Objecter::OSDWrite *wr = objecter->prepare_write(bl, flags);
 -    filer.file_to_extents(inode, offset, len, wr->extents);
 -    return atomic_sync_writex(wr, inode.ino, lock);
 +    filer.file_to_extents(ino, layout, offset, len, wr->extents);
 +    return atomic_sync_writex(wr, ino, lock);
    }
  
  };