@@ -353,7 +353,7 @@ get_usage(zpool_help_t idx)
353353 "\tupgrade -v\n"
354354 "\tupgrade [-V version] <-a | pool ...>\n" ));
355355 case HELP_EVENTS :
356- return (gettext ("\tevents [-vHfc]\n" ));
356+ return (gettext ("\tevents [-vHfc] [pool] \n" ));
357357 case HELP_GET :
358358 return (gettext ("\tget [-Hp] [-o \"all\" | field[,...]] "
359359 "<\"all\" | property[,...]> <pool> ...\n" ));
@@ -7385,6 +7385,7 @@ typedef struct ev_opts {
73857385 int scripted ;
73867386 int follow ;
73877387 int clear ;
7388+ char poolname [ZFS_MAX_DATASET_NAME_LEN ];
73887389} ev_opts_t ;
73897390
73907391static void
@@ -7652,6 +7653,7 @@ zpool_do_events_next(ev_opts_t *opts)
76527653{
76537654 nvlist_t * nvl ;
76547655 int zevent_fd , ret , dropped ;
7656+ char * pool ;
76557657
76567658 zevent_fd = open (ZFS_DEV , O_RDWR );
76577659 VERIFY (zevent_fd >= 0 );
@@ -7668,6 +7670,11 @@ zpool_do_events_next(ev_opts_t *opts)
76687670 if (dropped > 0 )
76697671 (void ) printf (gettext ("dropped %d events\n" ), dropped );
76707672
7673+ if (strlen (opts -> poolname ) > 0 &&
7674+ nvlist_lookup_string (nvl , FM_FMRI_ZFS_POOL , & pool ) == 0 &&
7675+ strcmp (opts -> poolname , pool ) != 0 )
7676+ continue ;
7677+
76717678 zpool_do_events_short (nvl , opts );
76727679
76737680 if (opts -> verbose ) {
@@ -7697,7 +7704,7 @@ zpool_do_events_clear(ev_opts_t *opts)
76977704}
76987705
76997706/*
7700- * zpool events [-vfc ]
7707+ * zpool events [-vHfc] [pool ]
77017708 *
77027709 * Displays events logs by ZFS.
77037710 */
@@ -7732,6 +7739,18 @@ zpool_do_events(int argc, char **argv)
77327739 argc -= optind ;
77337740 argv += optind ;
77347741
7742+ if (argc > 1 ) {
7743+ (void ) fprintf (stderr , gettext ("too many arguments\n" ));
7744+ usage (B_FALSE );
7745+ } else if (argc == 1 ) {
7746+ (void ) strlcpy (opts .poolname , argv [0 ], sizeof (opts .poolname ));
7747+ if (!zfs_name_valid (opts .poolname , ZFS_TYPE_POOL )) {
7748+ (void ) fprintf (stderr ,
7749+ gettext ("invalid pool name '%s'\n" ), opts .poolname );
7750+ usage (B_FALSE );
7751+ }
7752+ }
7753+
77357754 if (opts .clear )
77367755 ret = zpool_do_events_clear (& opts );
77377756 else
0 commit comments