libdm: fetch and present device status flags
Fetch detailed information for devices through its flags and store in helper Info class, i.e.: - active - access - activeTable - inactiveTable - bufferFull Change-Id: I3241c5bca00e038d19f99390f40710ca7cff8456 Bug: 137759376 Test: manual test Signed-off-by: Alessio Balsini <balsini@google.com>
This commit is contained in:
parent
60fa8b8ad2
commit
1b80a23c57
2 changed files with 27 additions and 0 deletions
|
|
@ -150,6 +150,15 @@ bool DeviceMapper::GetDeviceUniquePath(const std::string& name, std::string* pat
|
|||
return true;
|
||||
}
|
||||
|
||||
std::optional<DeviceMapper::Info> DeviceMapper::GetDetailedInfo(const std::string& name) const {
|
||||
struct dm_ioctl io;
|
||||
InitIo(&io, name);
|
||||
if (ioctl(fd_, DM_DEV_STATUS, &io) < 0) {
|
||||
return std::nullopt;
|
||||
}
|
||||
return Info(io.flags);
|
||||
}
|
||||
|
||||
DmDeviceState DeviceMapper::GetState(const std::string& name) const {
|
||||
struct dm_ioctl io;
|
||||
InitIo(&io, name);
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
|
||||
#include <chrono>
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
|
@ -70,10 +71,27 @@ class DeviceMapper final {
|
|||
uint64_t dev_;
|
||||
};
|
||||
|
||||
class Info {
|
||||
uint32_t flags_;
|
||||
|
||||
public:
|
||||
explicit Info(uint32_t flags) : flags_(flags) {}
|
||||
|
||||
bool IsActiveTablePresent() const { return flags_ & DM_ACTIVE_PRESENT_FLAG; }
|
||||
bool IsBufferFull() const { return flags_ & DM_BUFFER_FULL_FLAG; }
|
||||
bool IsInactiveTablePresent() const { return flags_ & DM_INACTIVE_PRESENT_FLAG; }
|
||||
bool IsReadOnly() const { return flags_ & DM_READONLY_FLAG; }
|
||||
bool IsSuspended() const { return flags_ & DM_SUSPEND_FLAG; }
|
||||
};
|
||||
|
||||
// Removes a device mapper device with the given name.
|
||||
// Returns 'true' on success, false otherwise.
|
||||
bool DeleteDevice(const std::string& name);
|
||||
|
||||
// Fetches and returns the complete state of the underlying device mapper
|
||||
// device with given name.
|
||||
std::optional<Info> GetDetailedInfo(const std::string& name) const;
|
||||
|
||||
// Returns the current state of the underlying device mapper device
|
||||
// with given name.
|
||||
// One of INVALID, SUSPENDED or ACTIVE.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue