fin->complete(-ENOENT);
return;
}
- string magic;
- ::decode(magic, p);
- dout(10) << " magic is '" << magic << "' (expecting '" << CEPH_FS_ONDISK_MAGIC << "')" << dendl;
- if (magic != CEPH_FS_ONDISK_MAGIC) {
- dout(0) << "on disk magic '" << magic << "' != my magic '" << CEPH_FS_ONDISK_MAGIC
- << "'" << dendl;
- fin->complete(-EINVAL);
- } else {
- try {
- decode_store(p);
- } catch (buffer::error &err) {
- derr << "Corrupt inode 0x" << std::hex << ino() << std::dec
- << ": " << err << dendl;
+
+ // Attempt decode
+ try {
+ string magic;
+ ::decode(magic, p);
+ dout(10) << " magic is '" << magic << "' (expecting '"
+ << CEPH_FS_ONDISK_MAGIC << "')" << dendl;
+ if (magic != CEPH_FS_ONDISK_MAGIC) {
+ dout(0) << "on disk magic '" << magic << "' != my magic '" << CEPH_FS_ONDISK_MAGIC
+ << "'" << dendl;
fin->complete(-EINVAL);
- return;
+ } else {
+ decode_store(p);
+ dout(10) << "_fetched " << *this << dendl;
+ fin->complete(0);
}
- dout(10) << "_fetched " << *this << dendl;
- fin->complete(0);
+ } catch (buffer::error &err) {
+ derr << "Corrupt inode 0x" << std::hex << ino() << std::dec
+ << ": " << err << dendl;
+ fin->complete(-EINVAL);
+ return;
}
}