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>
This commit is contained in:
parent
c3a27b0bfd
commit
b9bbd4ddf6
@ -82,6 +82,9 @@ static int do_em_all(void)
|
|||||||
struct mntent *m;
|
struct mntent *m;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
int err;
|
int err;
|
||||||
|
#ifdef G
|
||||||
|
int cl_flags = g_flags;
|
||||||
|
#endif
|
||||||
|
|
||||||
f = setmntent("/etc/fstab", "r");
|
f = setmntent("/etc/fstab", "r");
|
||||||
if (f == NULL)
|
if (f == NULL)
|
||||||
@ -97,14 +100,14 @@ static int do_em_all(void)
|
|||||||
) {
|
) {
|
||||||
#if ENABLE_FEATURE_SWAPON_PRI
|
#if ENABLE_FEATURE_SWAPON_PRI
|
||||||
char *p;
|
char *p;
|
||||||
g_flags = 0; /* each swap space might have different flags */
|
g_flags = cl_flags; /* each swap space might have different flags */
|
||||||
p = hasmntopt(m, "pri");
|
p = hasmntopt(m, "pri");
|
||||||
if (p) {
|
if (p) {
|
||||||
/* Max allowed 32767 (== SWAP_FLAG_PRIO_MASK) */
|
/* Max allowed 32767 (== SWAP_FLAG_PRIO_MASK) */
|
||||||
unsigned prio = bb_strtou(p + 4, NULL, 10);
|
unsigned prio = bb_strtou(p + 4, NULL, 10);
|
||||||
/* We want to allow "NNNN,foo", thus errno == EINVAL is allowed too */
|
/* We want to allow "NNNN,foo", thus errno == EINVAL is allowed too */
|
||||||
if (errno != ERANGE) {
|
if (errno != ERANGE) {
|
||||||
g_flags = SWAP_FLAG_PREFER |
|
g_flags = (g_flags & ~SWAP_FLAG_PRIO_MASK) | SWAP_FLAG_PREFER |
|
||||||
MIN(prio, SWAP_FLAG_PRIO_MASK);
|
MIN(prio, SWAP_FLAG_PRIO_MASK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user