Re: [BUG] + possible [PATCH]. blkdev_issue_flush is a NOOP for request based drivers

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

 



Hello, Alex.

I'm confused (as usual).

On Thu, May 26, 2011 at 12:00:36PM +0100, Alex Bligh wrote:
> blkdev_issue_flush appears to be a NOOP for request-based srivers, because

Ummm... request based drivers have __make_request as its
->make_request_fn() which is set during queue allocation.

> it returns -ENXIO if no make_request_function is present. AIUI only bio
> based drivers have a make_request_function. The preceding comment suggests
> this is an attempt to avoid making a request to bio based drivers before
> their queue is set up.

If you look at the original commit which added the condition,

commit f10d9f617a65905c556c3b37c9b9646ae7d04ed7
Author: Dave Chinner <dchinner@xxxxxxxxxx>
Date:   Tue Jul 13 17:50:50 2010 +1000

    blkdev: check for valid request queue before issuing flush

    Issuing a blkdev_issue_flush() on an unconfigured loop device causes a panic as
    q->make_request_fn is not configured. This can occur when trying to mount the
    unconfigured loop device as an XFS filesystem. There are no guards that catch
    the bio before the request function is called because we don't add a payload to
    the bio. Instead, manually check this case as soon as we have a pointer to the
    queue to flush.

    Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
    Signed-off-by: Jens Axboe <jaxboe@xxxxxxxxxxxx>
				    
It was added to work around uniitialized queue from loop device.  I
think this is the wrong place to check for this tho.  We should have
made loop to always initialize queue and use placeholder
make_request_fn for inactive devices.

> This should not exclude request based drivers from
> getting any flushes. Instead therefore check for EITHER
> make_request_function OR request_function and queue flags. The check for
> queue flags may be unnecessary as the block layer may simply not send the
> flush on.

Have you tested the code actually works as you expect it to?  Before
and after?

Thanks.

-- 
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux