svn commit: r301838 - head/sys/compat/linprocfs

Konstantin Belousov kib at FreeBSD.org
Sun Jun 12 11:13:39 UTC 2016


Author: kib
Date: Sun Jun 12 11:13:38 2016
New Revision: 301838
URL: https://svnweb.freebsd.org/changeset/base/301838

Log:
  swap_dev_info() does not require Giant, so Giant locking around
  the loop in linprocfs_doswaps() is useless.
  List of the registered filesystems is protected by vfsconf_sx,
  not by the Giant.  Adjust linprocfs_dofilesystems() correspondingly.
  
  Approved by:	re (delphij), des (linprocfs maintainer)
  Sponsored by:	The FreeBSD Foundation
  MFC after:	1 week

Modified:
  head/sys/compat/linprocfs/linprocfs.c

Modified: head/sys/compat/linprocfs/linprocfs.c
==============================================================================
--- head/sys/compat/linprocfs/linprocfs.c	Sun Jun 12 08:32:39 2016	(r301837)
+++ head/sys/compat/linprocfs/linprocfs.c	Sun Jun 12 11:13:38 2016	(r301838)
@@ -490,7 +490,6 @@ linprocfs_doswaps(PFS_FILL_ARGS)
 	char devname[SPECNAMELEN + 1];
 
 	sbuf_printf(sb, "Filename\t\t\t\tType\t\tSize\tUsed\tPriority\n");
-	mtx_lock(&Giant);
 	for (n = 0; ; n++) {
 		if (swap_dev_info(n, &xsw, devname, sizeof(devname)) != 0)
 			break;
@@ -504,7 +503,6 @@ linprocfs_doswaps(PFS_FILL_ARGS)
 		sbuf_printf(sb, "/dev/%-34s unknown\t\t%jd\t%jd\t-1\n",
 		    devname, total, used);
 	}
-	mtx_unlock(&Giant);
 	return (0);
 }
 
@@ -1326,13 +1324,13 @@ linprocfs_dofilesystems(PFS_FILL_ARGS)
 {
 	struct vfsconf *vfsp;
 
-	mtx_lock(&Giant);
+	vfsconf_slock();
 	TAILQ_FOREACH(vfsp, &vfsconf, vfc_list) {
 		if (vfsp->vfc_flags & VFCF_SYNTHETIC)
 			sbuf_printf(sb, "nodev");
 		sbuf_printf(sb, "\t%s\n", vfsp->vfc_name);
 	}
-	mtx_unlock(&Giant);
+	vfsconf_sunlock();
 	return(0);
 }
 


More information about the svn-src-head mailing list