void Dumper::undump(const char *dump_file)
{
+ Mutex localLock("undump:lock");
cout << "undump " << dump_file << std::endl;
int fd = ::open(dump_file, O_RDONLY);
Cond cond;
cout << "writing header " << oid << std::endl;
+ lock.Lock();
objecter->write_full(oid, oloc, snapc, hbl, ceph_clock_now(g_ceph_context), 0,
NULL,
- new C_SafeCond(&lock, &cond, &done));
+ new C_SafeCond(&localLock, &cond, &done));
+ lock.Unlock();
- lock.Lock();
+ localLock.Lock();
while (!done)
- cond.Wait(lock);
- lock.Unlock();
+ cond.Wait(localLock);
+ localLock.Unlock();
// read
Filer filer(objecter);
uint64_t l = MIN(left, 1024*1024);
j.read_fd(fd, l);
cout << " writing " << pos << "~" << l << std::endl;
- filer.write(ino, &h.layout, snapc, pos, l, j, ceph_clock_now(g_ceph_context), 0, NULL, new C_SafeCond(&lock, &cond, &done));
-
lock.Lock();
- while (!done)
- cond.Wait(lock);
+ filer.write(ino, &h.layout, snapc, pos, l, j, ceph_clock_now(g_ceph_context), 0, NULL,
+ new C_SafeCond(&localLock, &cond, &done));
lock.Unlock();
-
+
+ localLock.Lock();
+ while (!done)
+ cond.Wait(localLock);
+ localLock.Unlock();
+
pos += l;
left -= l;
}