aboutsummaryrefslogtreecommitdiff
path: root/util-linux/swaponoff.c
diff options
context:
space:
mode:
authorMatt Whitlock <busybox@mattwhitlock.name>2014-03-22 19:10:08 -0400
committerDenys Vlasenko <vda.linux@googlemail.com>2014-03-23 18:36:22 +0100
commitb9bbd4ddf622bc365726af4f2424210762e74b32 (patch)
tree3d602ab0abdb89400fb5d8cbaff34bd237b507eb /util-linux/swaponoff.c
parentc3a27b0bfdf758f649caab2c474e690067af3402 (diff)
downloadbusybox-w32-b9bbd4ddf622bc365726af4f2424210762e74b32.tar.gz
busybox-w32-b9bbd4ddf622bc365726af4f2424210762e74b32.tar.bz2
busybox-w32-b9bbd4ddf622bc365726af4f2424210762e74b32.zip
fix interaction of -a and -p options in swapon
Swap entries in /etc/fstab inherit the priority specified on the command line unless they have 'pri' in their mount options. Signed-off-by: Matt Whitlock <busybox@mattwhitlock.name> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'util-linux/swaponoff.c')
-rw-r--r--util-linux/swaponoff.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/util-linux/swaponoff.c b/util-linux/swaponoff.c
index bcceff772..d5bfe1888 100644
--- a/util-linux/swaponoff.c
+++ b/util-linux/swaponoff.c
@@ -82,6 +82,9 @@ static int do_em_all(void)
82 struct mntent *m; 82 struct mntent *m;
83 FILE *f; 83 FILE *f;
84 int err; 84 int err;
85#ifdef G
86 int cl_flags = g_flags;
87#endif
85 88
86 f = setmntent("/etc/fstab", "r"); 89 f = setmntent("/etc/fstab", "r");
87 if (f == NULL) 90 if (f == NULL)
@@ -97,14 +100,14 @@ static int do_em_all(void)
97 ) { 100 ) {
98#if ENABLE_FEATURE_SWAPON_PRI 101#if ENABLE_FEATURE_SWAPON_PRI
99 char *p; 102 char *p;
100 g_flags = 0; /* each swap space might have different flags */ 103 g_flags = cl_flags; /* each swap space might have different flags */
101 p = hasmntopt(m, "pri"); 104 p = hasmntopt(m, "pri");
102 if (p) { 105 if (p) {
103 /* Max allowed 32767 (== SWAP_FLAG_PRIO_MASK) */ 106 /* Max allowed 32767 (== SWAP_FLAG_PRIO_MASK) */
104 unsigned prio = bb_strtou(p + 4, NULL, 10); 107 unsigned prio = bb_strtou(p + 4, NULL, 10);
105 /* We want to allow "NNNN,foo", thus errno == EINVAL is allowed too */ 108 /* We want to allow "NNNN,foo", thus errno == EINVAL is allowed too */
106 if (errno != ERANGE) { 109 if (errno != ERANGE) {
107 g_flags = SWAP_FLAG_PREFER | 110 g_flags = (g_flags & ~SWAP_FLAG_PRIO_MASK) | SWAP_FLAG_PREFER |
108 MIN(prio, SWAP_FLAG_PRIO_MASK); 111 MIN(prio, SWAP_FLAG_PRIO_MASK);
109 } 112 }
110 } 113 }