net: phy: dp83848: add dp83822 PHY support
[cascardo/linux.git] / block / blk-mq-sysfs.c
index fe822aa..01fb455 100644 (file)
@@ -176,7 +176,17 @@ static ssize_t blk_mq_sysfs_rq_list_show(struct blk_mq_ctx *ctx, char *page)
 
 static ssize_t blk_mq_hw_sysfs_poll_show(struct blk_mq_hw_ctx *hctx, char *page)
 {
-       return sprintf(page, "invoked=%lu, success=%lu\n", hctx->poll_invoked, hctx->poll_success);
+       return sprintf(page, "considered=%lu, invoked=%lu, success=%lu\n",
+                      hctx->poll_considered, hctx->poll_invoked,
+                      hctx->poll_success);
+}
+
+static ssize_t blk_mq_hw_sysfs_poll_store(struct blk_mq_hw_ctx *hctx,
+                                         const char *page, size_t size)
+{
+       hctx->poll_considered = hctx->poll_invoked = hctx->poll_success = 0;
+
+       return size;
 }
 
 static ssize_t blk_mq_hw_sysfs_queued_show(struct blk_mq_hw_ctx *hctx,
@@ -198,12 +208,14 @@ static ssize_t blk_mq_hw_sysfs_dispatched_show(struct blk_mq_hw_ctx *hctx,
 
        page += sprintf(page, "%8u\t%lu\n", 0U, hctx->dispatched[0]);
 
-       for (i = 1; i < BLK_MQ_MAX_DISPATCH_ORDER; i++) {
-               unsigned long d = 1U << (i - 1);
+       for (i = 1; i < BLK_MQ_MAX_DISPATCH_ORDER - 1; i++) {
+               unsigned int d = 1U << (i - 1);
 
-               page += sprintf(page, "%8lu\t%lu\n", d, hctx->dispatched[i]);
+               page += sprintf(page, "%8u\t%lu\n", d, hctx->dispatched[i]);
        }
 
+       page += sprintf(page, "%8u+\t%lu\n", 1U << (i - 1),
+                                               hctx->dispatched[i]);
        return page - start_page;
 }
 
@@ -301,8 +313,9 @@ static struct blk_mq_hw_ctx_sysfs_entry blk_mq_hw_sysfs_cpus = {
        .show = blk_mq_hw_sysfs_cpus_show,
 };
 static struct blk_mq_hw_ctx_sysfs_entry blk_mq_hw_sysfs_poll = {
-       .attr = {.name = "io_poll", .mode = S_IRUGO },
+       .attr = {.name = "io_poll", .mode = S_IWUSR | S_IRUGO },
        .show = blk_mq_hw_sysfs_poll_show,
+       .store = blk_mq_hw_sysfs_poll_store,
 };
 
 static struct attribute *default_hw_ctx_attrs[] = {
@@ -380,9 +393,8 @@ static int blk_mq_register_hctx(struct blk_mq_hw_ctx *hctx)
        return ret;
 }
 
-static void __blk_mq_unregister_disk(struct gendisk *disk)
+static void __blk_mq_unregister_dev(struct device *dev, struct request_queue *q)
 {
-       struct request_queue *q = disk->queue;
        struct blk_mq_hw_ctx *hctx;
        struct blk_mq_ctx *ctx;
        int i, j;
@@ -400,15 +412,15 @@ static void __blk_mq_unregister_disk(struct gendisk *disk)
        kobject_del(&q->mq_kobj);
        kobject_put(&q->mq_kobj);
 
-       kobject_put(&disk_to_dev(disk)->kobj);
+       kobject_put(&dev->kobj);
 
        q->mq_sysfs_init_done = false;
 }
 
-void blk_mq_unregister_disk(struct gendisk *disk)
+void blk_mq_unregister_dev(struct device *dev, struct request_queue *q)
 {
        blk_mq_disable_hotplug();
-       __blk_mq_unregister_disk(disk);
+       __blk_mq_unregister_dev(dev, q);
        blk_mq_enable_hotplug();
 }
 
@@ -430,10 +442,8 @@ static void blk_mq_sysfs_init(struct request_queue *q)
        }
 }
 
-int blk_mq_register_disk(struct gendisk *disk)
+int blk_mq_register_dev(struct device *dev, struct request_queue *q)
 {
-       struct device *dev = disk_to_dev(disk);
-       struct request_queue *q = disk->queue;
        struct blk_mq_hw_ctx *hctx;
        int ret, i;
 
@@ -454,7 +464,7 @@ int blk_mq_register_disk(struct gendisk *disk)
        }
 
        if (ret)
-               __blk_mq_unregister_disk(disk);
+               __blk_mq_unregister_dev(dev, q);
        else
                q->mq_sysfs_init_done = true;
 out:
@@ -462,7 +472,7 @@ out:
 
        return ret;
 }
-EXPORT_SYMBOL_GPL(blk_mq_register_disk);
+EXPORT_SYMBOL_GPL(blk_mq_register_dev);
 
 void blk_mq_sysfs_unregister(struct request_queue *q)
 {