Skip to content

Commit

Permalink
block: don't show io_timeout if driver has no timeout handler
Browse files Browse the repository at this point in the history
If the low level driver has no timeout handler, the
/sys/block/<disk>/queue/io_timeout will not be displayed.

Reviewed-by: Bart Van Assche <[email protected]>
Signed-off-by: Weiping Zhang <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
  • Loading branch information
Weiping Zhang authored and axboe committed Apr 22, 2019
1 parent f9f7687 commit 4d25339
Showing 1 changed file with 28 additions and 2 deletions.
30 changes: 28 additions & 2 deletions block/blk-sysfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -728,7 +728,7 @@ static struct queue_sysfs_entry throtl_sample_time_entry = {
};
#endif

static struct attribute *default_attrs[] = {
static struct attribute *queue_attrs[] = {
&queue_requests_entry.attr,
&queue_ra_entry.attr,
&queue_max_hw_sectors_entry.attr,
Expand Down Expand Up @@ -770,6 +770,25 @@ static struct attribute *default_attrs[] = {
NULL,
};

static umode_t queue_attr_visible(struct kobject *kobj, struct attribute *attr,
int n)
{
struct request_queue *q =
container_of(kobj, struct request_queue, kobj);

if (attr == &queue_io_timeout_entry.attr &&
(!q->mq_ops || !q->mq_ops->timeout))
return 0;

return attr->mode;
}

static struct attribute_group queue_attr_group = {
.attrs = queue_attrs,
.is_visible = queue_attr_visible,
};


#define to_queue(atr) container_of((atr), struct queue_sysfs_entry, attr)

static ssize_t
Expand Down Expand Up @@ -890,7 +909,6 @@ static const struct sysfs_ops queue_sysfs_ops = {

struct kobj_type blk_queue_ktype = {
.sysfs_ops = &queue_sysfs_ops,
.default_attrs = default_attrs,
.release = blk_release_queue,
};

Expand Down Expand Up @@ -939,6 +957,14 @@ int blk_register_queue(struct gendisk *disk)
goto unlock;
}

ret = sysfs_create_group(&q->kobj, &queue_attr_group);
if (ret) {
blk_trace_remove_sysfs(dev);
kobject_del(&q->kobj);
kobject_put(&dev->kobj);
goto unlock;
}

if (queue_is_mq(q)) {
__blk_mq_register_dev(dev, q);
blk_mq_debugfs_register(q);
Expand Down

0 comments on commit 4d25339

Please sign in to comment.