From: Ondrej Kozina Date: Tue, 15 Mar 2016 16:04:03 +0000 (+0100) Subject: rule out race while (u)mounting lvm snapshot X-Git-Tag: v0.3.3~18^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F225%2Fhead;p=thirdparty%2Fsnapper.git rule out race while (u)mounting lvm snapshot --- diff --git a/snapper/Lvm.cc b/snapper/Lvm.cc index 766dee42..0fb90365 100644 --- a/snapper/Lvm.cc +++ b/snapper/Lvm.cc @@ -251,6 +251,8 @@ namespace snapper void Lvm::mountSnapshot(unsigned int num) const { + boost::unique_lock lock(mount_mutex); + if (isSnapshotMounted(num)) return; @@ -273,6 +275,8 @@ namespace snapper void Lvm::umountSnapshot(unsigned int num) const { + boost::unique_lock lock(mount_mutex); + if (isSnapshotMounted(num)) { SDir info_dir = openInfoDir(num); diff --git a/snapper/Lvm.h b/snapper/Lvm.h index 87193ad0..be867310 100644 --- a/snapper/Lvm.h +++ b/snapper/Lvm.h @@ -24,6 +24,7 @@ #define SNAPPER_LVM_H #include +#include #include "snapper/Filesystem.h" @@ -108,6 +109,8 @@ namespace snapper private: + mutable boost::mutex mount_mutex; + const string mount_type; const LvmCapabilities* caps; LvmCache* cache;