void
Ext4::deleteFilesystemSnapshot(unsigned int num) const
{
+ SystemCmd cmd(CHSNAPBIN " -S " + snapshotFile(num));
+ if (cmd.retcode() != 0)
+ throw DeleteSnapshotFailedException();
+
// TODO
}
{
SystemCmd cmd1(CHSNAPBIN " +n " + snapshotFile(num));
if (cmd1.retcode() != 0)
- throw CreateSnapshotFailedException();
+ throw MountSnapshotFailedException();
mkdir(snapshotDir(num).c_str(), 0755);
SystemCmd cmd2(MOUNTBIN " -t ext4 -r -o loop,noload " + snapshotFile(num) +
" " + snapshotDir(num));
if (cmd2.retcode() != 0)
- throw CreateSnapshotFailedException();
+ throw MountSnapshotFailedException();
}
bool
Ext4::checkFilesystemSnapshot(unsigned int num) const
{
- // TODO
-
- return true;
+ return checkNormalFile(snapshotFile(num));
}
}
};
+ struct MountSnapshotFailedException : public std::exception
+ {
+ explicit MountSnapshotFailedException() throw() {}
+ virtual const char* what() const throw() { return "mount snapshot failed"; }
+ };
+
+ struct UmountSnapshotFailedException : public std::exception
+ {
+ explicit UmountSnapshotFailedException() throw() {}
+ virtual const char* what() const throw() { return "umount snapshot failed"; }
+ };
+
+
class Snapshot
{
public: