提交 d8ad7756 编写于 作者: L lifeng68

dev_mapper: fix device mapper metadata path

Signed-off-by: Nlifeng68 <lifeng68@huawei.com>
上级 bcd9a8ba
......@@ -21,7 +21,6 @@
#include "isula_libutils/image_devmapper_deviceset_metadata.h"
#include "isula_libutils/image_devmapper_direct_lvm_config.h"
#define DEVICE_FILE_DIR "/var/lib/isulad/storage/devicemapper/metadata"
#define DEVICE_SET_METAFILE "deviceset-metadata"
#define TRANSACTION_METADATA "transaction-metadata"
#define DEVICE_DIRECTORY "/dev"
......
......@@ -562,18 +562,26 @@ static uint64_t get_base_device_size(struct device_set *devset)
static int device_file_walk(struct device_set *devset)
{
int ret = 0;
DIR *dp;
struct dirent *entry;
DIR *dp = NULL;
struct dirent *entry = NULL;
struct stat st;
image_devmapper_device_info *info = NULL;
char fname[PATH_MAX] = { 0 };
char *metadir = NULL;
dp = opendir(DEVICE_FILE_DIR);
if (dp == NULL) {
ERROR("devmapper: open dir %s failed", DEVICE_FILE_DIR);
metadir = metadata_dir(devset);
if (metadir == NULL) {
ERROR("Failed to get meta data directory");
return -1;
}
dp = opendir(metadir);
if (dp == NULL) {
ERROR("devmapper: open dir %s failed", metadir);
ret = -1;
goto out;
}
// 路径权限导致stat为非regular文件,误判为dir,此处需优化
while ((entry = readdir(dp)) != NULL) {
int pathname_len;
......@@ -583,7 +591,7 @@ static int device_file_walk(struct device_set *devset)
}
(void)memset(fname, 0, sizeof(fname));
pathname_len = snprintf(fname, PATH_MAX, "%s/%s", DEVICE_FILE_DIR, entry->d_name);
pathname_len = snprintf(fname, PATH_MAX, "%s/%s", metadir, entry->d_name);
if (pathname_len < 0 || pathname_len >= PATH_MAX) {
ERROR("Pathname too long");
continue;
......@@ -618,7 +626,10 @@ static int device_file_walk(struct device_set *devset)
}
out:
closedir(dp);
if (dp != NULL) {
closedir(dp);
}
free(metadir);
return ret;
}
......@@ -2433,8 +2444,7 @@ static int devmapper_init_devset(const char *driver_home, const char **options,
goto out;
}
ret = devmapper_parse_options(devset, options, len);
if (ret != 0) {
if (devmapper_parse_options(devset, options, len) != 0) {
ERROR("devmapper: parse options failed");
ret = -1;
goto out;
......@@ -2453,8 +2463,7 @@ static int devmapper_init_devset(const char *driver_home, const char **options,
goto out;
}
ret = pthread_rwlock_init(&devset->devmapper_driver_rwlock, NULL);
if (ret != 0) {
if (pthread_rwlock_init(&devset->devmapper_driver_rwlock, NULL) != 0) {
ERROR("Failed to init devmapper conf rwlock");
ret = -1;
goto out;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册