mfi(4): Add device statistics.
authorSascha Wildner <saw@online.de>
Wed, 1 Dec 2010 01:28:24 +0000 (02:28 +0100)
committerSascha Wildner <saw@online.de>
Wed, 1 Dec 2010 01:28:24 +0000 (02:28 +0100)
sys/dev/raid/mfi/mfi_disk.c
sys/dev/raid/mfi/mfivar.h

index dc57aab..124a786 100644 (file)
@@ -139,6 +139,11 @@ mfi_disk_attach(device_t dev)
                      ld_info->ld_config.properties.name,
                      state);
 
+       devstat_add_entry(&sc->ld_devstat, "mfid", device_get_unit(dev),
+           MFI_SECTOR_LEN, DEVSTAT_NO_ORDERED_TAGS,
+           DEVSTAT_TYPE_STORARRAY | DEVSTAT_TYPE_IF_OTHER,
+           DEVSTAT_PRIORITY_ARRAY);
+
        sc->ld_disk.d_cdev = disk_create(sc->ld_unit, &sc->ld_disk,
            &mfi_disk_ops);
        sc->ld_disk.d_cdev->si_drv1 = sc;
@@ -180,6 +185,7 @@ mfi_disk_detach(device_t dev)
        lockmgr(&sc->ld_controller->mfi_io_lock, LK_RELEASE);
 
        disk_destroy(&sc->ld_disk);
+       devstat_remove_entry(&sc->ld_devstat);
        lockmgr(&sc->ld_controller->mfi_io_lock, LK_EXCLUSIVE);
        TAILQ_REMOVE(&sc->ld_controller->mfi_ld_tqh, sc, ld_link);
        lockmgr(&sc->ld_controller->mfi_io_lock, LK_RELEASE);
@@ -279,6 +285,7 @@ mfi_disk_strategy(struct dev_strategy_args *ap)
        bio->bio_driver_info = sc;
        lockmgr(&controller->mfi_io_lock, LK_EXCLUSIVE);
        mfi_enqueue_bio(controller, bio);
+       devstat_start_transaction(&sc->ld_devstat);
        mfi_startio(controller);
        lockmgr(&controller->mfi_io_lock, LK_RELEASE);
        return (0);
@@ -290,6 +297,7 @@ mfi_disk_complete(struct bio *bio)
        struct mfi_disk *sc = bio->bio_driver_info;
        struct buf *bp = bio->bio_buf;
 
+       devstat_end_transaction_buf(&sc->ld_devstat, bp);
        if (bp->b_flags & B_ERROR) {
                if (bp->b_error == 0)
                        bp->b_error = EIO;
index ae0bc0a..99eca53 100644 (file)
@@ -55,6 +55,7 @@
 #ifndef _MFIVAR_H
 #define _MFIVAR_H
 
+#include <sys/devicestat.h>
 #include <sys/disk.h>
 #include <sys/eventhandler.h>
 #include <sys/lock.h>
@@ -115,6 +116,7 @@ struct mfi_disk {
        struct mfi_softc *ld_controller;
        struct mfi_ld_info      *ld_info;
        struct disk     ld_disk;
+       struct devstat  ld_devstat;
        int             ld_flags;
 #define MFI_DISK_FLAGS_OPEN    0x01
 #define        MFI_DISK_FLAGS_DISABLED 0x02