Hello Alan, Hi list-readers! I'd like to suggest a change to ll_rw_blk and blkdev.h in the 2.2-Kernel: rational ----- On mainframe architectures, we're running a large number of disks on a System. Our disk-device-driver (dasd) has a static major number for the first 64 disks and uses dynamicaly allocated ones for the rest. In ll_rw_blk there are static allocated lists (CASE_COALESCE*) for majors that support merging requests (including our static one DASD_MAJOR). For the dynamic allocated majors, our requests do not get clustered which leads to a major performance drop. the patch ------- I added a global int field named blk_merge_rule to blkdev.h, which contains the device driver's rule about merging. I did three definitions for this variable: do not merge (the default), do merge, and merge but not the first request (like for the static majors). The device driver has to set this field for a major it uses and reset it to BLK_MERGE_NEVER when freeing the major. In ll_rw_blk I invented a case, which is taken if there is no static setting for the major. It then processes like set in blk_merge_rule. If the device driver has a static setting for its major, it does'nt have to care about blk_merge_rule. If the device driverhas no static setting and does not set blk_merge_rule, the requests do not get merged (same as before). I attached the patch (sorry, notes messes up white-spaces when embedding stuff), it applies against 2.2.19. (See attached file: dyn_majors.diff) What is your opinion about including it into the standard brach? Why not change all block-dev-drivers so that they set blk_merge_rule and throw out the CASE_COALESCE* stuff and simplify the code again? mit freundlichem Gruß / with kind regards Carsten Otte IBM Deutschland Entwicklung GmbH Linux for 390/zSeries Development - Device Driver Team Phone: +49/07031/16-4076 IBM internal phone: *120-4076 -- We are Linux. Resistance indicates that you're missing the point!