- 25 Dec, 2015 1 commit
-
-
Tanya Brokhman authored
When adding new field to struct bio there is a crash in the removed code lines. This issue was introduced by commit 80a8f0f87bee18283e9ca0a8966ec97ad9f084e5 "block: row-iosched idling triggered by readahead pages" (Partly) reverting this patch till root cause is fixed (on FS level). Change-Id: Ie82bc806ea52a6370b57aa15455c85b2db10d0da Signed-off-by:
Tanya Brokhman <tlinder@codeaurora.org>
-
- 26 Jul, 2013 1 commit
-
-
Tatyana Brokhman authored
Regular priority queues is marked as "starved" if it skipped a dispatch due to being empty. When a new request is added to a "starved" queue it will be marked as urgent. The removed WARN_ON was warning about an impossible case when a regular priority (read) queue was marked as starved but wasn't empty. This is a possible case due to the bellow: If the device driver fetched a read request that is pending for transmission and an URGENT request arrives, the fetched read will be reinserted back to the scheduler. Its possible that the queue it will be reinserted to was marked as "starved" in the meanwhile due to being empty. CRs-fixed: 517800 Change-Id: Iaae642ea0ed9c817c41745b0e8ae2217cc684f0c Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-
- 02 Jul, 2013 1 commit
-
-
Tatyana Brokhman authored
Calling hrtimer_cancel with interrupts disabled can result in a livelock. When flushing plug list in the block layer interrupts are disabled and an hrtimer is used when adding requests from that plug list to the scheduler. In this code flow, if the hrtimer (which is used for idling) is set, it's being canceled by calling hrtimer_cancel. hrtimer_cancel will perform the following in an endless loop: 1. try cancel the timer 2. if fails - rest_cpu the cancellation can fail if the timer function already started. Since interrupts are disabled it can never complete. This patch reduced the number of times the hrtimer lock is taken while interrupts are disabled by calling hrtimer_try_co_cancel. the later will try to cancel the timer just once and return with an error code if fails. CRs-fixed: 499887 Change-Id: I25f79c357426d72ad67c261ce7cb503ae97dc7b9 Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-
- 23 Jun, 2013 1 commit
-
-
Lee Susman authored
In the current implementation idling is triggered only by request insertion frequency. This heuristic is not very accurate and may hit random requests that shouldn't trigger idling. This patch uses the PG_readahead flag in struct page's flags, which indicates that the page is part of a readahead window, to start idling upon dispatch of a request associated with a readahead page. The above readehead flag is used together with the existing insertion-frequency trigger. The frequency timer will catch read requests which are not part of a readahead window, but are still part of a sequential stream (and therefore dispatched in small time intervals). Change-Id: Icb7145199c007408de3f267645ccb842e051fd00 Signed-off-by:
Lee Susman <lsusman@codeaurora.org>
-
- 14 Apr, 2013 1 commit
-
-
Maya Erez authored
The current starvation tolerance values increase the boot time since high priority SW requests are delayed by regular priority requests. In order to overcome this, increase the starvation tolerance values. Change-Id: I9947fca9927cbd39a1d41d4bd87069df679d3103 Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org> Signed-off-by:
Maya Erez <merez@codeaurora.org>
-
- 21 Mar, 2013 2 commits
-
-
Tatyana Brokhman authored
All ROW (time related) configurable parameters are stored in ms so there is no need to convert from/to ms when reading/updating them via sysfs. Change-Id: Ib6a1de54140b5d25696743da944c076dd6fc02ae Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-
Tatyana Brokhman authored
At the moment all REGULAR and LOW priority requests are starved as long as there are HIGH priority requests to dispatch. This patch prevents the above starvation by setting a starvation limit the REGULAR\LOW priority requests can tolerate. Change-Id: Ibe24207982c2c55d75c0b0230f67e013d1106017 Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-
- 12 Mar, 2013 1 commit
-
-
Tatyana Brokhman authored
When ROW scheduler reports to the block layer that there is an urgent request pending, the device driver may decide to stop the transmission of the current request in order to handle the urgent one. This is done in order to reduce the latency of an urgent request. For example: long WRITE may be stopped to handle an urgent READ. This patch updates the ROW URGENT notification policy to apply with the below: - Don't notify URGENT if there is an un-completed URGENT request in driver - After notifying that URGENT request is present, the next request dispatched is the URGENT one. - At every given moment only 1 request can be marked as URGENT. Independent of it's location (driver or scheduler) Other changes to URGENT policy: - Only READ queues are allowed to notify of an URGENT request pending. CR fix: If a pending urgent request (A) gets merged with another request (B) A is removed from scheduler queue but is not removed from rd->pending_urgent_rq. CRs-Fixed: 453712 Change-Id: I321e8cf58e12a05b82edd2a03f52fcce7bc9a900 Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-
- 26 Feb, 2013 1 commit
-
-
Shashank Babu Chinta Venkata authored
The revert fixes frequent boot up failures on 8974. This reverts commit 0c3b048d . Change-Id: I181513382a128724ce08980ad2f14cd5943c27bd Signed-off-by:
Shashank Babu Chinta Venkata <sbchin@codeaurora.org>
-
- 21 Feb, 2013 1 commit
-
-
Tatyana Brokhman authored
This patch updates the ROW URGENT notification policy to apply with the bellow: - Don't notify URGENT if there is an un-completed URGENT request in driver - After notifying that URGENT request is present, the next request dispatched is the URGENT one. - At every given moment only 1 request can be marked as URGENT. Independent of it's location (driver or scheduler) Other changes to URGENT policy: - Only queues that are allowed to notify of an URGENT request pending are READ queues Change-Id: I17ff73125bc7a760cea1116b466115a2df635a14 Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-
- 14 Feb, 2013 4 commits
-
-
Tatyana Brokhman authored
This patch sets the initial values of internal ROW parameters. Change-Id: I38132062a7fcbe2e58b9cc757e55caac64d013dc Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org> [smuckle@codeaurora.org: ported from msm-3.7] Signed-off-by:
Steve Muckle <smuckle@codeaurora.org>
-
Tatyana Brokhman authored
When ROW scheduler reports to the block layer that there is an urgent request pending, the device driver may decide to stop the transmission of the current request in order to handle the urgent one. If the current transmitted request is an urgent request - we don't want it to be stopped. Due to the above ROW scheduler won't notify of an urgent request if there are urgent requests in flight. Change-Id: I2fa186d911b908ec7611682b378b9cdc48637ac7 Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-
Tatyana Brokhman authored
At the moment idling in ROW is implemented by delayed work that uses jiffies granularity which is not very accurate. This patch replaces current idling mechanism implementation with hrtime API, which gives nanosecond resolution (instead of jiffies). Change-Id: I86c7b1776d035e1d81571894b300228c8b8f2d92 Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-
Tatyana Brokhman authored
This patch implements "application-hints" which is a way the issuing application can notify the scheduler on the priority of its request. This is done by setting the io-priority of the request. This patch reuses an already existing mechanism of io-priorities developed for CFQ. Please refer to kernel/Documentation/block/ioprio.txt for usage example and explanations. Change-Id: I228ec8e52161b424242bb7bb133418dc8b73925a Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-
- 13 Jan, 2013 4 commits
-
-
Tatyana Brokhman authored
Each ROW queues has several parameters which default values are defined in separate arrays. This patch aggregates all default values into one array. The values in question are: - is idling enabled for the queue - queue quantum - can the queue notify on urgent request Change-Id: I3821b0a042542295069b340406a16b1000873ec6 Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-
Tatyana Brokhman authored
idle_time was updated to be stored in msec instead of jiffies. So there is no need to convert the value when reading from user or displaying the value to him. Change-Id: I58e074b204e90a90536d32199ac668112966e9cf Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-
Tatyana Brokhman authored
There is really no point in keeping the dispatch quantum of a queue outside of it. By inserting it to the row_queue structure we spare extra level in accessing it. Change-Id: Ic77571818b643e71f9aafbb2ca93d0a92158b199 Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-
Tatyana Brokhman authored
1. Add a counter for number of requests on queue. 2. Add function to print queues status (number requests currently on queue and number of already dispatched requests in current dispatch cycle). Change-Id: I1e98b9ca33853e6e6a8ddc53240f6cd6981e6024 Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-
- 20 Dec, 2012 1 commit
-
-
Tatyana Brokhman authored
This patch adds support for handling urgent requests. ROW queue can be marked as "urgent" so if it was un-served in last dispatch cycle and a request was added to it - it will trigger issuing an urgent-request-notification to the block device driver. The block device driver may choose at stop the transmission of current ongoing request to handle the urgent one. Foe example: long WRITE may be stopped to handle an urgent READ. This decreases READ latency. Change-Id: I84954c13f5e3b1b5caeadc9fe1f9aa21208cb35e Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-
- 06 Dec, 2012 2 commits
-
-
Tatyana Brokhman authored
This patch addresses the following issues found in the ROW idling mechanism: 1. Fix the delay passed to queue_delayed_work (pass actual delay and not the time when to start the work) 2. Change the idle time and the idling-trigger frequency to be HZ dependent (instead of using msec_to_jiffies()) 3. Destroy idle_workqueue() in queue_exit Change-Id: If86513ad6b4be44fb7a860f29bd2127197d8d5bf Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-
Tatyana Brokhman authored
Add support for reinserting already dispatched request back to the schedulers internal data structures. The request will be reinserted back to the queue (head) it was dispatched from as if it was never dispatched. Change-Id: I70954df300774409c25b5821465fb3aa33d8feb5 Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-
- 15 Oct, 2012 2 commits
-
-
Tatyana Brokhman authored
This patch fixes forced dispatch in the ROW scheduling algorithm. When the dispatch function is called with the forced flag on, we can't delay the dispatch of the requests that are in scheduler queues. Thus, when dispatch is called with forced turned on, we need to cancel idling, or not to idle at all. Change-Id: I3aa0da33ad7b59c0731c696f1392b48525b52ddc Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-
Tatyana Brokhman authored
The ROW scheduling algorithm exposes several tunable parameters. This patch updates the minimum allowed values for those parameters. Change-Id: I5ec19d54b694e2e83ad5376bd99cc91f084967f5 Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-
- 20 Sep, 2012 1 commit
-
-
Tatyana Brokhman authored
This patch adds the implementation of a new scheduling algorithm - ROW. The policy of this algorithm is to prioritize READ requests over WRITE as much as possible without starving the WRITE requests. Change-Id: I4ed52ea21d43b0e7c0769b2599779a3d3869c519 Signed-off-by:
Tatyana Brokhman <tlinder@codeaurora.org>
-