Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Aug 2008 22:38:25 GMT
From:      John Birrell <jb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 147847 for review
Message-ID:  <200808192238.m7JMcPJU021366@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=147847

Change 147847 by jb@freebsd3 on 2008/08/19 22:38:19

	Add some probes for successful stat()s without having to trigger on
	all stat()s because a lot are for files that don't exist and we 
	contribute to global warming if we trigger on those.

Affected files ...

.. //depot/projects/dtrace/src/sys/kern/vfs_syscalls.c#26 edit

Differences ...

==== //depot/projects/dtrace/src/sys/kern/vfs_syscalls.c#26 (text+ko) ====

@@ -90,6 +90,7 @@
 SDT_PROBE_ARGTYPE(vfs, , stat, mode, 1, "int");
 SDT_PROBE_DEFINE(vfs, , stat, reg);
 SDT_PROBE_ARGTYPE(vfs, , stat, reg, 0, "char *");
+SDT_PROBE_ARGTYPE(vfs, , stat, reg, 1, "int");
 
 static int chroot_refuse_vdir_fds(struct filedesc *fdp);
 static int getutimes(const struct timeval *, enum uio_seg, struct timespec *);
@@ -2341,6 +2342,11 @@
 		return (error);
 	vfslocked = NDHASGIANT(&nd);
 	error = vn_stat(nd.ni_vp, &sb, td->td_ucred, NOCRED, td);
+	if (!error) {
+		SDT_PROBE(vfs, , stat, mode, path, sb.st_mode, 0, 0, 0);
+		if (S_ISREG(sb.st_mode))
+			SDT_PROBE(vfs, , stat, reg, path, pathseg, 0, 0, 0);
+	}
 	NDFREE(&nd, NDF_ONLY_PNBUF);
 	vput(nd.ni_vp);
 	VFS_UNLOCK_GIANT(vfslocked);
@@ -2353,10 +2359,6 @@
 	if (KTRPOINT(td, KTR_STRUCT))
 		ktrstat(&sb);
 #endif
-	SDT_PROBE(vfs, , stat, mode, path, sb.st_mode, 0, 0, 0);
-	if (S_ISREG(sb.st_mode)) {
-		SDT_PROBE(vfs, , stat, reg, path, 0, 0, 0, 0);
-	}
 	return (0);
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200808192238.m7JMcPJU021366>