Rename PReadAll/PWriteAll for file descriptor ptr to ReadAll/WriteAll
Utils.cc contain 2 implementation of PReadAll: 1 for unix fd, and 1 for
FileDescriptorPtr. However, the implementation for unix fd calls pread
syscall under the hood, which does not change file offset. The
implementation for FileDescriptorPtr DOES change file offset, making
code inconsistent. For now we rename inconsistent functions to
ReadAll/WriteAll. The next CL adds PReadAll/PWriteAll implementation for
FileDescriptorPtr.
Test: treehugger
Change-Id: I2781b294f0f8e866275e1649e9b45d565d4cd5b8
diff --git a/common/utils.cc b/common/utils.cc
index c8924b1..66fd12d 100644
--- a/common/utils.cc
+++ b/common/utils.cc
@@ -192,10 +192,10 @@
return true;
}
-bool PWriteAll(const FileDescriptorPtr& fd,
- const void* buf,
- size_t count,
- off_t offset) {
+bool WriteAll(const FileDescriptorPtr& fd,
+ const void* buf,
+ size_t count,
+ off_t offset) {
TEST_AND_RETURN_FALSE_ERRNO(fd->Seek(offset, SEEK_SET) !=
static_cast<off_t>(-1));
return WriteAll(fd, buf, count);
@@ -218,11 +218,11 @@
return true;
}
-bool PReadAll(const FileDescriptorPtr& fd,
- void* buf,
- size_t count,
- off_t offset,
- ssize_t* out_bytes_read) {
+bool ReadAll(const FileDescriptorPtr& fd,
+ void* buf,
+ size_t count,
+ off_t offset,
+ ssize_t* out_bytes_read) {
TEST_AND_RETURN_FALSE_ERRNO(fd->Seek(offset, SEEK_SET) !=
static_cast<off_t>(-1));
char* c_buf = static_cast<char*>(buf);
diff --git a/common/utils.h b/common/utils.h
index 05a92be..0762796 100644
--- a/common/utils.h
+++ b/common/utils.h
@@ -18,6 +18,7 @@
#define UPDATE_ENGINE_COMMON_UTILS_H_
#include <errno.h>
+#include <sys/types.h>
#include <time.h>
#include <unistd.h>
@@ -63,10 +64,11 @@
bool PWriteAll(int fd, const void* buf, size_t count, off_t offset);
bool WriteAll(const FileDescriptorPtr& fd, const void* buf, size_t count);
-bool PWriteAll(const FileDescriptorPtr& fd,
- const void* buf,
- size_t count,
- off_t offset);
+// WriteAll writes data at specified offset, but it modifies file position.
+bool WriteAll(const FileDescriptorPtr& fd,
+ const void* buf,
+ size_t count,
+ off_t off);
// Calls read() repeatedly until |count| bytes are read or EOF or EWOULDBLOCK
// is reached. Returns whether all read() calls succeeded (including EWOULDBLOCK
@@ -81,11 +83,12 @@
bool PReadAll(
int fd, void* buf, size_t count, off_t offset, ssize_t* out_bytes_read);
-bool PReadAll(const FileDescriptorPtr& fd,
- void* buf,
- size_t count,
- off_t offset,
- ssize_t* out_bytes_read);
+// Reads data at specified offset, this function does change file position.
+bool ReadAll(const FileDescriptorPtr& fd,
+ void* buf,
+ size_t count,
+ off_t offset,
+ ssize_t* out_bytes_read);
// Opens |path| for reading and appends its entire content to the container
// pointed to by |out_p|. Returns true upon successfully reading all of the
diff --git a/payload_consumer/extent_reader.cc b/payload_consumer/extent_reader.cc
index ad983ae..3c7329d 100644
--- a/payload_consumer/extent_reader.cc
+++ b/payload_consumer/extent_reader.cc
@@ -77,7 +77,7 @@
std::min(count - bytes_read, cur_extent_bytes_left);
ssize_t out_bytes_read;
- TEST_AND_RETURN_FALSE(utils::PReadAll(
+ TEST_AND_RETURN_FALSE(utils::ReadAll(
fd_,
bytes + bytes_read,
bytes_to_read,
diff --git a/payload_consumer/mount_history.cc b/payload_consumer/mount_history.cc
index 43a75b3..1d2ec76 100644
--- a/payload_consumer/mount_history.cc
+++ b/payload_consumer/mount_history.cc
@@ -37,7 +37,7 @@
brillo::Blob block0_buffer(kBlockSize);
ssize_t bytes_read;
- if (!utils::PReadAll(
+ if (!utils::ReadAll(
blockdevice_fd, block0_buffer.data(), kBlockSize, 0, &bytes_read)) {
LOG(WARNING) << "PReadAll failed";
return;
diff --git a/payload_consumer/partition_writer.cc b/payload_consumer/partition_writer.cc
index bdc6015..12b206e 100644
--- a/payload_consumer/partition_writer.cc
+++ b/payload_consumer/partition_writer.cc
@@ -351,7 +351,7 @@
for (uint64_t offset = 0; offset < length; offset += zeros.size()) {
uint64_t chunk_length =
std::min(length - offset, static_cast<uint64_t>(zeros.size()));
- TEST_AND_RETURN_FALSE(utils::PWriteAll(
+ TEST_AND_RETURN_FALSE(utils::WriteAll(
target_fd_, zeros.data(), chunk_length, start + offset));
}
}
diff --git a/payload_consumer/vabc_partition_writer.cc b/payload_consumer/vabc_partition_writer.cc
index 73bf413..e8994b4 100644
--- a/payload_consumer/vabc_partition_writer.cc
+++ b/payload_consumer/vabc_partition_writer.cc
@@ -115,11 +115,11 @@
break;
case CowOperation::CowReplace:
ssize_t bytes_read = 0;
- TEST_AND_RETURN_FALSE(utils::PReadAll(source_fd,
- buffer.data(),
- block_size,
- cow_op.src_block * block_size,
- &bytes_read));
+ TEST_AND_RETURN_FALSE(utils::ReadAll(source_fd,
+ buffer.data(),
+ block_size,
+ cow_op.src_block * block_size,
+ &bytes_read));
if (bytes_read <= 0 || static_cast<size_t>(bytes_read) != block_size) {
LOG(ERROR) << "source_fd->Read failed: " << bytes_read;
return false;
diff --git a/payload_generator/cow_size_estimator.cc b/payload_generator/cow_size_estimator.cc
index 662a3ca..3eb0aca 100644
--- a/payload_generator/cow_size_estimator.cc
+++ b/payload_generator/cow_size_estimator.cc
@@ -39,11 +39,11 @@
// No need to read from payload.bin then decompress, just read from target
// directly.
ssize_t bytes_read = 0;
- auto success = utils::PReadAll(target_fd,
- buffer.data(),
- buffer.size(),
- extent.start_block() * block_size,
- &bytes_read);
+ auto success = utils::ReadAll(target_fd,
+ buffer.data(),
+ buffer.size(),
+ extent.start_block() * block_size,
+ &bytes_read);
CHECK(success);
CHECK_EQ(static_cast<size_t>(bytes_read), buffer.size());
writer->AddRawBlocks(extent.start_block(), buffer.data(), buffer.size());