An error occurred fetching the project authors.
- 28 Oct, 2002 3 commits
-
-
Jens Axboe authored
Cleanup the last_merge logic. There are two reasons for clearing last_merge when we are dealing with integrity, and these are: o Clear when handing the request to the driver, so we don't merge on a started request. o Clear when a request is taken off the list. This cannot be done from the driver (above case would already have been hit), but it can happen when we merge two requests. This makes it a lot nicer, it was always peculiar how we cleared in put_request.
-
Jens Axboe authored
Extend q->prep_rq_fn() to return one of three values: o BLKPREP_OK: request is good, return it o BLKPREP_KILL: request is bad, end it completely o BLKPREP_DEFER: request is good, but we can't take it now We maintain compatability with old prep functions (if any, outside of ide-cd). This change is needed or SCSI to use prep function for command init, if sg table allocation fails we can just defer the request.
-
Jens Axboe authored
Request insertion in the current tree is a mess. We have all sorts of variants of *elv_add_request*, and it's not at all clear who does what and with what locks (or not). This patch cleans it up to be: o __elv_add_request(queue, request, at_end, plug) Core function, requires queue lock to be held o elv_add_request(queue, request, at_end, plug) Like __elv_add_request(), but grabs queue lock o __elv_add_request_pos(queue, request, position) Insert request at a given location, lock must be held
-
- 04 Oct, 2002 1 commit
-
-
Jens Axboe authored
Ingo spotted this one too, it's a leftover from when the elevator type wasn't a variable. Also don't pass in &q->elevator, it can always be deduced from queue itself of course.
-
- 27 Sep, 2002 1 commit
-
-
Jens Axboe authored
This fixes a problem with the deadline io scheduler, if the correct insertion point is at the front of the list. This is something that we never have gotten right in 2.4 either. The problem is that the elevator merge function has to return a pointer to a struct request, and for front insert we really have to return the head of the list which cannot be expressed as a request of course. The real issue is that the elevator_merge function actually performs two functions - it scans for a merge, and if it can't find any, it selects and insertion point. It's done this way for efficiency reasons, even if the design isn't all that clean. So we change the io scheduler merge functions to get passed a pointer to a list_head pointer instead. This works for both inserts and merges. In addition, deadline checks if it really should insert at the very front. Also don't pass in request to elv_try_last_merge(), the very name of the function suggests that it's q->last_merge that we are interested in.
-
- 26 Sep, 2002 1 commit
-
-
Jens Axboe authored
Some various small cleanups, optimizations, and fixes. o Make fifo_batch=32 as default, from testing this appears a good default value. We still get good throughput, and latency is good. o Reintroduce the merge_cleanup logic. We need it for deadline for rehashing requests when they have been merged. o Cleanup last_merge logic. Move it to the new elv_merged_request(), this is where it really belongs. Doing it inside the io scheduler core can causes false positives, when the queue merge functions reject an otherwise good merge o Have deadline_move_requests() account from last entry on the dispatch queue, if it is non-empty. It doesn't really matter what the last extracted sector was, if we are not right behind it. o Clean/optimize deadline_move_requests() o Account size of a request just a little bit. Streaming transfer isn't for free, it's just a lot cheaper than a seek. o Make deadline_check_fifo() more readable.
-
- 25 Sep, 2002 1 commit
-
-
Jens Axboe authored
Patch killing off elevator_linus for good. Sniffle.
-
- 24 Sep, 2002 1 commit
-
-
Linus Torvalds authored
This is needed for reasonable read latency with the new VM behaviour. NOTE! This is way too unfair, Andrew and Jens are working on alternatives.
-
- 16 Sep, 2002 1 commit
-
-
Jens Axboe authored
elevator_linus is seriously broken wrt accounting. Marcelo recently took the patch to fix it in 2.4.20-pre, here's the 2.5 equiv. Right now, we account merges as costly and seeks as not. Only thing that prevents seek starvation is the aging scan. That is broken, very much so. This patch fixes that to account merges and inserts differently. A seek is ELV_LINUS_SEEK_COST more costly than a merge, currently that define is at '16'. Doing the math on a disk, this sort of makes sense. Defaults are read latency of 1024, which means 1024 merges or 64 seeks. Writes are double that.
-
- 10 Aug, 2002 1 commit
-
-
Jens Axboe authored
Forgot to export it to modules :/
-
- 01 Aug, 2002 1 commit
-
-
Jens Axboe authored
I've got a new i/o scheduler in testing, some changes where needed in the block layer to accomodate it. Basically because right now assumptions are made about q->queue_head being the sort list. The changes in detail: o elevator_merge_requests_fn takes queue argument as well o __make_request() inits insert_here to NULL instead of q->queue_head.prev, which means that the i/o schedulers must explicitly check for this condition now. o incorporate elv_queue_empty(), it was just a place holder before o add elv_get_sort_head(). it returns the sort head of the elevator for a given request. attempt_{back,front}_merge uses it to determine whether a request is valid or not. Maybe attempt_{back,front}_merge should just be killed, I doubt they have much relevance with the wake up batching. o call the merge_cleanup functions of the elevator _after_ the merge has been done, not before. This way the elevator functions get the new state of the request, which is the most interesting. o Kill extra nr_sectors check in ll_merge_requests_fn() o bi->bi_bdev is always set in __make_request(), so kill check.
-
- 20 Jun, 2002 1 commit
-
-
Jens Axboe authored
Uninline elv_next_request() and move it to elevator.c, where it belongs. Because of CURRENT declaration, this actually saves lots of space. From Andrew.
-
- 18 Jun, 2002 2 commits
-
-
Martin Schwidefsky authored
The dasd driver as a module needs to call elevator_init/elavator_exit to change the elevator algorithm to elevator_noop.
-
Andrew Morton authored
highmem.h includes bio.h, so just about every compilation unit in the kernel gets to process bio.h. The patch moves the BIO-related functions out of highmem.h and into bio-related headers. The nested include is removed and all files which need to include bio.h now do so.
-
- 25 Apr, 2002 1 commit
-
-
Alexander Viro authored
- *NOW* all places that (re)assign ->bi_dev have relevant struct block_device *. ->bi_bdev (struct block_device * equivalent of ->bi_dev) introduced, ->bi_dev removed, users updated.
-
- 05 Apr, 2002 1 commit
-
-
Jens Axboe authored
Lets just kill this check -- it usually only catches drivers queueing something in front of a started request on their own (such as shoving a request sense in front of a failed packet command, for instance). So it's either working around this detection in some drivers, or killing it. I vote for the latter, patch attached against 2.5.8-pre1 :-)
-
- 05 Feb, 2002 16 commits
-
-
Linus Torvalds authored
- Matt Domsch: combine common crc32 library - Pete Zaitcev: ymfpci update - Davide Libenzi: scheduler improvements - Al Viro: almost there: "struct block_device *" everywhere - Richard Gooch: devfs cpqarray update, race fix - Rusty Russell: PATH_MAX should include the final '0' count - David Miller: various random updates (mainly net and sparc)
-
Linus Torvalds authored
- Jeff Garzik: fix up loop and md for struct kdev_t typechecking - Jeff Garzik: improved old-tulip network driver - Arnaldo: more scsi driver bio updates - Kai Germaschewski: ISDN updates - various: kdev_t updates
-
Linus Torvalds authored
- Davide Libenzi: nicer timeslices for scheduler - Arnaldo: wd7000 scsi driver cleanups and bio update - Greg KH: USB update (including initial 2.0 support) - me: strict typechecking on "kdev_t"
-
Linus Torvalds authored
- Jens Axboe: more bio updates, fix some request list bogosity under load - Al Viro: export seq_xxx functions - Manfred Spraul: include file cleanups, pc110pad compile fix - David Woodhouse: fix JFFS2 write error handling - Dave Jones: start merging up with 2.4.x patches - Manfred Spraul: coredump fixes, FS event counter cleanups - me: fix SCSI CD-ROM sectorsize BIO breakage
-
Linus Torvalds authored
- Christoph Hellwig: scsi_register_module cleanup - Mikael Pettersson: apic.c LVTERR fixes - Russell King: ARM update (including bio update for icside) - Jens Axboe: more bio updates - Al Viro: make ready to switch bread away from kdev_t.. - Davide Libenzi: scheduler cleanups - Anders Gustafsson: LVM fixes for bio - Richard Gooch: devfs update
-
Linus Torvalds authored
- me: revert the "kill(-1..)" change. POSIX isn't that clear on the issue anyway, and the new behaviour breaks things. - Jens Axboe: more bio updates - Al Viro: rd_load cleanups. hpfs mount fix, mount cleanups - Ingo Molnar: more raid updates - Jakub Jelinek: fix Linux/x86 confusion about arg passing of "save_v86_state" and "do_signal" - Trond Myklebust: fix NFS client race conditions
-
Linus Torvalds authored
- Jens Axboe: more bio fixes/cleanups/breakage ;) - Al Viro: superblock cleanups, boot/root mounting.
-
Linus Torvalds authored
- Jens Axboe: more bio stuff - Coda compile fixes - Nathan Laredo: stradis driver update
-
Linus Torvalds authored
- Jens Axboe: fix up bio highmem breakage, more cleanups - Greg KH: USB update
-
Linus Torvalds authored
- Al Viro: more superblock cleanups - Jens Axboe: more patches for new block IO layer - Christoph Hellwig: get rid of the old, long- deprecated SCSI error handling
-
Linus Torvalds authored
- Greg KH: USB update - Richard Gooch: refcounting for devfs - Jens Axboe: start of new block IO layer
-
Linus Torvalds authored
- Dan Quinlan: cramfs update - Ben Collins: IEEE 1394 update - David Miller: network update (pppoe, routing cache stats), sparc32 update - me: only dump core once per threaded app (first one wins) - me: use new completion handlers for block device requests (same race as with vfork, see -pre7)
-
Linus Torvalds authored
- big S/390x 64-bit merge - typos and license name fixes. doc updates. - more include file cleanups (phase out "malloc.h") - even more elevator corner cases.. When not merging, find the best insertion point. - pmac ide update - network fixes (netif_wake_queue on tx timeout) - USB printer select() fix - NFS client missed initialization, deamon fixed client address check
-
Linus Torvalds authored
- Jens: better ordering of requests when unable to merge - Neil Brown: make md work as a module again (we cannot autodetect in modules, not enough background information) - Neil Brown: raid5 SMP locking cleanups - Neil Brown: nfsd: handle Irix NFS clients named pipe behavior and dentry leak fix - maestro3 shutdown fix - fix dcache hash calculation that could cause bad hashes under certain circumstances (Dean Gaudet) - David Miller: networking and sparc updates - Jeff Garzik: include file cleanups - Andy Grover: ACPI update - Coda-fs error return fixes - rth: alpha Jensen update
-
Linus Torvalds authored
- ppp UP deadlock attack fix
-
Linus Torvalds authored
-