From: Arvin Schnell Date: Fri, 29 Jul 2011 17:50:13 +0000 (+0200) Subject: - work on ext4 code X-Git-Tag: v0.1.3~337 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=14e1ac4027fef97dd56efc15590ea22e1adc90c3;p=thirdparty%2Fsnapper.git - work on ext4 code --- diff --git a/snapper/Filesystem.cc b/snapper/Filesystem.cc index 431b08a6..add022d0 100644 --- a/snapper/Filesystem.cc +++ b/snapper/Filesystem.cc @@ -121,6 +121,10 @@ namespace snapper void Ext4::deleteFilesystemSnapshot(unsigned int num) const { + SystemCmd cmd(CHSNAPBIN " -S " + snapshotFile(num)); + if (cmd.retcode() != 0) + throw DeleteSnapshotFailedException(); + // TODO } @@ -130,14 +134,14 @@ namespace snapper { 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(); } @@ -151,9 +155,7 @@ namespace snapper bool Ext4::checkFilesystemSnapshot(unsigned int num) const { - // TODO - - return true; + return checkNormalFile(snapshotFile(num)); } } diff --git a/snapper/Snapshot.h b/snapper/Snapshot.h index c361e143..8244bfe6 100644 --- a/snapper/Snapshot.h +++ b/snapper/Snapshot.h @@ -54,6 +54,19 @@ namespace snapper }; + 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: