snapuserd: Return void from RespondIOError.
RespondIOError could return "true" which is not the correct value for
its callers, usually. However since RespondIOError is not specifically
needed anymore, we can also avoid calling it in most places.
This also fixes a bug where ReadUnalignedSector's return value was
implicitly converted to boolean.
Bug: 288273605
Test: snapuserd_test
Change-Id: I62140b2b05d0f9f53cb669c5c0d7e0ffc7f4c9a1
diff --git a/fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_core.h b/fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_core.h
index cf38875..7cffc1c 100644
--- a/fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_core.h
+++ b/fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_core.h
@@ -134,7 +134,7 @@
bool ReadUnalignedSector(sector_t sector, size_t size);
int ReadUnalignedSector(sector_t sector, size_t size,
std::vector<std::pair<sector_t, const CowOperation*>>::iterator& it);
- bool RespondIOError();
+ void RespondIOError();
// Processing COW operations
bool ProcessCowOp(const CowOperation* cow_op);
diff --git a/fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_dm_user.cpp b/fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_dm_user.cpp
index c505c32..0eb2a14 100644
--- a/fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_dm_user.cpp
+++ b/fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_dm_user.cpp
@@ -392,10 +392,7 @@
// Just return the header if it is an error
if (header->type == DM_USER_RESP_ERROR) {
- if (!RespondIOError()) {
- return false;
- }
-
+ RespondIOError();
io_error = true;
break;
}
@@ -537,7 +534,7 @@
if (ret < 0) {
SNAP_LOG(ERROR) << "ReadUnalignedSector failed for sector: " << sector
<< " size: " << size << " it->sector: " << it->first;
- return RespondIOError();
+ return false;
}
remaining_size -= ret;
@@ -565,7 +562,7 @@
CHECK(diff_size <= BLOCK_SZ);
if (remaining_size < diff_size) {
if (!ReadDataFromBaseDevice(sector, remaining_size)) {
- return RespondIOError();
+ return false;
}
total_bytes_read += remaining_size;
@@ -574,7 +571,7 @@
}
} else {
if (!ReadDataFromBaseDevice(sector, diff_size)) {
- return RespondIOError();
+ return false;
}
total_bytes_read += diff_size;
@@ -596,7 +593,7 @@
return true;
}
-bool Worker::RespondIOError() {
+void Worker::RespondIOError() {
struct dm_user_header* header = bufsink_.GetHeaderPtr();
header->type = DM_USER_RESP_ERROR;
// This is an issue with the dm-user interface. There
@@ -610,13 +607,7 @@
// TODO: Fix the interface
CHECK(header_response_);
- if (!WriteDmUserPayload(0)) {
- return false;
- }
-
- // There is no need to process further as we have already seen
- // an I/O error
- return true;
+ WriteDmUserPayload(0);
}
bool Worker::DmuserReadRequest() {
@@ -624,7 +615,7 @@
// Unaligned I/O request
if (!IsBlockAligned(header->sector << SECTOR_SHIFT)) {
- return ReadUnalignedSector(header->sector, header->len);
+ return ReadUnalignedSector(header->sector, header->len) != -1;
}
return ReadAlignedSector(header->sector, header->len);