mirror of
https://github.com/ceph/ceph
synced 2025-02-17 07:57:44 +00:00
*** empty log message ***
git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@242 29311d96-e01e-0410-9327-a35deaab8ce9
This commit is contained in:
parent
7dc2228396
commit
8f3d1302c1
@ -42,7 +42,7 @@ public:
|
||||
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
cout << "fakefuse starting" << endl;
|
||||
cerr << "fakefuse starting" << endl;
|
||||
|
||||
MDCluster *mdc = new MDCluster(NUMMDS, NUMOSD);
|
||||
|
||||
|
@ -144,18 +144,20 @@ class OSDCluster {
|
||||
OSDExtent ex;
|
||||
|
||||
// find oid, osds
|
||||
size_t blockno = offset / FILE_OBJECT_SIZE;
|
||||
size_t blockno = cur / FILE_OBJECT_SIZE;
|
||||
ex.oid = file_to_object( ino, blockno );
|
||||
repgroup_t rg = file_to_repgroup(ino, blockno );
|
||||
repgroup_to_osds( rg, ex.osds, num_reps );
|
||||
|
||||
// map range into object
|
||||
ex.offset = offset % FILE_OBJECT_SIZE;
|
||||
ex.offset = cur % FILE_OBJECT_SIZE;
|
||||
if (left + ex.offset > FILE_OBJECT_SIZE)
|
||||
ex.len = FILE_OBJECT_SIZE - ex.offset; // doesn't fully fit
|
||||
else
|
||||
ex.len = left; // fits!
|
||||
|
||||
left -= ex.len;
|
||||
cur += ex.len;
|
||||
|
||||
// add it
|
||||
extents.push_back(ex);
|
||||
|
@ -116,6 +116,7 @@ int Filer::issue_read(inodeno_t ino, size_t len, size_t offset, PendingOSDRead_t
|
||||
dout(7) << "osd read ino " << ino << " len " << len << " off " << offset << " in " << extents.size() << " extents on " << num_rep << " replicas" << endl;
|
||||
|
||||
int nfrag = 0;
|
||||
off_t off = 0;
|
||||
for (list<OSDExtent>::iterator it = extents.begin();
|
||||
it != extents.end();
|
||||
it++) {
|
||||
@ -126,6 +127,10 @@ int Filer::issue_read(inodeno_t ino, size_t len, size_t offset, PendingOSDRead_t
|
||||
MOSDRead *m = new MOSDRead(last_tid, it->oid, it->len, it->offset);
|
||||
messenger->send_message(m, MSG_ADDR_OSD(it->osds[r]), 0);
|
||||
|
||||
// note offset into read buffer
|
||||
p->read_off[it->oid] = off;
|
||||
off += it->len;
|
||||
|
||||
// add to gather set
|
||||
p->outstanding_ops.insert(last_tid);
|
||||
op_reads[last_tid] = p;
|
||||
@ -151,7 +156,8 @@ Filer::handle_osd_read_reply(MOSDReadReply *m)
|
||||
m->clear_raw_message();
|
||||
} else {
|
||||
// copy result into buffer
|
||||
size_t off = m->get_offset() - p->orig_offset;
|
||||
size_t off = p->read_off[m->get_oid()];
|
||||
dout(7) << "filer: got frag at " << off << " len " << m->get_len() << endl;
|
||||
memcpy(p->buffer + off, m->get_buffer(), m->get_len());
|
||||
}
|
||||
|
||||
|
@ -38,6 +38,8 @@ typedef struct {
|
||||
char **dataptr;
|
||||
char **freeptr;
|
||||
|
||||
map<object_t, off_t> read_off;
|
||||
|
||||
size_t bytes_read;
|
||||
Context *onfinish;
|
||||
} PendingOSDRead_t;
|
||||
|
Loading…
Reference in New Issue
Block a user