Writing block device drivers

Hi,
I was made to understan that the block device drivers are loaded over io_blk
functions. I need to write a block device driver, can anyone out there give
me pointers how and where I can start from ?