From: Sage Weil Date: Wed, 10 Sep 2008 14:10:33 +0000 (-0700) Subject: filer: snapid should be nonzero on all reads X-Git-Tag: v0.4~135 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=7f78004bb5723b461208fe2bfbe0cc8036bb10cd;p=ceph.git filer: snapid should be nonzero on all reads --- diff --git a/src/client/SyntheticClient.cc b/src/client/SyntheticClient.cc index c5a94133bb33f..08ef4023c4383 100644 --- a/src/client/SyntheticClient.cc +++ b/src/client/SyntheticClient.cc @@ -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(); diff --git a/src/osdc/Filer.cc b/src/osdc/Filer.cc index 066ac162d5f62..64b837c203cae 100644 --- a/src/osdc/Filer.cc +++ b/src/osdc/Filer.cc @@ -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)) diff --git a/src/osdc/Filer.h b/src/osdc/Filer.h index df5013b2fcb76..df104e1a8f3a8 100644 --- a/src/osdc/Filer.h +++ b/src/osdc/Filer.h @@ -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; } diff --git a/src/osdc/Journaler.cc b/src/osdc/Journaler.cc index 98dbdec314154..acffaf3506956 100644 --- a/src/osdc/Journaler.cc +++ b/src/osdc/Journaler.cc @@ -82,7 +82,7 @@ void Journaler::recover(Context *onread) state = STATE_READHEAD; C_ReadHead *fin = new C_ReadHead(this); vector 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;