Module Name:    src
Committed By:   kre
Date:           Wed Mar  1 15:15:56 UTC 2023

Modified Files:
        src/sbin/swapctl: swapctl.c

Log Message:
When processing swapon -a (or swapctl -A, or swapctl -U) ignore lines in
fstab that have nothing to do with swapping (fs_type is neither "sw" nor "dp")
before running getfsspecname() on the fs_spec field of the line.

This avoids entries like this:

NAME=OFTEN_UNCONNECTED   /local/archived ffs     rw,log,noauto    0 0

in fstab from generating spurious error messages when the wedge named
is not currently connected to the system - that is the drive on which the
wedge exists is not connected, or not powered on.   "noauto" handles that
for some other uses, the "0"s in fs_freq and fs_passno work for other uses,
but swap{on,ctl} never look at those fields (not for this purpose).

Non "sw"/"dp" lines were being ignored anyway, but not until (a little) later.


To generate a diff of this commit:
cvs rdiff -u -r1.41 -r1.42 src/sbin/swapctl/swapctl.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sbin/swapctl/swapctl.c
diff -u src/sbin/swapctl/swapctl.c:1.41 src/sbin/swapctl/swapctl.c:1.42
--- src/sbin/swapctl/swapctl.c:1.41	Mon Apr  4 19:33:44 2022
+++ src/sbin/swapctl/swapctl.c	Wed Mar  1 15:15:56 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: swapctl.c,v 1.41 2022/04/04 19:33:44 andvar Exp $	*/
+/*	$NetBSD: swapctl.c,v 1.42 2023/03/01 15:15:56 kre Exp $	*/
 
 /*
  * Copyright (c) 1996, 1997, 1999, 2015 Matthew R. Green
@@ -64,7 +64,7 @@
 #include <sys/cdefs.h>
 
 #ifndef lint
-__RCSID("$NetBSD: swapctl.c,v 1.41 2022/04/04 19:33:44 andvar Exp $");
+__RCSID("$NetBSD: swapctl.c,v 1.42 2023/03/01 15:15:56 kre Exp $");
 #endif
 
 
@@ -733,6 +733,13 @@ do_fstab(int add)
 		char buf[MAXPATHLEN];
 		char *spec, *fsspec;
 
+		/*
+		 * Ignore any ewtries which are not related to swapping
+		 */
+		if (strcmp(fp->fs_type, "sw") != 0 &&
+		    strcmp(fp->fs_type, "dp") != 0)
+			continue;
+
 		if (getfsspecname(buf, sizeof(buf), fp->fs_spec) == NULL) {
 			warn("%s", buf);
 			continue;
@@ -745,9 +752,6 @@ do_fstab(int add)
 			continue;
 		}
 
-		if (strcmp(fp->fs_type, "sw") != 0)
-			continue;
-
 		/* handle dp as mnt option */
 		if (strstr(fp->fs_mntops, "dp") && add)
 			set_dumpdev1(spec);

Reply via email to