M board/linux/libiosyscalls/include/iosyscalls.hpp => board/linux/libiosyscalls/include/iosyscalls.hpp +1 -1
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
M board/linux/libiosyscalls/src/iosyscalls.cpp => board/linux/libiosyscalls/src/iosyscalls.cpp +1 -1
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include <iosyscalls.hpp>
M module-utils/bootconfig/include/boot/bootconstants.hpp => module-utils/bootconfig/include/boot/bootconstants.hpp +1 -1
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
M module-vfs/board/linux/purefs/include/purefs/blkdev/disk_image.hpp => module-vfs/board/linux/purefs/include/purefs/blkdev/disk_image.hpp +2 -0
@@ 4,6 4,7 @@
#pragma once
#include <purefs/blkdev/disk.hpp>
+#include <mutex>
namespace purefs::blkdev
{
@@ 31,5 32,6 @@ namespace purefs::blkdev
int m_filedes{-1};
unsigned long m_sectors{0};
std::string m_image_name;
+ mutable std::recursive_mutex m_mtx;
};
} // namespace purefs::blkdev
M module-vfs/board/linux/purefs/src/blkdev/disk_image.cpp => module-vfs/board/linux/purefs/src/blkdev/disk_image.cpp +10 -3
@@ 15,6 15,7 @@ namespace purefs::blkdev
auto disk_image::probe(unsigned int flags) -> int
{
+ std::lock_guard<std::recursive_mutex> m_lock(m_mtx);
m_filedes = ::open(m_image_name.c_str(), O_RDWR, O_SYNC);
if (!m_filedes)
return m_filedes;
@@ 24,10 25,11 @@ namespace purefs::blkdev
return -errno;
}
m_sectors = fst.st_size / sector_size;
- return 0;
+ return fst.st_size % sector_size;
}
auto disk_image::cleanup() -> int
{
+ std::lock_guard<std::recursive_mutex> m_lock(m_mtx);
int ret{-EBADFD};
if (m_filedes) {
if (m_filedes) {
@@ 40,10 42,11 @@ namespace purefs::blkdev
}
auto disk_image::write(const void *buf, sector_t lba, std::size_t count) -> int
{
+ std::lock_guard<std::recursive_mutex> m_lock(m_mtx);
if (!range_valid(lba, count)) {
return -ERANGE;
}
- auto offs = ::lseek(m_filedes, off_t(lba) * sector_size, SEEK_SET);
+ auto offs = ::lseek64(m_filedes, off64_t(lba) * off64_t(sector_size), SEEK_SET);
if (offs < 0) {
return offs;
}
@@ 67,10 70,11 @@ namespace purefs::blkdev
}
auto disk_image::read(void *buf, sector_t lba, std::size_t count) -> int
{
+ std::lock_guard<std::recursive_mutex> m_lock(m_mtx);
if (!range_valid(lba, count)) {
return -ERANGE;
}
- auto offs = ::lseek(m_filedes, off_t(lba) * sector_size, SEEK_SET);
+ auto offs = ::lseek64(m_filedes, off64_t(lba) * off64_t(sector_size), SEEK_SET);
if (offs < 0) {
return offs;
}
@@ 88,6 92,7 @@ namespace purefs::blkdev
}
auto disk_image::sync() -> int
{
+ std::lock_guard<std::recursive_mutex> m_lock(m_mtx);
int ret{-EBADFD};
if (m_filedes) {
ret = fsync(m_filedes);
@@ 98,6 103,7 @@ namespace purefs::blkdev
}
auto disk_image::status() const -> media_status
{
+ std::lock_guard<std::recursive_mutex> m_lock(m_mtx);
struct stat st;
auto ret = ::stat(m_image_name.c_str(), &st);
if (!ret)
@@ 107,6 113,7 @@ namespace purefs::blkdev
}
auto disk_image::get_info(info_type what) const -> scount_t
{
+ std::lock_guard<std::recursive_mutex> m_lock(m_mtx);
switch (what) {
case info_type::sector_size:
return sector_size;
M module-vfs/board/rt1051/purefs/src/vfs_subsystem_internal.cpp => module-vfs/board/rt1051/purefs/src/vfs_subsystem_internal.cpp +1 -1
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include <purefs/vfs_subsystem_internal.hpp>