Date: Fri, 08 Jul 2011 21:41:12 +0000 From: oleksandr@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r224060 - soc2011/oleksandr/oleksandr-head/head/sys/kern Message-ID: <20110708214112.528B2106564A@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: oleksandr Date: Fri Jul 8 21:41:12 2011 New Revision: 224060 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=224060 Log: Added new function in devstat for record error Modified: soc2011/oleksandr/oleksandr-head/head/sys/kern/subr_devstat.c Modified: soc2011/oleksandr/oleksandr-head/head/sys/kern/subr_devstat.c ============================================================================== --- soc2011/oleksandr/oleksandr-head/head/sys/kern/subr_devstat.c Fri Jul 8 20:41:12 2011 (r224059) +++ soc2011/oleksandr/oleksandr-head/head/sys/kern/subr_devstat.c Fri Jul 8 21:41:12 2011 (r224060) @@ -201,7 +201,31 @@ devstat_generation++; mtx_unlock(&devstat_mutex); } - +/* + * Search in the devstat desired structure. + */ +struct devstat * +devstat_search(const char *dev_name, u_int32_t unit_number) +{ + struct devstatlist *devstat_head; + struct devstat *dv_error; + mtx_assert(&devstat_mutex, MA_NOTOWNED); + int status_match = 0; + devstat_head = &device_statq; + if (STAILQ_EMPTY(&device_statq)==0) { + STAILQ_FOREACH(dv_error, devstat_head, dev_links) { + if ((strcmp(dev_name,dv_error->device_name)==0)&& + (unit_number==dv_error->unit_number)) { + status_match=1; + break; + } + } + } + if (status_match) { + return (dv_error); + } else + return NULL; +} /* * Record a transaction start. * @@ -340,9 +364,20 @@ devstat_end_transaction(ds, bp->bio_bcount - bp->bio_resid, DEVSTAT_TAG_SIMPLE, flg, NULL, &bp->bio_t0); } - +/* + * Increase indications counter by unit. + */ +void +devstat_add_error(struct devstat *ds, devstat_error_flags error_flag) +{ + if (error_flag==DEVSTAT_ERROR_RETRIABLE) + ds->dev_error.retriable++; + if (error_flag==DEVSTAT_ERROR_NON_RETRIABLE) + ds->dev_error.non_retriable++; +} /* * This is the sysctl handler for the devstat package. The data pushed out + * on the kern.devstat.all sysctl variable consists of the current devstat * generation number, and then an array of devstat structures, one for each * device in the system.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110708214112.528B2106564A>