From: Arvin Schnell Date: Fri, 29 Jul 2011 15:44:49 +0000 (+0200) Subject: - work on ext4 code X-Git-Tag: v0.1.3~338 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=332f312bc8ecc6d3426bc7a49bd267b2c1ff4395;p=thirdparty%2Fsnapper.git - work on ext4 code --- diff --git a/snapper/Filesystem.cc b/snapper/Filesystem.cc index d74fcda0..431b08a6 100644 --- a/snapper/Filesystem.cc +++ b/snapper/Filesystem.cc @@ -41,103 +41,110 @@ namespace snapper string - Ext4::infosDir() const + Btrfs::snapshotDir(unsigned int num) const { - return snapper->subvolumeDir() + "/.snapshots-info"; + return snapper->subvolumeDir() + "/.snapshots/" + decString(num) + "/snapshot"; } - string - Btrfs::snapshotDir(unsigned int num) const + void + Btrfs::createFilesystemSnapshot(unsigned int num) const { - return snapper->subvolumeDir() + "/.snapshots/" + decString(num) + "/snapshot"; + SystemCmd cmd(BTRFSBIN " subvolume snapshot " + snapper->subvolumeDir() + " " + snapshotDir(num)); + if (cmd.retcode() != 0) + throw CreateSnapshotFailedException(); } - string - Ext4::snapshotDir(unsigned int num) const + void + Btrfs::deleteFilesystemSnapshot(unsigned int num) const { - return snapper->subvolumeDir() + "@" + decString(num); + SystemCmd cmd(BTRFSBIN " subvolume delete " + snapshotDir(num)); + if (cmd.retcode() != 0) + throw DeleteSnapshotFailedException(); } void - Btrfs::createFilesystemSnapshot(unsigned int num) const + Btrfs::mountFilesystemSnapshot(unsigned int num) const { - SystemCmd cmd(BTRFSBIN " subvolume snapshot " + snapper->subvolumeDir() + " " + snapshotDir(num)); - if (cmd.retcode() != 0) - throw CreateSnapshotFailedException(); } void - Ext4::createFilesystemSnapshot(unsigned int num) const + Btrfs::umountFilesystemSnapshot(unsigned int num) const { - SystemCmd cmd1(TOUCHBIN " " "/mnt/.snapshots/" + decString(num)); - if (cmd1.retcode() != 0) - throw CreateSnapshotFailedException(); + } - SystemCmd cmd2(CHSNAPBIN " +S " "/mnt/.snapshots/" + decString(num)); - if (cmd2.retcode() != 0) - throw CreateSnapshotFailedException(); + + bool + Btrfs::checkFilesystemSnapshot(unsigned int num) const + { + return checkDir(snapshotDir(num)); } - void - Btrfs::deleteFilesystemSnapshot(unsigned int num) const + string + Ext4::infosDir() const { - SystemCmd cmd(BTRFSBIN " subvolume delete " + snapshotDir(num)); - if (cmd.retcode() != 0) - throw DeleteSnapshotFailedException(); + return snapper->subvolumeDir() + "/.snapshots-info"; } - void - Ext4::deleteFilesystemSnapshot(unsigned int num) const + string + Ext4::snapshotDir(unsigned int num) const { - // TODO + return snapper->subvolumeDir() + "@" + decString(num); } - void - Btrfs::mountFilesystemSnapshot(unsigned int num) const + string + Ext4::snapshotFile(unsigned int num) const { + return snapper->subvolumeDir() + "/.snapshots/" + decString(num); } void - Ext4::mountFilesystemSnapshot(unsigned int num) const + Ext4::createFilesystemSnapshot(unsigned int num) const { - SystemCmd cmd1(CHSNAPBIN " +n " "/mnt/.snapshots/" + decString(num)); + SystemCmd cmd1(TOUCHBIN " " + snapshotFile(num)); if (cmd1.retcode() != 0) throw CreateSnapshotFailedException(); - mkdir(("/mnt@" + decString(num)).c_str(), 0666); - - SystemCmd cmd2(MOUNTBIN " -t ext4 -r -o loop,noload " "/mnt/.snapshots/" + decString(num) + " " - "/mnt@" + decString(num)); + SystemCmd cmd2(CHSNAPBIN " +S " + snapshotFile(num)); if (cmd2.retcode() != 0) throw CreateSnapshotFailedException(); } void - Btrfs::umountFilesystemSnapshot(unsigned int num) const + Ext4::deleteFilesystemSnapshot(unsigned int num) const { + // TODO } void - Ext4::umountFilesystemSnapshot(unsigned int num) const + Ext4::mountFilesystemSnapshot(unsigned int num) const { - // TODO + SystemCmd cmd1(CHSNAPBIN " +n " + snapshotFile(num)); + if (cmd1.retcode() != 0) + throw CreateSnapshotFailedException(); + + 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(); } - bool - Btrfs::checkFilesystemSnapshot(unsigned int num) const + void + Ext4::umountFilesystemSnapshot(unsigned int num) const { - return checkDir(snapshotDir(num)); + // TODO } diff --git a/snapper/Filesystem.h b/snapper/Filesystem.h index 9afd9690..92031ff0 100644 --- a/snapper/Filesystem.h +++ b/snapper/Filesystem.h @@ -94,6 +94,7 @@ namespace snapper virtual string infosDir() const; virtual string snapshotDir(unsigned int num) const; + virtual string snapshotFile(unsigned int num) const; virtual void createFilesystemSnapshot(unsigned int num) const; virtual void deleteFilesystemSnapshot(unsigned int num) const;