aboutsummaryrefslogtreecommitdiffstats
path: root/main/apk-tools/0006-db-remount-ro-cache-to-rw-earlier-for-update-to-work.patch
blob: 28c837be697b74fcaa14376766eed34264d174b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
From 99010588913344cf037aa163a47acd469fff5594 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
Date: Fri, 22 Apr 2011 11:24:02 +0300
Subject: [PATCH 6/7] db: remount ro cache to rw earlier for update to work

---
 src/database.c |   31 ++++++++++++++++---------------
 1 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/src/database.c b/src/database.c
index 45960d2..bc17ff2 100644
--- a/src/database.c
+++ b/src/database.c
@@ -1263,6 +1263,22 @@ int apk_db_open(struct apk_database *db, struct apk_db_options *dbopts)
 			}
 		}
 	}
+
+	if ((dbopts->open_flags & (APK_OPENF_WRITE | APK_OPENF_CACHE_WRITE)) &&
+	    db->ro_cache) {
+		/* remount cache read-write */
+		db->cache_remount_dir = find_mountpoint(db->root_fd, db->cache_dir);
+		if (db->cache_remount_dir == NULL) {
+			apk_warning("Unable to find cache directory mount point");
+		} else if (do_remount(db->cache_remount_dir, "rw") != 0) {
+			free(db->cache_remount_dir);
+			db->cache_remount_dir = NULL;
+			apk_error("Unable to remount cache read-write");
+			r = EROFS;
+			goto ret_r;
+		}
+	}
+
 	if (!(dbopts->open_flags & APK_OPENF_NO_SYS_REPOS)) {
 		list_for_each_entry(repo, &dbopts->repository_list, list) {
 			r = apk_db_add_repository(db, APK_BLOB_STR(repo->url));
@@ -1293,21 +1309,6 @@ int apk_db_open(struct apk_database *db, struct apk_db_options *dbopts)
 			    "might not function properly");
 	}
 
-	if ((dbopts->open_flags & (APK_OPENF_WRITE | APK_OPENF_CACHE_WRITE)) && 
-	    db->ro_cache) {
-		/* remount cache read-write */
-		db->cache_remount_dir = find_mountpoint(db->root_fd, db->cache_dir);
-		if (db->cache_remount_dir == NULL) {
-			apk_warning("Unable to find cache directory mount point");
-		} else if (do_remount(db->cache_remount_dir, "rw") != 0) {
-			free(db->cache_remount_dir);
-			db->cache_remount_dir = NULL;
-			apk_error("Unable to remount cache read-write");
-			r = EROFS;
-			goto ret_r;
-		}
-	}
-
 	return rr;
 
 ret_errno:
-- 
1.7.4.5