diff --git a/repertory/librepertory/include/drives/remote/remote_server_base.hpp b/repertory/librepertory/include/drives/remote/remote_server_base.hpp index d0218660..2f5cfc37 100644 --- a/repertory/librepertory/include/drives/remote/remote_server_base.hpp +++ b/repertory/librepertory/include/drives/remote/remote_server_base.hpp @@ -30,6 +30,7 @@ #include "drives/remote/remote_open_file_table.hpp" #include "drives/winfsp/remotewinfsp/i_remote_instance.hpp" #include "events/event_system.hpp" +#include "events/types/debug_log.hpp" #include "events/types/service_start_begin.hpp" #include "events/types/service_start_end.hpp" #include "events/types/service_stop_begin.hpp" @@ -352,6 +353,11 @@ public: response.encode(bytes_transferred); buffer.resize(bytes_transferred); + event_system::instance().raise( + function_name, + fmt::format("read|offset|{}|len|{}|ret|{}|tx|{}", offset, length, + ret, bytes_transferred)); + if ((ret == STATUS_SUCCESS) && (bytes_transferred != 0U)) { response.encode(buffer.data(), bytes_transferred); } diff --git a/repertory/librepertory/src/drives/fuse/remotefuse/remote_server.cpp b/repertory/librepertory/src/drives/fuse/remotefuse/remote_server.cpp index 8ac3b4dd..c5486e3d 100644 --- a/repertory/librepertory/src/drives/fuse/remotefuse/remote_server.cpp +++ b/repertory/librepertory/src/drives/fuse/remotefuse/remote_server.cpp @@ -28,6 +28,7 @@ #include "drives/directory_iterator.hpp" #include "drives/remote/remote_open_file_table.hpp" #include "events/event_system.hpp" +#include "events/types/debug_log.hpp" #include "events/types/remote_server_event.hpp" #include "platform/platform.hpp" #include "types/remote.hpp" @@ -1370,7 +1371,7 @@ auto remote_server::winfsp_read(PVOID file_desc, PVOID buffer, UINT64 offset, -> packet::error_type { REPERTORY_USES_FUNCTION_NAME(); - *bytes_transferred = 0; + *bytes_transferred = 0U; auto handle = reinterpret_cast(file_desc); auto ret = static_cast( @@ -1378,12 +1379,18 @@ auto remote_server::winfsp_read(PVOID file_desc, PVOID buffer, UINT64 offset, if (ret == STATUS_SUCCESS) { auto res = pread64(static_cast(handle), buffer, length, static_cast(offset)); + event_system::instance().raise( + function_name, + fmt::format("read|offset|{}|len|{}|res|{}", offset, length, res)); if (res >= 0) { *bytes_transferred = static_cast(res); } else { ret = static_cast(utils::unix_error_to_windows(errno)); } + event_system::instance().raise( + function_name, fmt::format("read|offset|{}|len|{}|res|{}|tx|{}", offset, + length, res, *bytes_transferred)); } RAISE_REMOTE_FUSE_SERVER_EVENT( @@ -1586,7 +1593,8 @@ auto remote_server::winfsp_write(PVOID file_desc, PVOID buffer, UINT64 offset, -> packet::error_type { REPERTORY_USES_FUNCTION_NAME(); - *bytes_transferred = 0; + *bytes_transferred = 0U; + auto handle = reinterpret_cast(file_desc); auto ret = static_cast( has_open_info(static_cast(handle), STATUS_INVALID_HANDLE)); diff --git a/repertory/repertory_test/src/winfsp_drive_rdrw_test.cpp b/repertory/repertory_test/src/winfsp_drive_rdrw_test.cpp index 98a03513..6d3fd6c7 100644 --- a/repertory/repertory_test/src/winfsp_drive_rdrw_test.cpp +++ b/repertory/repertory_test/src/winfsp_drive_rdrw_test.cpp @@ -342,6 +342,8 @@ static void test_overlapped_file(auto &&mount_location, auto &&file_path, overlapped.Offset = 3U * bytes_per_sector; ret = ::ReadFile(handle, read_buffer.data(), bytes_per_sector, &bytes_read, &overlapped); + fmt::println("size|{}|offset|{}|read|{}|ret|{}|err|{}", size.QuadPart, + overlapped.Offset, bytes_read, ret, ::GetLastError()); EXPECT_TRUE(ret || ERROR_IO_PENDING == ::GetLastError() || ERROR_HANDLE_EOF == ::GetLastError()); if (ERROR_HANDLE_EOF != ::GetLastError()) {