- 13 Dec, 2011 1 commit
-
-
Tejun Heo authored
Let elevators set ->icq_size and ->icq_align in elevator_type and elv_register() and elv_unregister() respectively create and destroy kmem_cache for icq. * elv_register() now can return failure. All callers updated. * icq caches are automatically named "ELVNAME_io_cq". * cfq_slab_setup/kill() are collapsed into cfq_init/exit(). * While at it, minor indentation change for iosched_cfq.elevator_name for consistency. This will help moving icq management to block core. This doesn't introduce any functional change. Signed-off-by:
Tejun Heo <tj@kernel.org> Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
- 02 Jun, 2011 1 commit
-
-
Jeff Moyer authored
Hi, Jens, If you recall, I posted an RFC patch for this back in July of last year: http://lkml.org/lkml/2010/7/13/279 The basic problem is that a process can issue a never-ending stream of async direct I/Os to the same sector on a device, thus starving out other I/O in the system (due to the way the alias handling works in both cfq and deadline). The solution I proposed back then was to start dispatching from the fifo after a certain number of aliases had been dispatched. Vivek asked why we had to treat aliases differently at all, and I never had a good answer. So, I put together a simple patch which allows aliases to be added to the rb tree (it adds them to the right, though that doesn't matter as the order isn't guaranteed anyway). I think this is the preferred solution, as it doesn't break up time slices in CFQ or batches in deadline. I've tested it, and it does solve the starvation issue. Let me know what you think. Cheers, Jeff Signed-off-by:
Jeff Moyer <jmoyer@redhat.com> Signed-off-by:
Jens Axboe <jaxboe@fusionio.com>
-
- 10 Mar, 2011 1 commit
-
-
Jens Axboe authored
Code has been converted over to the new explicit on-stack plugging, and delay users have been converted to use the new API for that. So lets kill off the old plugging along with aops->sync_page(). Signed-off-by:
Jens Axboe <jaxboe@fusionio.com>
-
- 11 May, 2009 1 commit
-
-
Tejun Heo authored
With recent cleanups, there is no place where low level driver directly manipulates request fields. This means that the 'hard' request fields always equal the !hard fields. Convert all rq->sectors, nr_sectors and current_nr_sectors references to accessors. While at it, drop superflous blk_rq_pos() < 0 test in swim.c. [ Impact: use pos and nr_sectors accessors ] Signed-off-by:
Tejun Heo <tj@kernel.org> Acked-by:
Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> Tested-by:
Grant Likely <grant.likely@secretlab.ca> Acked-by:
Grant Likely <grant.likely@secretlab.ca> Tested-by:
Adrian McMenamin <adrian@mcmen.demon.co.uk> Acked-by:
Adrian McMenamin <adrian@mcmen.demon.co.uk> Acked-by:
Mike Miller <mike.miller@hp.com> Cc: James Bottomley <James.Bottomley@HansenPartnership.com> Cc: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Cc: Borislav Petkov <petkovbb@googlemail.com> Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com> Cc: Eric Moore <Eric.Moore@lsi.com> Cc: Alan Stern <stern@rowland.harvard.edu> Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Cc: Pete Zaitcev <zaitcev@redhat.com> Cc: Stephen Rothwell <sfr@canb.auug.org.au> Cc: Paul Clements <paul.clements@steeleye.com> Cc: Tim Waugh <tim@cyberelk.net> Cc: Jeff Garzik <jgarzik@pobox.com> Cc: Jeremy Fitzhardinge <jeremy@xensource.com> Cc: Alex Dubov <oakad@yahoo.com> Cc: David Woodhouse <dwmw2@infradead.org> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Dario Ballabio <ballabio_dario@emc.com> Cc: David S. Miller <davem@davemloft.net> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: unsik Kim <donari75@gmail.com> Cc: Laurent Vivier <Laurent@lvivier.info> Signed-off-by:
Jens Axboe <jens.axboe@oracle.com>
-
- 29 Dec, 2008 1 commit
-
-
Jens Axboe authored
Just use struct elevator_queue everywhere instead. Signed-off-by:
Jens Axboe <jens.axboe@oracle.com>
-
- 09 Oct, 2008 2 commits
-
-
Aaron Carroll authored
* convert goto to simpler while loop; * use rq_end_sector() instead of computing manually; * fix false comments; * remove spurious whitespace; * convert rq_rb_root macro to an inline function. Signed-off-by:
Aaron Carroll <aaronc@gelato.unsw.edu.au> Signed-off-by:
Jens Axboe <jens.axboe@oracle.com>
-
Aaron Carroll authored
Deadline currently only batches sector-contiguous requests, so except for a few circumstances (e.g. requests in a single direction), it is essentially first come first served. This is bad for throughput, so change it to CSCAN, which means requests in a batch do not need to be sequential and are issued in increasing sector order. Signed-off-by:
Aaron Carroll <aaronc@gelato.unsw.edu.au> Signed-off-by:
Jens Axboe <jens.axboe@oracle.com>
-
- 18 Dec, 2007 1 commit
-
-
Adrian Bunk authored
elv_register() always returns 0, and there isn't anything it does where it should return an error (the only error condition is so grave that it's handled with a BUG_ON). Signed-off-by:
Adrian Bunk <bunk@kernel.org> Signed-off-by:
Jens Axboe <jens.axboe@oracle.com>
-
- 02 Nov, 2007 3 commits
-
-
Aaron Carroll authored
After switching data directions, deadline always starts the next batch from the lowest-sector request. This gives excessive deadline expiries and large latency and throughput disparity between high- and low-sector requests; an order of magnitude in some tests. This patch changes the batching behaviour so new batches start from the request whose expiry is earliest. Signed-off-by:
Aaron Carroll <aaronc@gelato.unsw.edu.au> Signed-off-by:
Jens Axboe <jens.axboe@oracle.com>
-
Aaron Carroll authored
The deadline I/O scheduler does not reset the batch count when starting a new batch at a higher-sectored request. This means the second and subsequent batch in the same data direction will never exceed a single request in size whenever higher-sectored requests are pending. This patch gives new batches in the same data direction as old ones their full quota of requests by resetting the batch count. Signed-off-by:
Aaron Carroll <aaronc@gelato.unsw.edu.au> Signed-off-by:
Jens Axboe <jens.axboe@oracle.com>
-
Aaron Carroll authored
Factor finding the next request in sector-sorted order into a function deadline_latter_request. Signed-off-by:
Aaron Carroll <aaronc@gelato.unsw.edu.au> Signed-off-by:
Jens Axboe <jens.axboe@oracle.com>
-
- 24 Jul, 2007 1 commit
-
-
Jens Axboe authored
Some of the code has been gradually transitioned to using the proper struct request_queue, but there's lots left. So do a full sweet of the kernel and get rid of this typedef and replace its uses with the proper type. Signed-off-by:
Jens Axboe <jens.axboe@oracle.com>
-
- 17 Jul, 2007 1 commit
-
-
Christoph Lameter authored
kmalloc_node() and kmem_cache_alloc_node() were not available in a zeroing variant in the past. But with __GFP_ZERO it is possible now to do zeroing while allocating. Use __GFP_ZERO to remove the explicit clearing of memory via memset whereever we can. Signed-off-by:
Christoph Lameter <clameter@sgi.com> Signed-off-by:
Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
-
- 01 Dec, 2006 1 commit
-
-
Jens Axboe authored
- ->init_queue() does not need the elevator passed in - ->put_request() is a hot path and need not have the queue passed in - cfq_update_io_seektime() does not need cfqd passed in Signed-off-by:
Jens Axboe <jens.axboe@oracle.com>
-
- 30 Sep, 2006 4 commits
-
-
Jens Axboe authored
As people often look for the copyright in files to see who to mail, update the link to a neutral one. Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
Jens Axboe authored
A big win, we now save an allocation/free on each request! With the previous rb/hash abstractions, we can just reuse queuelist/donelist for the FIFO data and be done with it. Signed-off-by:
Jens Axboe <axboe@suse.de>
-
Jens Axboe authored
This removes the rbtree handling from deadline. Signed-off-by:
Jens Axboe <axboe@suse.de>
-
Jens Axboe authored
Right now, every IO scheduler implements its own backmerging (except for noop, which does no merging). That results in duplicated code for essentially the same operation, which is never a good thing. This patch moves the backmerging out of the io schedulers and into the elevator core. We save 1.6kb of text and as a bonus get backmerging for noop as well. Win-win! Signed-off-by:
Jens Axboe <axboe@suse.de>
-
- 30 Jun, 2006 1 commit
-
-
Jörn Engel authored
Signed-off-by:
Jörn Engel <joern@wohnheim.fh-wedel.de> Signed-off-by:
Adrian Bunk <bunk@stusta.de>
-
- 23 Jun, 2006 2 commits
-
-
Jens Axboe authored
They all duplicate macros to check for empty root and/or node, and clearing a node. So put those in rbtree.h. Signed-off-by:
Jens Axboe <axboe@suse.de>
-
Akinobu Mita authored
Use hlist instead of list_head for request hashtable in deadline-iosched and as-iosched. It also can remove the flag to know hashed or unhashed. Signed-off-by:
Akinobu Mita <mita@miraclelinux.com> Signed-off-by:
Jens Axboe <axboe@suse.de> block/as-iosched.c | 45 +++++++++++++++++++-------------------------- block/deadline-iosched.c | 39 ++++++++++++++++----------------------- 2 files changed, 35 insertions(+), 49 deletions(-)
-
- 08 Jun, 2006 1 commit
-
-
Jens Axboe authored
There's a race between shutting down one io scheduler and firing up the next, in which a new io could enter and cause the io scheduler to be invoked with bad or NULL data. To fix this, we need to maintain the queue lock for a bit longer. Unfortunately we cannot do that, since the elevator init requires to be run without the lock held. This isn't easily fixable, without also changing the mempool API. So split the initialization into two parts, and alloc-init operation and an attach operation. Then we can preallocate the io scheduler and related structures, and run the attach inside the lock after we detach the old one. This patch has survived 30 minutes of 1 second io scheduler switching with a very busy io load. Signed-off-by:
Jens Axboe <axboe@suse.de> Signed-off-by:
Linus Torvalds <torvalds@osdl.org>
-
- 21 Apr, 2006 1 commit
-
-
David Woodhouse authored
They were abusing the rb_color field to mark nodes which weren't currently on the tree. Fix that to use the same method as eventpoll did -- setting the parent pointer to point back to itself. And use the appropriate accessor macros for setting and reading the parent. Signed-off-by:
David Woodhouse <dwmw2@infradead.org>
-
- 19 Mar, 2006 1 commit
-
-
Al Viro authored
-
- 18 Mar, 2006 1 commit
-
-
Al Viro authored
-
- 06 Jan, 2006 1 commit
-
-
Arjan van de Ven authored
the patch below marks various read-only variables in block/* as const, so that gcc can optimize the use of them; eg gcc will replace the use by the value directly now and will even remove the memory usage of these. Signed-off-by:
Arjan van de Ven <arjan@infradead.org> Signed-off-by:
Jens Axboe <axboe@suse.de>
-
- 18 Nov, 2005 1 commit
-
-
Coywolf Qi Hunt authored
Some leftover comments referring to drivers/block that are now block/. They don't add any information we don't already have, so kill them. Signed-off-by:
Coywolf Qi Hunt <qiyong@fc-cn.com> Signed-off-by:
Jens Axboe <axboe@suse.de>
-
- 04 Nov, 2005 1 commit
-
-
Jens Axboe authored
drivers/block/ is right now a mix of core and driver parts. Lets move the core parts to a new top level directory. Al will move the fs/ related block parts to block/ next. Signed-off-by:
Jens Axboe <axboe@suse.de>
-
- 28 Oct, 2005 3 commits
-
-
Al Viro authored
Signed-off-by:
Al Viro <viro@zeniv.linux.org.uk> Signed-off-by:
Linus Torvalds <torvalds@osdl.org>
-
Tejun Heo authored
Remove last_merge handling from all ioscheds. This patch removes merging capability of noop iosched. Signed-off-by:
Tejun Heo <htejun@gmail.com>
-
Jens Axboe authored
This patch updates all four ioscheds to use generic dispatch queue. There's one behavior change in as-iosched. * In as-iosched, when force dispatching (ELEVATOR_INSERT_BACK), batch_data_dir is reset to REQ_SYNC and changed_batch and new_batch are cleared to zero. This prevernts AS from doing incorrect update_write_batch after the forced dispatched requests are finished. * In cfq-iosched, cfqd->rq_in_driver currently counts the number of activated (removed) requests to determine whether queue-kicking is needed and cfq_max_depth has been reached. With generic dispatch queue, I think counting the number of dispatched requests would be more appropriate. * cfq_max_depth can be lowered to 1 again. Original from Tejun Heo, modified version applied. Signed-off-by:
Jens Axboe <axboe@suse.de>
-
- 09 Sep, 2005 1 commit
-
-
Andrew Morton authored
That ?: trick gives us the creeps. Cc: Jens Axboe <axboe@suse.de> Signed-off-by:
Andrew Morton <akpm@osdl.org> Signed-off-by:
Linus Torvalds <torvalds@osdl.org>
-
- 07 Sep, 2005 1 commit
-
-
Nikita Danilov authored
cleanup of deadline_dispatch_requests(): - replace drq selection with hopefully clearer while semantically the same construct: take write request, if there is any, otherwise take read one, or NULL if none exist. - kill unused other_dir. Signed-off-by:
Nikita Danilov <nikita@clusterfs.com> Cc: Jens Axboe <axboe@suse.de> Signed-off-by:
Andrew Morton <akpm@osdl.org> Signed-off-by:
Linus Torvalds <torvalds@osdl.org>
-
- 27 Jun, 2005 1 commit
-
-
Jens Axboe authored
This updates the CFQ io scheduler to the new time sliced design (cfq v3). It provides full process fairness, while giving excellent aggregate system throughput even for many competing processes. It supports io priorities, either inherited from the cpu nice value or set directly with the ioprio_get/set syscalls. The latter closely mimic set/getpriority. This import is based on my latest from -mm. Signed-off-by:
Jens Axboe <axboe@suse.de> Signed-off-by:
Linus Torvalds <torvalds@osdl.org>
-
- 23 Jun, 2005 1 commit
-
-
Christoph Lameter authored
Patch to allocate the control structures for for ide devices on the node of the device itself (for NUMA systems). The patch depends on the Slab API change patch by Manfred and me (in mm) and the pcidev_to_node patch that I posted today. Does some realignment too. Signed-off-by:
Justin M. Forbes <jmforbes@linuxtx.org> Signed-off-by:
Christoph Lameter <christoph@lameter.com> Signed-off-by:
Pravin Shelar <pravin@calsoftinc.com> Signed-off-by:
Shobhit Dayal <shobhit@calsoftinc.com> Signed-off-by:
Andrew Morton <akpm@osdl.org> Signed-off-by:
Linus Torvalds <torvalds@osdl.org>
-
- 20 Jun, 2005 1 commit
-
-
Dmitry Torokhov authored
sysfs: fix drivers/block so if an attribute doesn't implement show or store method read/write will return -EIO instead of 0 or -EINVAL. Signed-off-by:
Dmitry Torokhov <dtor@mail.ru> Signed-off-by:
Greg Kroah-Hartman <gregkh@suse.de>
-
- 16 Apr, 2005 1 commit
-
-
Linus Torvalds authored
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
-