{"push_id":597248066,"size":52,"distinct_size":52,"ref":"refs/heads/master","head":"c26b904e78aea59c6dda66825bfec3fd90b48284","before":"953cbe9e48a3ea028f0c397a99d5025c43952b82","commits":[{"sha":"45c0961c0a08689654464c9d13fc05f165db82a3","author":{"email":"b201df44218f4a092da44e50bfa2319a1a0f5825@deathlord.eu","name":"halaszk"},"message":"Revert \"Revert \"update sources to SM-G850F_EUR_KK_Opensource_Update1\"\"\n\nThis reverts commit c8ea9928bb9bcafb411e9b6b13ed4894fba52735.","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/45c0961c0a08689654464c9d13fc05f165db82a3"},{"sha":"2e3d1824fbbc360c3cfb24c78afa222e27f52220","author":{"email":"b201df44218f4a092da44e50bfa2319a1a0f5825@deathlord.eu","name":"halaszk"},"message":" block: fiops ioscheduler core\n\nFIOPS (Fair IOPS) ioscheduler is IOPS based ioscheduler, so only targets\nfor drive without I/O seek. It's quite similar like CFQ, but the dispatch\ndecision is made according to IOPS instead of slice.\n\nThe algorithm is simple. Drive has a service tree, and each task lives in\nthe tree. The key into the tree is called vios (virtual I/O). Every request\nhas vios, which is calculated according to its ioprio, request size and so\non. Task's vios is the sum of vios of all requests it dispatches. FIOPS\nalways selects task with minimum vios in the service tree and let the task\ndispatch request. The dispatched request's vios is then added to the task's\nvios and the task is repositioned in the sevice tree.\n\nUnlike CFQ, FIOPS doesn't have separate sync/async queues, because with I/O\nless writeback, usually a task can only dispatch either sync or async requests.\nBias read or write request can still be done with read/write scale.\n\nOne issue is if workload iodepth is lower than drive queue_depth, IOPS\nshare of a task might not be strictly according to its priority, request\nBias read or write request can still be done with read/write scale.\n\nOne issue is if workload iodepth is lower than drive queue_depth, IOPS\nshare of a task might not be strictly according to its priority, request\nsize and so on. In this case, the drive is in idle actually. Solving the\nproblem need make drive idle, so impact performance. I believe CFQ isn't\ncompletely fair between tasks in such case too.\n\nSigned-off-by: Shaohua Li <shaohua.li@intel.com>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/2e3d1824fbbc360c3cfb24c78afa222e27f52220"},{"sha":"631fbd31c9d7b05eb44471d3935fb1188e6fd89f","author":{"email":"cb3904095a5bc20edc93ba3dfa3e7d27d981b654@intel.com","name":"Shaohua Li"},"message":"block: fiops read/write request scale\n\nread/write speed of Flash based storage usually is different. For example,\nin my SSD maxium thoughput of read is about 3 times faster than that of\nwrite. Add a scale to differenate read and write. Also add a tunable, so\nuser can assign different scale for read and write.\n\nBy default, the scale is 1:1, which means the scale is a noop.\n\nSigned-off-by: Shaohua Li <shaohua.li@intel.com>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/631fbd31c9d7b05eb44471d3935fb1188e6fd89f"},{"sha":"223ad5f2152e6079ffde2a58ce78ea7b03f09dc2","author":{"email":"cb3904095a5bc20edc93ba3dfa3e7d27d981b654@intel.com","name":"Shaohua Li"},"message":"block: fiops sync/async scale\n\nCFQ gives 2.5 times more share to sync workload. This matches CFQ.\n\nNote this is different with the read/write scale. We have 3 types of\nrequests:\n1. read\n2. sync write\n3. write\nCFQ doesn't differentitate type 1 and 2, but request cost of 1 and 2\nare usually different for flash based storage. So we have both sync/async\nand read/write scale here.\n\nSigned-off-by: Shaohua Li <shaohua.li@intel.com>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/223ad5f2152e6079ffde2a58ce78ea7b03f09dc2"},{"sha":"d0f7d71d104981269b2c8a86cd7d717e12286d1e","author":{"email":"cb3904095a5bc20edc93ba3dfa3e7d27d981b654@intel.com","name":"Shaohua Li"},"message":"block: fiops add ioprio support\n\nAdd CFQ-like ioprio support. Priority A will get 20% more share than priority\nA+1, which matches CFQ.\n\nSigned-off-by: Shaohua Li <shaohua.li@intel.com>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/d0f7d71d104981269b2c8a86cd7d717e12286d1e"},{"sha":"1b25490b8e4bccf0952a92f5963b7d5b67c146cf","author":{"email":"cb3904095a5bc20edc93ba3dfa3e7d27d981b654@intel.com","name":"Shaohua Li"},"message":"block: fiops preserve vios key for deep queue depth workload\n\nIf the task has running request, even it's added into service tree newly,\nwe preserve its vios key, so it will not lost its share. This should work\nfor task driving big queue depth. For single depth task, there is no approach\nto preserve its vios key.\n\nSigned-off-by: Shaohua Li <shaohua.li@intel.com>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/1b25490b8e4bccf0952a92f5963b7d5b67c146cf"},{"sha":"26b92c9126b55ab5c3cff5de565ad1aa2bca4d99","author":{"email":"cb3904095a5bc20edc93ba3dfa3e7d27d981b654@intel.com","name":"Shaohua Li"},"message":"block: fiops bias sync workload\n\nIf there are async requests running, delay async workload. Otherwise\nasync workload (usually very deep iodepth) will use all queue iodepth\nand later sync requests will get long delayed. The idea is from CFQ.\n\nSigned-off-by: Shaohua Li <shaohua.li@intel.com>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/26b92c9126b55ab5c3cff5de565ad1aa2bca4d99"},{"sha":"3f4ffc2d1afb6835494ea4b30f075ce925f9612d","author":{"email":"cb3904095a5bc20edc93ba3dfa3e7d27d981b654@intel.com","name":"Shaohua Li"},"message":"block: fiops add some trace information\n\nAdd some trace information, which is helpful when I do debugging.\n\nSigned-off-by: Shaohua Li <shaohua.li@intel.com>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/3f4ffc2d1afb6835494ea4b30f075ce925f9612d"},{"sha":"6e9aba16f5a96f852b5b69ed93059a52bc644d33","author":{"email":"c208d1ecece4e5ef2e4fb72f0546c69cdce89063@gmail.com","name":"Paul Reioux"},"message":"FIOPS: forward port for use on 3.10 Linux\n\nSigned-off-by: Paul Reioux <reioux@gmail.com>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/6e9aba16f5a96f852b5b69ed93059a52bc644d33"},{"sha":"b32cefc09b1d88bc7140013cb93b9e5466b81a90","author":{"email":"b201df44218f4a092da44e50bfa2319a1a0f5825@deathlord.eu","name":"halaszk"},"message":" block: Adding ROW scheduling algorithm\n\nThis patch adds the implementation of a new scheduling algorithm - ROW.\nThe policy of this algorithm is to prioritize READ requests over WRITE\nas much as possible without starving the WRITE requests.\n\nChange-Id: I4ed52ea21d43b0e7c0769b2599779a3d3869c519\nSigned-off-by: Tatyana Brokhman <tlinder@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/b32cefc09b1d88bc7140013cb93b9e5466b81a90"},{"sha":"7126adc77b3e4f419159c2808f9260f370133daa","author":{"email":"c7fa93ff364b50c0a977a853487528f982a1ac48@codeaurora.org","name":"Tatyana Brokhman"},"message":"block: ROW: Correct minimum values of ROW tunable parameters\n\nThe ROW scheduling algorithm exposes several tunable parameters.\nThis patch updates the minimum allowed values for those parameters.\n\nChange-Id: I5ec19d54b694e2e83ad5376bd99cc91f084967f5\nSigned-off-by: Tatyana Brokhman <tlinder@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/7126adc77b3e4f419159c2808f9260f370133daa"},{"sha":"b2f4007bacc730009d02ef1fc3af4d2f8926cd58","author":{"email":"c7fa93ff364b50c0a977a853487528f982a1ac48@codeaurora.org","name":"Tatyana Brokhman"},"message":"block: ROW: Fix forced dispatch\n\nThis patch fixes forced dispatch in the ROW scheduling algorithm.\nWhen the dispatch function is called with the forced flag on, we\ncan't delay the dispatch of the requests that are in scheduler queues.\nThus, when dispatch is called with forced turned on, we need to cancel\nidling, or not to idle at all.\n\nChange-Id: I3aa0da33ad7b59c0731c696f1392b48525b52ddc\nSigned-off-by: Tatyana Brokhman <tlinder@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/b2f4007bacc730009d02ef1fc3af4d2f8926cd58"},{"sha":"d4180c7f3416fb68e5b429322671555148490d85","author":{"email":"c7fa93ff364b50c0a977a853487528f982a1ac48@codeaurora.org","name":"Tatyana Brokhman"},"message":"block: Add support for reinsert a dispatched req\n\nAdd support for reinserting a dispatched request back to the\nscheduler's internal data structures.\nThis capability is used by the device driver when it chooses to\ninterrupt the current request transmission and execute another (more\nurgent) pending request. For example: interrupting long write in order\nto handle pending read. The device driver re-inserts the\nremaining write request back to the scheduler, to be rescheduled\nfor transmission later on.\n\nAdd API for verifying whether the current scheduler\nsupports reinserting requests mechanism. If reinsert mechanism isn't\nsupported by the scheduler, this code path will never be activated.\n\nChange-Id: I5c982a66b651ebf544aae60063ac8a340d79e67f\nSigned-off-by: Tatyana Brokhman <tlinder@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/d4180c7f3416fb68e5b429322671555148490d85"},{"sha":"e51c777470996f02141a691aa2366ba71911a5d9","author":{"email":"c7fa93ff364b50c0a977a853487528f982a1ac48@codeaurora.org","name":"Tatyana Brokhman"},"message":"block: Add API for urgent request handling\n\nThis patch add support in block & elevator layers for handling\nurgent requests. The decision if a request is urgent or not is taken\nby the scheduler. Urgent request notification is passed to the underlying\nblock device driver (eMMC for example). Block device driver may decide to\ninterrupt the currently running low priority request to serve the new\nurgent request. By doing so READ latency is greatly reduced in read&write\ncollision scenarios.\n\nNote that if the current scheduler doesn't implement the urgent request\nmechanism, this code path is never activated.\n\nChange-Id: I8aa74b9b45c0d3a2221bd4e82ea76eb4103e7cfa\nSigned-off-by: Tatyana Brokhman <tlinder@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/e51c777470996f02141a691aa2366ba71911a5d9"},{"sha":"65ed87415e949081e433b10f49df7254259fe63e","author":{"email":"c7fa93ff364b50c0a977a853487528f982a1ac48@codeaurora.org","name":"Tatyana Brokhman"},"message":"block:row: fix idling mechanism in ROW\n\nThis patch addresses the following issues found in the ROW idling\nmechanism:\n1. Fix the delay passed to queue_delayed_work (pass actual delay\n   and not the time when to start the work)\n2. Change the idle time and the idling-trigger frequency to be\n   HZ dependent (instead of using msec_to_jiffies())\n3. Destroy idle_workqueue() in queue_exit\n\nChange-Id: If86513ad6b4be44fb7a860f29bd2127197d8d5bf\nSigned-off-by: Tatyana Brokhman <tlinder@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/65ed87415e949081e433b10f49df7254259fe63e"},{"sha":"07df7df90117e1dd8dc2e5d52125c584efa64321","author":{"email":"c7fa93ff364b50c0a977a853487528f982a1ac48@codeaurora.org","name":"Tatyana Brokhman"},"message":"row: Adding support for reinsert already dispatched req\n\nAdd support for reinserting already dispatched request back to the\nschedulers internal data structures.\nThe request will be reinserted back to the queue (head) it was\ndispatched from as if it was never dispatched.\n\nChange-Id: I70954df300774409c25b5821465fb3aa33d8feb5\nSigned-off-by: Tatyana Brokhman <tlinder@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/07df7df90117e1dd8dc2e5d52125c584efa64321"},{"sha":"6795da8c8d0a42be89daf9b3325811a69a7f720a","author":{"email":"c7fa93ff364b50c0a977a853487528f982a1ac48@codeaurora.org","name":"Tatyana Brokhman"},"message":"row: Add support for urgent request handling\n\nThis patch adds support for handling urgent requests.\nROW queue can be marked as \"urgent\" so if it was un-served in last\ndispatch cycle and a request was added to it - it will trigger\nissuing an urgent-request-notification to the block device driver.\nThe block device driver may choose at stop the transmission of current\nongoing request to handle the urgent one. Foe example: long WRITE may\nbe stopped to handle an urgent READ. This decreases READ latency.\n\nChange-Id: I84954c13f5e3b1b5caeadc9fe1f9aa21208cb35e\nSigned-off-by: Tatyana Brokhman <tlinder@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/6795da8c8d0a42be89daf9b3325811a69a7f720a"},{"sha":"bac6076053dbd88e3a26c54940b499c605c05a96","author":{"email":"c7fa93ff364b50c0a977a853487528f982a1ac48@codeaurora.org","name":"Tatyana Brokhman"},"message":"block: row: Add some debug information on ROW queues\n\n1. Add a counter for number of requests on queue.\n2. Add function to print queues status (number requests\n   currently on queue and number of already dispatched requests\n   in current dispatch cycle).\n\nChange-Id: I1e98b9ca33853e6e6a8ddc53240f6cd6981e6024\nSigned-off-by: Tatyana Brokhman <tlinder@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/bac6076053dbd88e3a26c54940b499c605c05a96"},{"sha":"b56be7f930c75345e1eb5e25626c87f0a07e55a9","author":{"email":"c7fa93ff364b50c0a977a853487528f982a1ac48@codeaurora.org","name":"Tatyana Brokhman"},"message":"block: row: Insert dispatch_quantum into struct row_queue\n\nThere is really no point in keeping the dispatch quantum\nof a queue outside of it. By inserting it to the row_queue\nstructure we spare extra level in accessing it.\n\nChange-Id: Ic77571818b643e71f9aafbb2ca93d0a92158b199\nSigned-off-by: Tatyana Brokhman <tlinder@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/b56be7f930c75345e1eb5e25626c87f0a07e55a9"},{"sha":"aadea09f0711e45bdc18979a97bd9999e4bf402e","author":{"email":"c7fa93ff364b50c0a977a853487528f982a1ac48@codeaurora.org","name":"Tatyana Brokhman"},"message":"block: row: fix sysfs functions - idle_time conversion\n\nidle_time was updated to be stored in msec instead of jiffies.\nSo there is no need to convert the value when reading from user or\ndisplaying the value to him.\n\nChange-Id: I58e074b204e90a90536d32199ac668112966e9cf\nSigned-off-by: Tatyana Brokhman <tlinder@codeaurora.org>","distinct":true,"url":"https://api.github.com/repos/halaszk/halaszk-universal5430/commits/aadea09f0711e45bdc18979a97bd9999e4bf402e"}]}