Does sd card driver support the processing of single request (bio) or the queue
I am writing a simple file system for SD card (quite ambitious for a beginner of kernel programming). Since I am dealing with flash memory, I don't want the block layer to reorganize the ordering of my r/w request to block device driver.
I read "Understanding Linux Kernel" and "Linux Device Driver" for related information. They mentioned that the block device driver can support the direct processing of bio (instead of request_queue_t) by providing the function of type "typedef int (make_request_fn) (request_queue_t *q, struct bio *bio);")
According to my understanding, a block device driver can choose to support the processing of either request_queue_t or bio. But cannot support both. On the other hand, when my file system module issues a request for r/w, it has no idea and it cannot control whether its request will be put into the queue by the block layer. Is my understanding correct?
Here comes my question. Nowadays, Linux supports SD card quite well. How can I know whether the corresponding device driver supports the process of request_queue_t or just a bio. Must I look at the code of the sd card device driver? If I must, where does the driver locate in the kernel source tree. Thanks.
|