diff options
-rw-r--r-- | mount/swapon.8 | 6 | ||||
-rw-r--r-- | mount/swapon.c | 8 |
2 files changed, 11 insertions, 3 deletions
diff --git a/mount/swapon.8 b/mount/swapon.8 index a3ebc97cd..595198d51 100644 --- a/mount/swapon.8 +++ b/mount/swapon.8 @@ -113,6 +113,12 @@ Devices that are already being used as swap are silently skipped. .TP .B "\-e, \-\-ifexists" Silently skip devices that do not exist. +The +.I /etc/fstab +mount option +.BI nofail +may be also used to skip non-existing device. + .TP .B "\-f, \-\-fixpgsz" Reinitialize (exec /sbin/mkswap) the swap space if its page size does not diff --git a/mount/swapon.c b/mount/swapon.c index d51149251..45cd26699 100644 --- a/mount/swapon.c +++ b/mount/swapon.c @@ -573,7 +573,7 @@ swapon_all(void) { while ((fstab = getmntent(fp)) != NULL) { const char *special; - int skip = 0; + int skip = 0, nofail = ifexists; int pri = priority; char *opt, *opts; @@ -588,6 +588,8 @@ swapon_all(void) { pri = atoi(opt+4); if (strcmp(opt, "noauto") == 0) skip = 1; + if (strcmp(opt, "nofail") == 0) + nofail = 1; } free(opts); @@ -596,13 +598,13 @@ swapon_all(void) { special = fsprobe_get_devname_by_spec(fstab->mnt_fsname); if (!special) { - if (!ifexists) + if (!nofail) status |= cannot_find(fstab->mnt_fsname); continue; } if (!is_in_proc_swaps(special) && - (!ifexists || !access(special, R_OK))) + (!nofail || !access(special, R_OK))) status |= do_swapon(special, pri, CANONIC); free((void *) special); |