首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么bdev_get_queue返回NULL?

为什么bdev_get_queue返回NULL?
EN

Stack Overflow用户
提问于 2017-12-22 15:11:00
回答 1查看 231关注 0票数 1

我为块设备(Linux,Ubuntu 16)开发了一个“过滤器”,在过滤器驱动程序的初始化过程中,我尝试使用用于后端的queue指针(存在设备),这是一个很酷的注释,它显示了一个很酷的注释"this“,但是对于structblock_devicebd_disk字段,我使用了NULL。

我还需要另外检查什么?

代码语言:javascript
复制
static int __init dua_init(void)
{
    int status;
    struct request_queue *backend_queue = NULL;
    struct super_block *sb = NULL;

    printk(KERN_NOTICE __MODULE__ ": Initialize the driver ...\n");

    if ( IS_ERR(backend_bdev = lookup_bdev(dudrv_bckend, FMODE_READ)) )
        {
        status = PTR_ERR(backend_bdev);
        printk(KERN_ERR __MODULE__ ": lookup_bdev(%s) -> %d\n", dudrv_bckend, status);
        return  status;
        }

    $DELAY(1);

    if ( sb = freeze_bdev(backend_bdev) )
        $TRACE(": freeze I/O on block device %s ...", dudrv_bckend);

    $DELAY(1);

    $TRACE(" %p ", backend_bdev->bd_disk);

    $DELAY(1);

    backend_queue = bdev_get_queue(backend_bdev);

    $TRACE(" -- ");

    $DELAY(1);

    if ( backend_make_request_fn != backend_queue->make_request_fn )
        {
        backend_make_request_fn = backend_queue->make_request_fn;
        backend_queue->make_request_fn = dua_make_request_fn;

        $TRACE(": Change for %s request_fn = %p -> %p, ", dudrv_bckend, backend_make_request_fn, backend_queue->make_request_fn);
        }
    else    {
        printk(KERN_NOTICE __MODULE__ ": I/O request process has been set.\n");
        }

    $TRACE(" -- ");

    /* unlock filesystem */
    $DELAY(1);
    if ( sb )
        if (status = thaw_bdev(backend_bdev, sb))
            printk(KERN_NOTICE __MODULE__ ": thaw_bdev() -> %d\n", status);

    printk(KERN_NOTICE __MODULE__ ": End the driver initialization.\n");

    return 0;
}

bdev_get_queue和struct block_device.__bd_queue应该返回队列的指针之间的区别是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-22 11:19:51

lookup_bdev()不创建完整的块I/O上下文。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47945196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档