Increasing total data size per file system request for block drivers

Hi All,

I am writing a block driver for a 2GB SD card where i get the total amount of data per request as follows:

struct request *req;
uint card_addr,total_bytes;
struct request_queue *rq = BlkDev->queue;
 
req = elv_next_request(rq);
..
..
card_addr = req->sector*512;
total_bytes = req->current_nr_sectors*512;
 

Here, the total_bytes i.e the amount of data per request sent/received by file system is always <= 4KB.Hence it affects the card's read/write performance for large file size as the process needs to be repeated for every 4KB.

Is it like, the linux file system block size is limited to 4KB?
Is there any way to increase the transfer size per request?

Thanks in advance.
-amio

statvfs() or fstatvfs() will tell you block size for a given filesystem/file descriptor. There is no way to change it that I am aware of.