bio-16 - Small rd typos (me) - Overhaul bio/bio_vec/bio_vec_list design. Now allow multi-page bios (me) - Add bool return to bi_end_io to indicate done or not - Add BIO_PREBUILT flag to indicate when low level drivers may want to re-calculate number of segments etc. - Make bio_clone work - Add bio_copy - Drop BIO_HASHED, just check pprev_hash pointer instead (me) - Add nr_sectors to various end I/O types to avoid looping over many function calls to end I/O (me) - Drop complete() changes, can push those later (me) - Kludge around O_DIRECT for now, until kio->blocks issue is resolved (me) - Change can_dma_32 to highmem_io as per block-highmem-all (me) - Merge block-highmem-all nohighio boot parameter (me) bio-15b (15/11/2001) - Fix cpqarray + cciss dequeue (me) - Fix bi_hash_desc race in elevator (me) - LVM merges (me) - Add blk_rq_map_sg for mapping a struct request to scatterlist. (me) - Fixup sym2 for io_request_lock usage (me) - ext2 get_block sector_t fixes (me) - Extra slab debugging (Manfred Spraul) bio-15a (08/11/2001) - Fix raw I/O oops, bio not removed from hash at bi_end_io time (me) - Reinstate bio hash profiling, can still be disabled with define. note that hdev.c needs to be upgraded. (me) - Size bio hash down by factor 4 (me) - Fix BIO_HASHED / hash_lock SMP race in __bio_hash_remove (me) - Fix bi_req hash race (me) - Add amd74xx ata-100 pieces (from Andre) - Fix next->biotail missing hash removal on request merges (me) - Add bio_clone. Similar in spirit to skb clone in that a private bio is returned but the data it points to is not owned by the clone just shared (me) - Fix loop bio lookup (me) - Finally completely remove queue head active stuff. elv_next_request now marks a request as active, and the I/O scheduler then ignores it from then on (me) - Missing *req assignment in elevator_noop on merges (me) - Remove blk_wake_queue logic, it was part broken anyway. Will resurrect properly later (me) - At least make sure hash stats don't obviously race, even if it's not that pretty nor completely perfect (me) bio-15 (05/11/2001) - Fix blk_queue_empty (elv_queue_empty callback) (me) - Change blk_queue_bounce to take **bio (me) - Remove blk_set/unset_plugged/unplugged, do this manully from ll_rw_blk, not meant to be exported anyway (me) - loose ide sg_dma_active (wasn't used anyway) (me) - Convert ide-floppy to bio (me) - Convert lvm to bio (me) - Start md conversion to bio (me) - Fix ide-dma highmem I/O enable error, be more restrictive (and correct..) (me) - Ditto fix for SCSI (me) - Remove forgotten bh->b_bio (me) - Merge prefetch changes (drop list changes for now, fixup bio.c) (me) - Merge 2.4.10-preX hell (me) - make gendisk_head static, noone should touch it (Christoph) - uninline aeb's secort accesor funcs and have them in genhd.c (Christoph) - properly move get_partition_list in bio too (Christoph) - nuke blk_gendisk, we want't a non-linear search access method in get_gendisk soon, but not another per-major array. (Christoph) - fix megaraid virt_to_bus on pci_alloc_persistent (boggle) (Arjan) - fix megaraid io locking (me) - More merge error fixes (Christoph) - fix bio_rw not returning r/w ahead correctly (me) - Convert ide-scsi (me) - Fix requests merge bio hash issues, could cause corruption (me) - Fix ll_rw_blk merge using bio_size not bio_sectors, effectively preventing any merges. This was the reason for the lower performance recently. (me) - submit_bio + submit_bh now returns queued status for rw-ahead (me) - Fix bi_end_io not always holding queue lock, add BIO_HASHED flag to fix these races (me) - Change per-queue hash to global bio hash and use per hash chain locking. (me) - Add bi_rw for READ/WRITE and barrier info, instead of using part of bi_flags for that. Want to use top of bi_rw for priority info in the future (me) - Add barrier requests to back of queue (me/suparna) - Remove BIO_POOL flag, pre-alloc BIO_POOL_SIZE from slab and use counter to put back in pool / slab free. (me) - Rearrange add/remove logic for bio (me) - Properly delete bio front and tail on request merges (me) bio-14 (07/09/2001) - Add reference count to bio - bio_free is now bio_put - last put frees bio - Document exported stuff in fs/bio.c - Fix oops in bio_alloc if failing GFP_ mask was specified and alloc failed - not hit in current tree (all users currenly using __GFP_WAIT) - Only print highmem info when highmem is actually enabled - Merge my max_sectors SCSI patch - If not set by host adapter, default to 512kB - Added qlogicfc can_dma32 flag - Tested by Mark Hemment (not the stock driver though) - Make modular IDE/SCSI work, spotted by Arjan van de Ven - export kmap_prot and kmap_pte - export blk_queue_max_sectors, blk_queue_hardsect_size - Check for req->special in attempt_merge, SCSI may use this for a requeued rq - reported by Mark Hemment - Fix SCSI __scsi_end_request handling - not decrementing hard_*, use ll_rw_blk end_that_request_first helper - Change ELEVATOR_LINUS to do hash lookups for possible merges - queue scan remains as insertion mechanism - hash table has valid index counter, for hash defeat on barrier writes and to do lazy invalid entry removal - generalize insert and deletion - loose struct request ->table - Ditto for ELEVATOR_NOOP -- it's now truly O(1) for all operations (for good hash distributions of course) - Merge partion-remapping patch from Andries, necessary for the hash stuff - Merge prefetch/spin_lock_prefetch stuff from -ac tree for testing - Remove io_request_lock. The following things are now fully CPU threaded and safe (hopefully): - IDE - SCSI - I2O - cpqarray, cciss - DAC960 - misc stuff (floppy etc) - Start to make the elevator setup completely modular - Merge the new PCI64 stuff - Add hash profiling for test purposes (see hdev.c) - Backport fixes from 2.4-nobounce tree: - atomic bio_kmap_irq reentrancy fixes - BLK_BOUNCE_* tests and values - max_pfn (only i386 works for now) - bio_to_bus -> bio_to_phys name change - 0 is valid phys address, change lastdataend for various drivers - Loose RQ_IDE_MAPPED again - bio_put -> __bio_put name change bio-13 (28/05/2001) - Merge 2.4.5 - bio bounce alloc was already deadlock safe - Merge page deadlock avoidance - Fix no-highmem compile problem - __GFP_DMA32 not defined - Remove decrement of elevator_sequence for front merge - will not incur a seek, so don't account it as an expense - Introduce pci_map_sgl - struct sg_list replaces struct scatterlist - IDE converted to this new api - Auto-align atomic unmaps, so the driver doesn't have to keep track of offset - Add blk_max_low_pfn and assign at boot, export for drivers - Change IDE to fall back to low mem I/O when DMA disabled, and vice versa - Change SCSI to set highmem only when initializing merge functions and only for disks - Inform about bounce settings for IDE and SCSI drives - Rewrite SCSI single-segment fall back mapping case - remove traces of SCpnt->buf_mapped - always map on-the-fly - Make bio_kunmap_irq aligning nicer - Implement sg_bio_sg - easier conversion of old-style drivers - Add IDE segment coalescing - Set max_segments to PRD_ENTRIES - replace sanity checks for that with BUG() - Update lastdataend on cpqarray and cciss - Fix nbd and rd compile - By coincidence, ide dma timeout fixes - general kernel, not a bio introduced bug bio-12 (25/05/2001) - Define highmem bounce flags - BLK_BOUNCE_HIGH - bounce for all highmem pages - BLK_BOUNCE_4G - bounce pages above 4GB - Added mm zone for pages above low mem, but below 4GB - __GFP_DMA32 mask - Add queue gfp_mask, set by blk_queue_bounce_limit - Set to GFP_BUFFER for old-style bounce - Set to GFP_BUFFER | __GFP_DMA32 for highmem capable queues - Always kmap_atomic to/from in the bounce copies - With __GFP_DMA32 bounce, both pages may be in high memory - Merge 2.4.5-pre6 - Fix cciss lastdataend bug - Fix IDE PIO mapping bugs - Add SCSI highmem support. Be careful!! - aic7xxx seems to work ok - sym53c8xx seems to work ok - Not currently enabled for other SCSI drivers - Remove some debug messages bio-11 (24/05/2001) - Really fix low mem bounce - forget to pass on BIO_UPTODATE flag - Used bi_flags & WRITE (not BIO_WRITE), duh! - Small IDE pio ide_map fixes - Fix off-by-one in ide-probe when setting 31-bit limit - Fix BIO_RW_MASK and flag passing in create_bounce - Add highmem hw interface flag to IDE - Enable for piix, promise, and hpt bio-10 (23/05/2001) - Fix blk_queue_bounce_limit so it doesn't overflow for > 32-bit - Fix BIO_RW_MASK to not include BIO_UPTODATE - Fix page->phys translation for the _single_page functions - Add read or write validity check - Set BIO_RW_BLOCK for max-queued end_io too - Fix bounce_limit, it was wrong after the change to bus address - Fix low mem bio bounce in general - Since kunmap_atomic takes the virt address, change ide_map_buffer accordingly - Erradicate 64-bit pci dma stuff... - and rename pci_map_single_page to pci_map_page, ditto for unmap bio-9 (23/05/2001) - Move the 'max queued I/O check' and abort early on rw-ahead for these - Merge 2.4.5-pre5 - More hardsect_size remnants - Make make_request_fn take just a bio, the read/write is implicit - Change blk_queue_bounce_limit to take bus address as limit, not page - Add bio_kmap/bio_kunmap and bio_kmap_irq/bio_kunmap_irq - scatterlist changes: - Include page, dma_addr_t, and offset - change pci_map_* to setup dma_address field for page sg - IDE can do I/O on highmem directly now! - Only enabled on ide-disk - Small ide_build_sglist changes to accomodate above pci_map stuff - ide_map_buffer/ide_unmap_buffer for PIO transfers - Update cpqarray and cciss to do highmem I/O - cpqarray has 32-bit dma limitation - cciss can do 64-bit dma, but it's limited to 4gb as well for now bio-8 - bio_endio and bio_io_error helper macros - rd, nbd, and DAC960 converted - fixed loop - Renamed struct request queue member to queuelist, no driver should touch it directly. blkdev_dequeue_request _must_ be used or the elevator last_merge could be corrupted. This should catch drivers doing list_del themselves. - Add bio_pool - Move hardsect_size array to queue too - Fix raw i/o sector problem