From 05f7286fe57f78e3bf3d2da3256f2eda2ee1c4bc Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Feb 13 2012 20:19:16 +0000 Subject: Linux 3.2.6 --- diff --git a/block-readahead-block-plug.patch b/block-readahead-block-plug.patch deleted file mode 100644 index 0b7bca6..0000000 --- a/block-readahead-block-plug.patch +++ /dev/null @@ -1,92 +0,0 @@ -commit 3deaa7190a8da38453c4fabd9dec7f66d17fff67 -Author: Shaohua Li -Date: Fri Feb 3 15:37:17 2012 -0800 - - readahead: fix pipeline break caused by block plug - - Herbert Poetzl reported a performance regression since 2.6.39. The test - is a simple dd read, but with big block size. The reason is: - - T1: ra (A, A+128k), (A+128k, A+256k) - T2: lock_page for page A, submit the 256k - T3: hit page A+128K, ra (A+256k, A+384). the range isn't submitted - because of plug and there isn't any lock_page till we hit page A+256k - because all pages from A to A+256k is in memory - T4: hit page A+256k, ra (A+384, A+ 512). Because of plug, the range isn't - submitted again. - T5: lock_page A+256k, so (A+256k, A+512k) will be submitted. The task is - waitting for (A+256k, A+512k) finish. - - There is no request to disk in T3 and T4, so readahead pipeline breaks. - - We really don't need block plug for generic_file_aio_read() for buffered - I/O. The readahead already has plug and has fine grained control when I/O - should be submitted. Deleting plug for buffered I/O fixes the regression. - - One side effect is plug makes the request size 256k, the size is 128k - without it. This is because default ra size is 128k and not a reason we - need plug here. - - Vivek said: - - : We submit some readahead IO to device request queue but because of nested - : plug, queue never gets unplugged. When read logic reaches a page which is - : not in page cache, it waits for page to be read from the disk - : (lock_page_killable()) and that time we flush the plug list. - : - : So effectively read ahead logic is kind of broken in parts because of - : nested plugging. Removing top level plug (generic_file_aio_read()) for - : buffered reads, will allow unplugging queue earlier for readahead. - - Signed-off-by: Shaohua Li - Signed-off-by: Wu Fengguang - Reported-by: Herbert Poetzl - Tested-by: Eric Dumazet - Cc: Christoph Hellwig - Cc: Jens Axboe - Cc: Vivek Goyal - Cc: - Signed-off-by: Andrew Morton - Signed-off-by: Linus Torvalds - -diff --git a/mm/filemap.c b/mm/filemap.c -index 97f49ed..b662757 100644 ---- a/mm/filemap.c -+++ b/mm/filemap.c -@@ -1400,15 +1400,12 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov, - unsigned long seg = 0; - size_t count; - loff_t *ppos = &iocb->ki_pos; -- struct blk_plug plug; - - count = 0; - retval = generic_segment_checks(iov, &nr_segs, &count, VERIFY_WRITE); - if (retval) - return retval; - -- blk_start_plug(&plug); -- - /* coalesce the iovecs and go direct-to-BIO for O_DIRECT */ - if (filp->f_flags & O_DIRECT) { - loff_t size; -@@ -1424,8 +1421,12 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov, - retval = filemap_write_and_wait_range(mapping, pos, - pos + iov_length(iov, nr_segs) - 1); - if (!retval) { -+ struct blk_plug plug; -+ -+ blk_start_plug(&plug); - retval = mapping->a_ops->direct_IO(READ, iocb, - iov, pos, nr_segs); -+ blk_finish_plug(&plug); - } - if (retval > 0) { - *ppos = pos + retval; -@@ -1481,7 +1482,6 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov, - break; - } - out: -- blk_finish_plug(&plug); - return retval; - } - EXPORT_SYMBOL(generic_file_aio_read); diff --git a/kernel.spec b/kernel.spec index 8e9ca0a..d59e592 100644 --- a/kernel.spec +++ b/kernel.spec @@ -66,7 +66,7 @@ Summary: The Linux kernel %if 0%{?released_kernel} # Do we have a -stable update to apply? -%define stable_update 5 +%define stable_update 6 # Is it a -stable RC? %define stable_rc 0 # Set rpm version accordingly @@ -743,8 +743,6 @@ Patch3500: jbd-jbd2-validate-sb-s_first-in-journal_get_superblo.patch Patch12016: disable-i8042-check-on-apple-mac.patch -Patch12025: block-readahead-block-plug.patch - Patch12026: bsg-fix-sysfs-link-remove-warning.patch Patch12030: epoll-limit-paths.patch @@ -1466,7 +1464,6 @@ ApplyOptionalPatch linux-2.6-v4l-dvb-experimental.patch ApplyPatch disable-i8042-check-on-apple-mac.patch ApplyPatch epoll-limit-paths.patch -ApplyPatch block-readahead-block-plug.patch ApplyPatch bsg-fix-sysfs-link-remove-warning.patch @@ -2329,6 +2326,9 @@ fi # and build. %changelog +* Mon Feb 13 2012 Dave Jones 3.2.6-3 +- Linux 3.2.6 + * Mon Feb 13 2012 John W. Linville - mwifiex: handle association failure case correctly - ath9k: Fix kernel panic during driver initilization diff --git a/sources b/sources index 06e37eb..bf9947c 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ 364066fa18767ec0ae5f4e4abcf9dc51 linux-3.2.tar.xz 8cfe037a7a7a356278ec3638e25ad506 compat-wireless-3.3-rc1-2.tar.bz2 -89cb9fb7ed01dccb15510435fb1e5024 patch-3.2.5.xz +0aea8fc5e705c5b1ef68697de9379cef patch-3.2.6.xz