> The question is How does the request method of a Block Device > driver get called. The reqest method is not in blocked state, > bcoz then we would be busy waiting in the Kernel which we dont want. So > when requests for a particular device how is the request method invoked > (ie, using signals etc etc) > The answer lies in the "unplug" methods in linux/drivers/block/ll_rw_blk.c > but havent been able to figure that one out. > > To be specific my question is how is " Then any subsequent requests are > routed to your routines directly using the > requests" There is a description of the "Scheduling the activation of the strategy routine" ( (*request_fn)() ) in pg 407 of Understanding the Linux Kernel (O'Reilly) albeit 2.2 kernel Briefly a VHL description: ll_rw_block() ---> make_request() make_request puts plug_tq task queue descriptor (in blk_dev_struct) into tq_disk task queue. plug_tq refers to unplug_device() which starts the strategy routines. kernel periodically checks whether there are any elements in the tq_disk task queue. Regards, Sourav _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ IRC Channel: irc.openprojects.net / #kernelnewbies Web Page: http://www.kernelnewbies.org/