From 8260b65d58cca933b903a5c37064035494aef300 Mon Sep 17 00:00:00 2001 From: André Fabian Silva Delgado Date: Mon, 3 Aug 2015 18:20:32 -0300 Subject: linux-libre-grsec{,-knock}-4.1.3_gnu.201508011613-1: updating version --- ...op-avoiding-too-many-pending-per-work-I-O.patch | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 libre/linux-libre-grsec/0002-block-loop-avoiding-too-many-pending-per-work-I-O.patch (limited to 'libre/linux-libre-grsec/0002-block-loop-avoiding-too-many-pending-per-work-I-O.patch') diff --git a/libre/linux-libre-grsec/0002-block-loop-avoiding-too-many-pending-per-work-I-O.patch b/libre/linux-libre-grsec/0002-block-loop-avoiding-too-many-pending-per-work-I-O.patch new file mode 100644 index 000000000..fcad0c0b9 --- /dev/null +++ b/libre/linux-libre-grsec/0002-block-loop-avoiding-too-many-pending-per-work-I-O.patch @@ -0,0 +1,52 @@ +From 63eb7031005b6f22fc1dab9f0c29435f1b52a96b Mon Sep 17 00:00:00 2001 +From: Ming Lei +Date: Tue, 5 May 2015 19:49:55 +0800 +Subject: [PATCH 2/2] block: loop: avoiding too many pending per work I/O + +If there are too many pending per work I/O, too many +high priority work thread can be generated so that +system performance can be effected. + +This patch limits the max_active parameter of workqueue as 16. + +This patch fixes Fedora 22 live booting performance +regression when it is booted from squashfs over dm +based on loop, and looks the following reasons are +related with the problem: + +- not like other filesyststems(such as ext4), squashfs +is a bit special, and I observed that increasing I/O jobs +to access file in squashfs only improve I/O performance a +little, but it can make big difference for ext4 + +- nested loop: both squashfs.img and ext3fs.img are mounted +as loop block, and ext3fs.img is inside the squashfs + +- during booting, lots of tasks may run concurrently + +Fixes: b5dd2f6047ca108001328aac0e8588edd15f1778 +Cc: stable@vger.kernel.org (v4.0) +Cc: Justin M. Forbes +Signed-off-by: Ming Lei +Acked-by: Tejun Heo +Signed-off-by: Jens Axboe +--- + drivers/block/loop.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/block/loop.c b/drivers/block/loop.c +index 9786aa3..cef6fa8 100644 +--- a/drivers/block/loop.c ++++ b/drivers/block/loop.c +@@ -725,7 +725,7 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, + goto out_putf; + error = -ENOMEM; + lo->wq = alloc_workqueue("kloopd%d", +- WQ_MEM_RECLAIM | WQ_HIGHPRI | WQ_UNBOUND, 0, ++ WQ_MEM_RECLAIM | WQ_HIGHPRI | WQ_UNBOUND, 16, + lo->lo_number); + if (!lo->wq) + goto out_putf; +-- +2.4.5 + -- cgit v1.2.3-54-g00ecf