3 Commits

Author SHA1 Message Date
ded55057cc updated changelog
Some checks failed
BlockStorage/repertory/pipeline/head There was a failure building this commit
2024-10-26 21:15:24 -05:00
7cb78cab40 fix 2024-10-26 21:11:20 -05:00
468aba1399 fixes 2024-10-26 20:53:41 -05:00
3 changed files with 10 additions and 11 deletions

View File

@ -19,6 +19,7 @@
* Corrected file times on S3 and Sia providers
* Corrected handling of `chown()` and `chmod()`
* Fixed erroneous download of chunks during resize
## v2.0.1-rc

View File

@ -1099,9 +1099,8 @@ auto winfsp_drive::SetFileSize(PVOID /*file_node*/, PVOID file_desc,
std::shared_ptr<i_open_file> file;
if (fm_->get_open_file(handle, true, file)) {
api_path = file->get_api_path();
i_open_file::native_operation_callback allocator;
if (set_allocation_size != 0U) {
allocator = [&](native_handle cur_handle) -> api_error {
const auto allocator = [&](native_handle cur_handle) -> api_error {
std::string meta_allocation_size;
utils::calculate_allocation_size(false, 0, new_size,
meta_allocation_size);
@ -1116,9 +1115,9 @@ auto winfsp_drive::SetFileSize(PVOID /*file_node*/, PVOID file_desc,
: api_error::os_error;
};
new_size = file->get_file_size();
error = file->native_operation(allocator);
} else {
allocator = [&](native_handle cur_handle) -> api_error {
const auto allocator = [&](native_handle cur_handle) -> api_error {
FILE_END_OF_FILE_INFO end_of_file_info{};
end_of_file_info.EndOfFile.QuadPart = static_cast<LONGLONG>(new_size);
return ::SetFileInformationByHandle(cur_handle, FileEndOfFileInfo,
@ -1127,9 +1126,9 @@ auto winfsp_drive::SetFileSize(PVOID /*file_node*/, PVOID file_desc,
? api_error::success
: api_error::os_error;
};
error = file->native_operation(new_size, allocator);
}
error = file->native_operation(new_size, allocator);
if (file_info != nullptr) {
// Populate file information
api_meta_map meta;

View File

@ -301,10 +301,14 @@ auto open_file::native_operation(
}
if (is_empty_file || (read_state_.size() != (last_chunk + 1U))) {
auto old_size = read_state_.size();
read_state_.resize(is_empty_file ? 0U : last_chunk + 1U);
if (not is_empty_file) {
read_state_[last_chunk] = true;
for (std::size_t chunk_index = old_size; chunk_index <= last_chunk;
++chunk_index) {
read_state_.set(chunk_index);
}
}
last_chunk_size_ = static_cast<std::size_t>(
@ -570,11 +574,6 @@ auto open_file::write(std::uint64_t write_offset, const data_buffer &data,
return api_error::os_error;
}
for (std::size_t chunk_index = start_chunk_index;
chunk_index <= end_chunk_index; ++chunk_index) {
read_state_.set(chunk_idx);
}
reset_timeout();
return api_error::success;
});