Loading fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_core.h +1 −1 Original line number Diff line number Diff line Loading @@ -134,7 +134,7 @@ class Worker { 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); Loading fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_dm_user.cpp +7 −16 Original line number Diff line number Diff line Loading @@ -392,10 +392,7 @@ bool Worker::ReadAlignedSector(sector_t sector, size_t sz) { // 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; } Loading Loading @@ -537,7 +534,7 @@ bool Worker::ReadUnalignedSector(sector_t sector, size_t size) { if (ret < 0) { SNAP_LOG(ERROR) << "ReadUnalignedSector failed for sector: " << sector << " size: " << size << " it->sector: " << it->first; return RespondIOError(); return false; } remaining_size -= ret; Loading Loading @@ -565,7 +562,7 @@ bool Worker::ReadUnalignedSector(sector_t sector, size_t size) { CHECK(diff_size <= BLOCK_SZ); if (remaining_size < diff_size) { if (!ReadDataFromBaseDevice(sector, remaining_size)) { return RespondIOError(); return false; } total_bytes_read += remaining_size; Loading @@ -574,7 +571,7 @@ bool Worker::ReadUnalignedSector(sector_t sector, size_t size) { } } else { if (!ReadDataFromBaseDevice(sector, diff_size)) { return RespondIOError(); return false; } total_bytes_read += diff_size; Loading @@ -596,7 +593,7 @@ bool Worker::ReadUnalignedSector(sector_t sector, size_t size) { 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 Loading @@ -610,13 +607,7 @@ bool Worker::RespondIOError() { // 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() { Loading @@ -624,7 +615,7 @@ bool Worker::DmuserReadRequest() { // 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); Loading Loading
fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_core.h +1 −1 Original line number Diff line number Diff line Loading @@ -134,7 +134,7 @@ class Worker { 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); Loading
fs_mgr/libsnapshot/snapuserd/user-space-merge/snapuserd_dm_user.cpp +7 −16 Original line number Diff line number Diff line Loading @@ -392,10 +392,7 @@ bool Worker::ReadAlignedSector(sector_t sector, size_t sz) { // 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; } Loading Loading @@ -537,7 +534,7 @@ bool Worker::ReadUnalignedSector(sector_t sector, size_t size) { if (ret < 0) { SNAP_LOG(ERROR) << "ReadUnalignedSector failed for sector: " << sector << " size: " << size << " it->sector: " << it->first; return RespondIOError(); return false; } remaining_size -= ret; Loading Loading @@ -565,7 +562,7 @@ bool Worker::ReadUnalignedSector(sector_t sector, size_t size) { CHECK(diff_size <= BLOCK_SZ); if (remaining_size < diff_size) { if (!ReadDataFromBaseDevice(sector, remaining_size)) { return RespondIOError(); return false; } total_bytes_read += remaining_size; Loading @@ -574,7 +571,7 @@ bool Worker::ReadUnalignedSector(sector_t sector, size_t size) { } } else { if (!ReadDataFromBaseDevice(sector, diff_size)) { return RespondIOError(); return false; } total_bytes_read += diff_size; Loading @@ -596,7 +593,7 @@ bool Worker::ReadUnalignedSector(sector_t sector, size_t size) { 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 Loading @@ -610,13 +607,7 @@ bool Worker::RespondIOError() { // 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() { Loading @@ -624,7 +615,7 @@ bool Worker::DmuserReadRequest() { // 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); Loading