diff options
Diffstat (limited to 'lib/device/filesystem.c')
-rw-r--r-- | lib/device/filesystem.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/device/filesystem.c b/lib/device/filesystem.c index 61e4d805e..b4c43a626 100644 --- a/lib/device/filesystem.c +++ b/lib/device/filesystem.c @@ -22,6 +22,7 @@ #include <dirent.h> #include <mntent.h> +#include <sys/ioctl.h> static const char *_lvresize_fs_helper_path; @@ -105,6 +106,7 @@ int fs_get_info(struct cmd_context *cmd, struct logical_volume *lv, struct fs_info info; FILE *fme = NULL; struct mntent *me; + int fd; int ret; if (dm_snprintf(lv_path, PATH_MAX, "%s%s/%s", lv->vg->cmd->dev_dir, @@ -150,6 +152,17 @@ int fs_get_info(struct cmd_context *cmd, struct logical_volume *lv, log_print("File system found on crypt device %s on LV %s.", crypt_path, display_lvname(lv)); + if ((fd = open(crypt_path, O_RDONLY)) < 0) { + log_error("Failed to open crypt path %s", crypt_path); + return 0; + } + if (ioctl(fd, BLKGETSIZE64, &info.crypt_dev_size_bytes) < 0) { + log_error("Failed to get crypt device size %s", crypt_path); + close(fd); + return 0; + } + close(fd); + if (!fs_get_blkid(crypt_path, &info)) { log_error("No file system info from blkid for dm-crypt device %s on LV %s.", crypt_path, display_lvname(lv)); |