svn commit: r266400 - stable/10/usr.sbin/mfiutil

John Baldwin jhb at FreeBSD.org
Sun May 18 15:28:26 UTC 2014


Author: jhb
Date: Sun May 18 15:28:25 2014
New Revision: 266400
URL: http://svnweb.freebsd.org/changeset/base/266400

Log:
  MFC 264765,264766:
  - Don't claim the adapter is idle if it is clearing a drive.
  - Fix an off by one error when checking for the stop event.  This
    resulted in not showing the most recent event by default.
  - When the stop even is hit, break out of the outer loop to stop
    fetching more events.

Modified:
  stable/10/usr.sbin/mfiutil/mfi_evt.c
  stable/10/usr.sbin/mfiutil/mfi_show.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/usr.sbin/mfiutil/mfi_evt.c
==============================================================================
--- stable/10/usr.sbin/mfiutil/mfi_evt.c	Sun May 18 14:25:19 2014	(r266399)
+++ stable/10/usr.sbin/mfiutil/mfi_evt.c	Sun May 18 15:28:25 2014	(r266400)
@@ -33,6 +33,7 @@
 #include <sys/errno.h>
 #include <err.h>
 #include <fcntl.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <strings.h>
@@ -534,6 +535,7 @@ show_events(int ac, char **av)
 	struct mfi_evt_log_state info;
 	struct mfi_evt_list *list;
 	union mfi_evt filter;
+	bool first;
 	long val;
 	char *cp;
 	ssize_t size;
@@ -640,7 +642,9 @@ show_events(int ac, char **av)
 		close(fd);
 		return (ENOMEM);
 	}
-	for (seq = start;;) {
+	first = true;
+	seq = start;
+	for (;;) {
 		if (mfi_get_events(fd, list, num_events, filter, seq,
 		    &status) < 0) {
 			error = errno;
@@ -650,8 +654,6 @@ show_events(int ac, char **av)
 			return (error);
 		}
 		if (status == MFI_STAT_NOT_FOUND) {
-			if (seq == start)
-				warnx("No matching events found");
 			break;
 		}
 		if (status != MFI_STAT_OK) {
@@ -669,13 +671,14 @@ show_events(int ac, char **av)
 			 * the case that our stop point is earlier in
 			 * the buffer than our start point.
 			 */
-			if (list->event[i].seq >= stop) {
+			if (list->event[i].seq > stop) {
 				if (start <= stop)
-					break;
+					goto finish;
 				else if (list->event[i].seq < start)
-					break;
+					goto finish;
 			}
 			mfi_decode_evt(fd, &list->event[i], verbose);
+			first = false;
 		}
 
 		/*
@@ -686,6 +689,9 @@ show_events(int ac, char **av)
 		seq = list->event[list->count - 1].seq + 1;
 			
 	}
+finish:
+	if (first)
+		warnx("No matching events found");
 
 	free(list);
 	close(fd);

Modified: stable/10/usr.sbin/mfiutil/mfi_show.c
==============================================================================
--- stable/10/usr.sbin/mfiutil/mfi_show.c	Sun May 18 14:25:19 2014	(r266399)
+++ stable/10/usr.sbin/mfiutil/mfi_show.c	Sun May 18 15:28:25 2014	(r266400)
@@ -766,7 +766,7 @@ show_progress(int ac, char **av __unused
 			printf("drive %s ", mfi_drive_name(NULL, device_id,
 			    MFI_DNAME_DEVICE_ID|MFI_DNAME_HONOR_OPTS));
 			mfi_display_progress("Clear", &pinfo.prog_info.clear);
-			
+			busy = 1;
 		}
 	}
 


More information about the svn-src-all mailing list