diff options
author | Karel Zak | 2010-10-25 14:03:16 +0200 |
---|---|---|
committer | Karel Zak | 2010-10-25 14:03:16 +0200 |
commit | a5fd3d685e6c2d0a7d80e7607ac6ff7bf7d05f67 (patch) | |
tree | 80e479cfa0c3b3f25a93b7d4ed37ecf5a30c09a5 /mount | |
parent | umount: umount -r segfault (diff) | |
download | kernel-qcow2-util-linux-a5fd3d685e6c2d0a7d80e7607ac6ff7bf7d05f67.tar.gz kernel-qcow2-util-linux-a5fd3d685e6c2d0a7d80e7607ac6ff7bf7d05f67.tar.xz kernel-qcow2-util-linux-a5fd3d685e6c2d0a7d80e7607ac6ff7bf7d05f67.zip |
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 <kzak@redhat.com>
Diffstat (limited to 'mount')
-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); |