From a5fd3d685e6c2d0a7d80e7607ac6ff7bf7d05f67 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Mon, 25 Oct 2010 14:03:16 +0200 Subject: [PATCH] swapon: add support for "nofail" fstab mount option This option is already supported by mount(8) and fsck(8), there is no reason to have any exception for swap devices. Note that the --ifexists command line option applies to all swap devices, the "nofail" setting is per device. Signed-off-by: Karel Zak --- mount/swapon.8 | 6 ++++++ mount/swapon.c | 8 +++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/mount/swapon.8 b/mount/swapon.8 index a3ebc97c..595198d5 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 d5114925..45cd2669 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); -- 2.39.5