Hi, In linux device drivers 3, block drivers chapter, for block device io tranfers, a function is defined: int sbull_transfer_bio(struct sbull_dev *dev, struct bio *bio) { ... bio_for_each_segment(bvec, bio, i) { ... __bio_kmap_atomic(...); sbull_transfer(...); __bio_kunmap_atomic(...); ... } } Here, the transfer is not done in process context, and sbull_transfer() cannot sleep. How could I implement a sleeping transfer? char drivers can sleep and receive data fetched in an irq context, can I not do this for block drivers? Many thanks, Bahadir -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/