Merge "adds LO_FLAGS_AUTOCLEAR for loop device of zram backing device"
This commit is contained in:
commit
af09c15049
|
@ -2119,6 +2119,9 @@ static bool PrepareZramBackingDevice(off64_t size) {
|
||||||
PERROR << "Cannot open " << loop_device;
|
PERROR << "Cannot open " << loop_device;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (!LoopControl::SetAutoClearStatus(loop_fd.get())) {
|
||||||
|
PERROR << "Failed set LO_FLAGS_AUTOCLEAR for " << loop_device;
|
||||||
|
}
|
||||||
if (!LoopControl::EnableDirectIo(loop_fd.get())) {
|
if (!LoopControl::EnableDirectIo(loop_fd.get())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,6 +46,9 @@ class LoopControl final {
|
||||||
// Enable Direct I/O on a loop device. This requires kernel 4.9+.
|
// Enable Direct I/O on a loop device. This requires kernel 4.9+.
|
||||||
static bool EnableDirectIo(int fd);
|
static bool EnableDirectIo(int fd);
|
||||||
|
|
||||||
|
// Set LO_FLAGS_AUTOCLEAR on a loop device.
|
||||||
|
static bool SetAutoClearStatus(int fd);
|
||||||
|
|
||||||
LoopControl(const LoopControl&) = delete;
|
LoopControl(const LoopControl&) = delete;
|
||||||
LoopControl& operator=(const LoopControl&) = delete;
|
LoopControl& operator=(const LoopControl&) = delete;
|
||||||
LoopControl& operator=(LoopControl&&) = default;
|
LoopControl& operator=(LoopControl&&) = default;
|
||||||
|
|
|
@ -133,6 +133,16 @@ bool LoopControl::EnableDirectIo(int fd) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool LoopControl::SetAutoClearStatus(int fd) {
|
||||||
|
struct loop_info64 info = {};
|
||||||
|
|
||||||
|
info.lo_flags |= LO_FLAGS_AUTOCLEAR;
|
||||||
|
if (ioctl(fd, LOOP_SET_STATUS64, &info)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
LoopDevice::LoopDevice(android::base::borrowed_fd fd, const std::chrono::milliseconds& timeout_ms,
|
LoopDevice::LoopDevice(android::base::borrowed_fd fd, const std::chrono::milliseconds& timeout_ms,
|
||||||
bool auto_close)
|
bool auto_close)
|
||||||
: fd_(fd), owned_fd_(-1) {
|
: fd_(fd), owned_fd_(-1) {
|
||||||
|
|
Loading…
Reference in New Issue