~aleteoryx/muditaos

ad058041a5c206d05d957c6334acb5a62af6b68c — Lucjan Bryndza 4 years ago 33b1975
[EGD-7770] Fix hardfault with FileIndexer

Fix hard hault with fileindexer

Signed-off-by: Lucjan Bryndza <lucjan.bryndza@mudita.com>
M module-vfs/drivers/include/purefs/fs/drivers/mount_point_ext4.hpp => module-vfs/drivers/include/purefs/fs/drivers/mount_point_ext4.hpp +7 -9
@@ 46,16 46,14 @@ namespace purefs::fs::drivers
    class ext4_locker
    {
      public:
        explicit ext4_locker(std::shared_ptr<mount_point_ext4> mnt_ext) : m_mnt_ext(mnt_ext)
        {
            m_mnt_ext->lock();
        }
        ~ext4_locker()
        {
            m_mnt_ext->unlock();
        }
        explicit ext4_locker(std::shared_ptr<mount_point_ext4> mnt_ext);
        ~ext4_locker();
        ext4_locker(ext4_locker &)  = delete;
        ext4_locker(ext4_locker &&) = delete;
        ext4_locker &operator=(ext4_locker &) = delete;
        ext4_locker &operator=(ext4_locker &&) = delete;

      private:
        const std::shared_ptr<mount_point_ext4> m_mnt_ext;
        const std::weak_ptr<mount_point_ext4> m_mnt_ext;
    };
} // namespace purefs::fs::drivers

M module-vfs/drivers/src/purefs/fs/mount_point_ext4.cpp => module-vfs/drivers/src/purefs/fs/mount_point_ext4.cpp +23 -1
@@ 4,6 4,8 @@
#include <purefs/fs/drivers/mount_point_ext4.hpp>
#include <mutex.hpp>
#include <string>
#include <cstdlib>
#include <log/log.hpp>

namespace purefs::fs::drivers
{


@@ 18,6 20,7 @@ namespace purefs::fs::drivers
            return ret;
        }
    } // namespace

    mount_point_ext4::mount_point_ext4(std::shared_ptr<blkdev::internal::disk_handle> diskh,
                                       std::string_view path,
                                       unsigned flags,


@@ 28,13 31,32 @@ namespace purefs::fs::drivers

    mount_point_ext4::~mount_point_ext4()
    {}

    auto mount_point_ext4::lock() noexcept -> void
    {
        m_lock->Lock();
    }

    auto mount_point_ext4::unlock() noexcept -> void
    {
        m_lock->Unlock();
    }

} // namespace purefs::fs::drivers
\ No newline at end of file
    ext4_locker::ext4_locker(std::shared_ptr<mount_point_ext4> mnt_ext) : m_mnt_ext(mnt_ext)
    {
        mnt_ext->lock();
    }

    ext4_locker::~ext4_locker()
    {
        auto ptr = m_mnt_ext.lock();
        if (ptr) {
            ptr->unlock();
        }
        else {
            LOG_FATAL("Unable to unlock ext4 filesystem");
            std::abort();
        }
    }

} // namespace purefs::fs::drivers