Show the name of the BLK* ioctl failure instead of the number.
The ioctl number is normally tied to the platform and doesn't allow a
quick debug of what was supported. This patch prints the name instead
of the error number.
Bug: 28744609
TEST=Deployed an update on Android and saw the ioctl names instead of numbers.
Change-Id: Ie3a69841f3bf9cd719ead0cdc80e82d2c4725c68
diff --git a/payload_consumer/delta_performer.cc b/payload_consumer/delta_performer.cc
index d25b829..09b19fb 100644
--- a/payload_consumer/delta_performer.cc
+++ b/payload_consumer/delta_performer.cc
@@ -140,22 +140,26 @@
if (!part_size || part_size <= data_size)
return false;
- const vector<int> requests = {
- BLKSECDISCARD,
- BLKDISCARD,
+ struct blkioctl_request {
+ int number;
+ const char* name;
+ };
+ const vector<blkioctl_request> blkioctl_requests = {
+ {BLKSECDISCARD, "BLKSECDISCARD"},
+ {BLKDISCARD, "BLKDISCARD"},
#ifdef BLKZEROOUT
- BLKZEROOUT,
+ {BLKZEROOUT, "BLKZEROOUT"},
#endif
};
- for (int request : requests) {
+ for (const auto& req : blkioctl_requests) {
int error = 0;
- if (fd->BlkIoctl(request, data_size, part_size - data_size, &error) &&
+ if (fd->BlkIoctl(req.number, data_size, part_size - data_size, &error) &&
error == 0) {
return true;
}
LOG(WARNING) << "Error discarding the last "
<< (part_size - data_size) / 1024 << " KiB using ioctl("
- << request << ")";
+ << req.name << ")";
}
return false;
}