Block device driver: how to terminate the block device if media disappears?

Ezequiel Garcia elezegarcia at
Sat Jan 12 12:39:40 EST 2013

On Mon, Jan 7, 2013 at 7:49 AM, John Beard <johnb at> wrote:
> On 21/12/12 18:23, Ezequiel Garcia wrote:
>> On Thu, Dec 13, 2012 at 12:31 PM, John Beard <johnb at> wrote:
>>> What is the right way to terminate requests and delete the gendisk in
>>> the case of physically vanished PCI devices (or even devices in general)?
>> There are several block driver examples in drivers/block.
>> Or you might want to take a loot at mtdblock.c, or perhaps
>> this simple ubiblock implementation:
> Thanks, Ezequiel - sorry for the delay, I haven't had a chance to touch
> my development computer over the break. The workqueue-based approach
> from ubiblock.c seems to have solved the problem and the device can now
> shut down happily once the request queue is emptied in the submit_req
> call following device removal.

Great! It's nice to hear the hint helped you.

FYI, a workqueue should always be preferred over a separate kernel thread,
unless there is a good reason for the kernel thread.


More information about the Kernelnewbies mailing list