blk_mq_init_sq_queue (deprecated) on 5.13 does not have any effect, why?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,

 I am doing an experiment on kernel 5.13 with raid_blk_init_sq_queue()
which is a deprecated function but this is not a problem for my needs.

* https://elixir.bootlin.com/linux/v5.13/source/block/blk-mq.c#L3074

 My goal is to install a request handler which would have priority to
the bio handler. The target is drivers/md/md.c and in particular the
md_alloc() function:

* https://elixir.bootlin.com/linux/v5.13/source/drivers/md/md.c#L5651

 At line 5714 the blk_alloc_queue() is replaced with raid_blk_init_sq_queue()

- mddev->queue = blk_alloc_queue(NUMA_NO_NODE);
+ mddev->queue = md_blk_init_sq_queue(mddev);

where the md_blk_init_sq_queue() is defined as following

static struct blk_mq_ops mq_ops = {
        .queue_rq = make_request,
};

static int md_blk_init_sq_queue(struct mddev *mddev)
{
        struct blk_mq_tag_set *tag_set;

        tag_set = kmalloc(sizeof(struct blk_mq_tag_set), GFP_KERNEL);
        if(!tag_set)
                return NULL;

        mddev->queue = blk_mq_init_sq_queue(tag_set, &mq_ops, 128,
               BLK_MQ_F_SHOULD_MERGE | BLK_MQ_F_STACKING);
        if (mddev->queue == NULL)
                return NULL;

        blk_queue_logical_block_size(mddev->queue, SECTOR_SIZE);
        mddev->queue->tag_set = tag_set;

        return mddev->queue;
}

 The request handler make_request() is never called and I wonder why.
Could you help me, plase? Thank, R-



[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux