libfiemap_writer: test pinned file bit
The pinned file should have NOCOW_FL flag. Bug: 129803146 Change-Id: Idaf5bdbbdcce1c3805cd16ddb0c1c7f1df87dcfb Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
This commit is contained in:
parent
5ccb6a5cdc
commit
a9b3c3d605
1 changed files with 17 additions and 1 deletions
|
@ -407,9 +407,25 @@ static bool IsFilePinned(int file_fd, const std::string& file_path, uint32_t fs_
|
|||
#define F2FS_IOC_GET_PIN_FILE _IOR(F2FS_IOCTL_MAGIC, 14, __u32)
|
||||
#endif
|
||||
|
||||
// f2fs: export FS_NOCOW_FL flag to user
|
||||
uint32_t flags;
|
||||
int error = ioctl(file_fd, FS_IOC_GETFLAGS, &flags);
|
||||
if (error < 0) {
|
||||
if ((errno == ENOTTY) || (errno == ENOTSUP)) {
|
||||
PLOG(ERROR) << "Failed to get flags, not supported by kernel: " << file_path;
|
||||
} else {
|
||||
PLOG(ERROR) << "Failed to get flags: " << file_path;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (!(flags & FS_NOCOW_FL)) {
|
||||
LOG(ERROR) << "It is not pinned: " << file_path;
|
||||
return false;
|
||||
}
|
||||
|
||||
// F2FS_IOC_GET_PIN_FILE returns the number of blocks moved.
|
||||
uint32_t moved_blocks_nr;
|
||||
int error = ioctl(file_fd, F2FS_IOC_GET_PIN_FILE, &moved_blocks_nr);
|
||||
error = ioctl(file_fd, F2FS_IOC_GET_PIN_FILE, &moved_blocks_nr);
|
||||
if (error < 0) {
|
||||
if ((errno == ENOTTY) || (errno == ENOTSUP)) {
|
||||
PLOG(ERROR) << "Failed to get file pin status, not supported by kernel: " << file_path;
|
||||
|
|
Loading…
Reference in a new issue