lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 14 Nov 2006 08:56:49 +0100 From: Jens Axboe <jens.axboe@...cle.com> To: Pierre Ossman <drzeus-list@...eus.cx> Cc: LKML <linux-kernel@...r.kernel.org> Subject: Re: How to cleanly shut down a block device On Tue, Nov 14 2006, Pierre Ossman wrote: > Hi Jens, > > I've been trying to sort out some bugs in the MMC layer's block driver, > but my knowledge about the block layer is severely lacking. So I was > hoping you could educate me a bit. :) > > Upon creation, the following happens: > > alloc_disk() > spin_lock_init() > blk_init_queue() > blk_queue_*() (Set up limits) > disk->* = * (assign members) > blk_queue_hardsect_size() > set_capacity() > add_disk() > > And on a clean removal, where there are no users of a card when it is > removed: > > del_gendisk() > put_disk() > blk_cleanup_queue() > > So far everything seems nice and peachy. The question is what to do when > a card is removed when the device is open. > > In that case, del_gendisk() will be called, which seems to be documented > as blocking any new requests to be added to the queue. But there will be > a lot of outstanding requests in the queue. > > Is it up to each block device to iterate and fail these or can I tell > the kernel "I'm broken, go away!"? > > When the queue eventually drains (without too many oopses) and the user > calls close(), then put_disk() and blk_cleanup_queue() will be called. There is no helper to kill already queued requests when a device is removed, if you look at SCSI you'll see that it handles this "manually" as well in the request_fn handler. So you'll need a "device dead or gone" check in your request_fn handler, and do it from there. -- Jens Axboe - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists