]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
filer: snapid should be nonzero on all reads
authorSage Weil <sage@newdream.net>
Wed, 10 Sep 2008 14:10:33 +0000 (07:10 -0700)
committerSage Weil <sage@newdream.net>
Wed, 10 Sep 2008 17:03:05 +0000 (10:03 -0700)
src/client/SyntheticClient.cc
src/osdc/Filer.cc
src/osdc/Filer.h
src/osdc/Journaler.cc

index c5a94133bb33fe9f7fd1d6a1688cfe981f3c6c96..08ef4023c4383a363b8f791bc2ba351b434b135a 100644 (file)
@@ -3295,7 +3295,7 @@ int SyntheticClient::chunk_file(string &filename)
     
     lock.Lock();
     Context *onfinish = new C_SafeCond(&lock, &cond, &done);
-    filer->read(inode.ino, &inode.layout, 0, pos, get, &bl, 0, onfinish);
+    filer->read(inode.ino, &inode.layout, CEPH_NOSNAP, pos, get, &bl, 0, onfinish);
     while (!done)
       cond.Wait(lock);
     lock.Unlock();
index 066ac162d5f6218aea58099f54a9b5f7866c9bb2..64b837c203cae2d95f2261583e124790f3091ab7 100644 (file)
@@ -57,6 +57,8 @@ int Filer::probe(inodeno_t ino,
           << " starting from " << start_from
           << dendl;
 
+  assert(snapid);  // (until there is a non-NOSNAP write)
+
   Probe *probe = new Probe(ino, *layout, snapid, start_from, end, flags, fwd, onfinish);
   
   // period (bytes before we jump unto a new set of object(s))
index df5013b2fcb768bd30fc39c3fa7650170630c02b..df104e1a8f3a88f75a5e8246417604bdec589410 100644 (file)
@@ -99,6 +99,7 @@ class Filer {
            bufferlist *bl,   // ptr to data
           int flags,
            Context *onfinish) {
+    assert(snapid);  // (until there is a non-NOSNAP write)
     Objecter::OSDRead *rd = prepare_read(ino, layout, snapid, offset, len, bl, flags);
     return objecter->readx(rd, onfinish) > 0 ? 0:-1;
   }
index 98dbdec31415491afb50035371555fa737baa45e..acffaf3506956408b6b39cd0b50bace40ad9f16b 100644 (file)
@@ -82,7 +82,7 @@ void Journaler::recover(Context *onread)
   state = STATE_READHEAD;
   C_ReadHead *fin = new C_ReadHead(this);
   vector<snapid_t> snaps;
-  filer.read(ino, &layout, 0,
+  filer.read(ino, &layout, CEPH_NOSNAP,
             0, sizeof(Header), &fin->bl, CEPH_OSD_OP_INCLOCK_FAIL, fin);
 }
 
@@ -114,7 +114,7 @@ void Journaler::_finish_read_head(int r, bufferlist& bl)
   // probe the log
   state = STATE_PROBING;
   C_ProbeEnd *fin = new C_ProbeEnd(this);
-  filer.probe(ino, &layout, 0,
+  filer.probe(ino, &layout, CEPH_NOSNAP,
              h.write_pos, (__u64 *)&fin->end, true, CEPH_OSD_OP_INCLOCK_FAIL, fin);
 }
 
@@ -533,7 +533,7 @@ void Journaler::_issue_read(__s64 len)
           << ", read pointers " << read_pos << "/" << received_pos << "/" << (requested_pos+len)
           << dendl;
   
-  filer.read(ino, &layout, 0,
+  filer.read(ino, &layout, CEPH_NOSNAP,
             requested_pos, len, &reading_buf, CEPH_OSD_OP_INCLOCK_FAIL,
             new C_Read(this));
   requested_pos += len;