]> git.ipfire.org Git - thirdparty/snapper.git/commitdiff
rule out race while (u)mounting lvm snapshot 225/head
authorOndrej Kozina <okozina@redhat.com>
Tue, 15 Mar 2016 16:04:03 +0000 (17:04 +0100)
committerOndrej Kozina <okozina@redhat.com>
Tue, 15 Mar 2016 16:04:48 +0000 (17:04 +0100)
snapper/Lvm.cc
snapper/Lvm.h

index 766dee42d9e5862c97118670a04af7d54752617d..0fb9036570a30b32c7e231f312090975e85bc3d8 100644 (file)
@@ -251,6 +251,8 @@ namespace snapper
     void
     Lvm::mountSnapshot(unsigned int num) const
     {
+       boost::unique_lock<boost::mutex> lock(mount_mutex);
+
        if (isSnapshotMounted(num))
            return;
 
@@ -273,6 +275,8 @@ namespace snapper
     void
     Lvm::umountSnapshot(unsigned int num) const
     {
+       boost::unique_lock<boost::mutex> lock(mount_mutex);
+
        if (isSnapshotMounted(num))
        {
            SDir info_dir = openInfoDir(num);
index 87193ad027fe48095aa47d1ed6b26d14e03c5ae6..be8673109f81156d2dbbf8eb50bd350790c89381 100644 (file)
@@ -24,6 +24,7 @@
 #define SNAPPER_LVM_H
 
 #include <boost/noncopyable.hpp>
+#include <boost/thread/mutex.hpp>
 
 #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;