Okay... this patch against the linux-2.5.72 nbd driver I think will be to a lot more peoples liking. This patch makes NBD work with the new linux 2.5 block layer design. Specifically, it fixes memory corruption that results from module removal and possible memory corruption from sending or receiving disk data from the server. This patch essentially rolls together the changes from two of the last patchlets that I emailed: the fix for module removal & the fix for incorrect struct bio usage. I believe it's wisest to roll these both together into this one patch since they both deal with making NBD work better with the 2.5 linux block layer design and without either of which, it's possible that NBD will corrupt memory. Other changes I'd like to see introduced (like in the earlier jumbo patch) meanwhile are feature enhancements so they can wait. This patch also should address all the very helpful concerns that have been raised so far. Particularly: 1. that the very first submitted NBD patch was broken down [Andrew] 2. that only 1 spinlock is used for all the NBD request_queue structures used [Jens,Al] 3. that kmap() is used in case of highmem pages [Jens] 4. that the allocation of request_queue is dynamic and seperate from other allocated objects [Al] If no one has any problems with this patch, would someone be so kind as to put it into the next distribution?