20 Nov, 2018

1 commit

  • Define get_current_ioprio() as an inline helper to obtain the caller
    I/O priority from its task I/O context. Use this helper in
    blk_init_request_from_bio() to set a request ioprio.

    Reviewed-by: Christoph Hellwig
    Reviewed-by: Johannes Thumshirn
    Signed-off-by: Damien Le Moal
    Signed-off-by: Jens Axboe

    Damien Le Moal
     

05 Jun, 2018

1 commit


31 May, 2018

1 commit

  • Aio per command iopriority support introduces a second interface between
    userland and the kernel capable of passing iopriority. The aio interface also
    needs the ability to verify that the submitting context has sufficient
    privileges to submit IOPRIO_RT commands. This patch creates the
    ioprio_check_cap function to be used by the ioprio_set system call and also by
    the aio interface.

    Signed-off-by: Adam Manzanares
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Jeff Moyer
    Signed-off-by: Al Viro

    Adam Manzanares
     

08 Nov, 2017

1 commit


02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

10 Oct, 2017

1 commit

  • A side-effect to the old code is that now SCHED_DEADLINE is also
    recognized.

    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Peter Zijlstra (Intel)
    Cc: Jens Axboe
    Cc: Linus Torvalds
    Cc: Mike Galbraith
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/20171004154901.26904-2-bigeasy@linutronix.de
    Signed-off-by: Ingo Molnar

    Sebastian Andrzej Siewior
     

14 Sep, 2016

1 commit


20 Mar, 2012

1 commit

  • cfq caches the associated cfqq's for a given cic. The cache needs to
    be flushed if the cic's ioprio or blkcg has changed. It is currently
    done by requiring the changing action to set the respective
    ICQ_*_CHANGED bit in the icq and testing it from cfq_set_request(),
    which involves iterating through all the affected icqs.

    All cfq wants to know is whether ioprio and/or blkcg have changed
    since the last flush and can be easily achieved by just remembering
    the current ioprio and blkcg ID in cic.

    This patch adds cic->{ioprio|blkcg_id}, updates all ioprio users to
    use the remembered value instead, and updates cfq_set_request() path
    such that, instead of using icq_get_changed(), the current values are
    compared against the remembered ones and trigger appropriate flush
    action if not. Condition tests are moved inside both _changed
    functions which are now named check_ioprio_changed() and
    check_blkcg_changed().

    ioprio.h::task_ioprio*() can't be used anymore and replaced with
    open-coded IOPRIO_CLASS_NONE case in cfq_async_queue_prio().

    Signed-off-by: Tejun Heo
    Cc: Vivek Goyal
    Signed-off-by: Jens Axboe

    Tejun Heo
     

06 Jan, 2009

1 commit


07 May, 2008

1 commit


28 Jan, 2008

1 commit


20 Jul, 2007

1 commit

  • If we have two processes with different ioprio_class, but the same
    ioprio_data, their async requests will fall into the same queue. I guess
    such behavior is not expected, because it's not right to put real-time
    requests and best-effort requests in the same queue.

    The attached patch fixes the problem by introducing additional *cfqq
    fields on cfqd, pointing to per-(class,priority) async queues.

    Signed-off-by: Jens Axboe

    Vasily Tarasov
     

10 Jul, 2007

1 commit

  • With the cfq_queue hash removal, we inadvertently got rid of the
    async queue sharing. This was not intentional, in fact CFQ purposely
    shares the async queue per priority level to get good merging for
    async writes.

    So put some logic in cfq_get_queue() to track the shared queues.

    Signed-off-by: Jens Axboe

    Jens Axboe
     

21 Aug, 2006

1 commit


08 Jul, 2005

1 commit

  • - Make ioprio syscalls return long, like set/getpriority syscalls.
    - Move function prototypes into syscalls.h so we can pick them up in the
    32/64bit compat code.

    Signed-off-by: Anton Blanchard
    Acked-by: Jens Axboe
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Anton Blanchard
     

28 Jun, 2005

2 commits

  • - Adjust slice values

    - Instead of one async queue, one is defined per priority level. This
    prevents kernel threads (such as reiserfs/x and others) that run at
    higher io priority from conflicting with others. Previously, it was a
    coin toss what io prio the async queue got, it was defined by who
    first set up the queue.

    - Let a time slice only begin, when the previous slice is completely
    done. Previously we could be somewhat unfair to a new sync slice, if
    the previous slice was async and had several ios queued. This might
    need a little tweaking if throughput suffers a little due to this,
    allowing perhaps an overlap of a single request or so.

    - Optimize the calling of kblockd_schedule_work() by doing it only when
    it is strictly necessary (no requests in driver and work left to do).

    - Correct sync vs async logic. A 'normal' process can be purely async as
    well, and a flusher can be purely sync as well. Sync or async is now a
    property of the class defined and requests pending. Previously writers
    could be considered sync, when they were really async.

    - Get rid of the bit fields in cfqq and crq, use flags instead.

    - Various other cleanups and fixes

    Signed-off-by: Jens Axboe
    Signed-off-by: Linus Torvalds

    Jens Axboe
     
  • 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
    Signed-off-by: Linus Torvalds

    Jens Axboe