On Thu, May 18, 2017 at 05:31:32PM +0800, Anand Jain wrote: > You mean at btrfs: write_dev_flush() > OR > block: blkdev_issue_flush() ? > Where I find > q = bdev_get_queue(bdev); > if (!q) > return -ENXIO > isn't needed as anyway generic_make_request_checks() will > check that down below. > Not too sure about the other two checks though. I was looking at your new function, but indeed it seems like the function is mostly copy & pasted from blkdev_issue_flush. The bdev->bd_disk, !bdev_get_queue and q->make_request_fn checks are all things you don't need, any blkdev_issue_flush should not either, although I'll need to look into the weird loop workaround again, which doesn't make much sense to me.