diff options
author | Timo Teräs <timo.teras@iki.fi> | 2017-05-25 18:04:41 +0300 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2017-05-25 18:06:27 +0300 |
commit | ede5165833b94051ecbc35e9ac4a359f54cc0116 (patch) | |
tree | cc24e44bd2a1387c11b66713c2b3793d2e777ff9 /src | |
parent | b4b95e9ae7a41d7cfec9ec4b2001ad02090fadf4 (diff) | |
download | apk-tools-ede5165833b94051ecbc35e9ac4a359f54cc0116.tar.gz apk-tools-ede5165833b94051ecbc35e9ac4a359f54cc0116.tar.bz2 apk-tools-ede5165833b94051ecbc35e9ac4a359f54cc0116.tar.xz apk-tools-ede5165833b94051ecbc35e9ac4a359f54cc0116.zip |
db: fix regression preventing remounting apk cache r/w
Introduced in commit c0f2d88f342f4d185f3991f98b79ab61a03896e4.
fstatfs is needed to inspect the mount flags.
Diffstat (limited to 'src')
-rw-r--r-- | src/database.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/database.c b/src/database.c index 8230764..67cc4f5 100644 --- a/src/database.c +++ b/src/database.c @@ -1603,7 +1603,7 @@ int apk_db_open(struct apk_database *db, struct apk_db_options *dbopts) /* figure out where to have the cache */ fd = openat(db->root_fd, dbopts->cache_dir, O_RDONLY | O_CLOEXEC); - if (fd >= 0) { + if (fd >= 0 && fstatfs(fd, &stfs) == 0) { db->cache_dir = dbopts->cache_dir; db->cache_fd = fd; db->cache_remount_flags = map_statfs_flags(stfs.f_flags); @@ -1622,6 +1622,7 @@ int apk_db_open(struct apk_database *db, struct apk_db_options *dbopts) } } } else { + if (fd >= 0) close(fd); db->cache_dir = apk_static_cache_dir; db->cache_fd = openat(db->root_fd, db->cache_dir, O_RDONLY | O_CLOEXEC); } |