]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
.27 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Fri, 7 May 2010 22:40:04 +0000 (15:40 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 7 May 2010 22:40:04 +0000 (15:40 -0700)
queue-2.6.27/libata-ensure-ncq-error-result-taskfile-is-fully-initialized-before-returning-it-via-qc-result_tf.patch [new file with mode: 0644]
queue-2.6.27/libata-retry-fs-ios-even-if-it-has-failed-with-ac_err_invalid.patch [new file with mode: 0644]
queue-2.6.27/series
queue-2.6.27/svc-clean-up-deferred-requests-on-transport-destruction.patch [new file with mode: 0644]
queue-2.6.32/pci-ensure-we-re-enable-devices-on-resume.patch
queue-2.6.32/series
queue-2.6.33/series

diff --git a/queue-2.6.27/libata-ensure-ncq-error-result-taskfile-is-fully-initialized-before-returning-it-via-qc-result_tf.patch b/queue-2.6.27/libata-ensure-ncq-error-result-taskfile-is-fully-initialized-before-returning-it-via-qc-result_tf.patch
new file mode 100644 (file)
index 0000000..97a78f7
--- /dev/null
@@ -0,0 +1,26 @@
+From a09bf4cd53b8ab000197ef81f15d50f29ecf973c Mon Sep 17 00:00:00 2001
+From: Jeff Garzik <jeff@garzik.org>
+Date: Thu, 22 Apr 2010 21:59:13 -0400
+Subject: libata: ensure NCQ error result taskfile is fully initialized before returning it via qc->result_tf.
+
+From: Jeff Garzik <jeff@garzik.org>
+
+commit a09bf4cd53b8ab000197ef81f15d50f29ecf973c upstream.
+
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ata/libata-eh.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/ata/libata-eh.c
++++ b/drivers/ata/libata-eh.c
+@@ -1497,6 +1497,7 @@ void ata_eh_analyze_ncq_error(struct ata
+       }
+       /* okay, this error is ours */
++      memset(&tf, 0, sizeof(tf));
+       rc = ata_eh_read_log_10h(dev, &tag, &tf);
+       if (rc) {
+               ata_link_printk(link, KERN_ERR, "failed to read log page 10h "
diff --git a/queue-2.6.27/libata-retry-fs-ios-even-if-it-has-failed-with-ac_err_invalid.patch b/queue-2.6.27/libata-retry-fs-ios-even-if-it-has-failed-with-ac_err_invalid.patch
new file mode 100644 (file)
index 0000000..269cee3
--- /dev/null
@@ -0,0 +1,46 @@
+From 534ead709235b967b659947c55d9130873a432c4 Mon Sep 17 00:00:00 2001
+From: Tejun Heo <tj@kernel.org>
+Date: Thu, 14 Jan 2010 16:18:09 +0900
+Subject: libata: retry FS IOs even if it has failed with AC_ERR_INVALID
+
+From: Tejun Heo <tj@kernel.org>
+
+commit 534ead709235b967b659947c55d9130873a432c4 upstream.
+
+libata currently doesn't retry if a command fails with AC_ERR_INVALID
+assuming that retrying won't get it any further even if retried.
+However, a failure may be classified as invalid through hardware
+glitch (incorrect reading of the error register or firmware bug) and
+there isn't whole lot to gain by not retrying as actually invalid
+commands will be failed immediately.  Also, commands serving FS IOs
+are extremely unlikely to be invalid.  Retry FS IOs even if it's
+marked invalid.
+
+Transient and incorrect invalid failure was seen while debugging
+firmware related issue on Samsung n130 on bko#14314.
+
+  http://bugzilla.kernel.org/show_bug.cgi?id=14314
+
+Signed-off-by: Tejun Heo <tj@kernel.org>
+Reported-by: Johannes Stezenbach <js@sig21.net>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ata/libata-eh.c |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/drivers/ata/libata-eh.c
++++ b/drivers/ata/libata-eh.c
+@@ -1901,8 +1901,9 @@ static void ata_eh_link_autopsy(struct a
+                       qc->err_mask &= ~(AC_ERR_DEV | AC_ERR_OTHER);
+               /* determine whether the command is worth retrying */
+-              if (!(qc->err_mask & AC_ERR_INVALID) &&
+-                  ((qc->flags & ATA_QCFLAG_IO) || qc->err_mask != AC_ERR_DEV))
++              if (qc->flags & ATA_QCFLAG_IO ||
++                  (!(qc->err_mask & AC_ERR_INVALID) &&
++                   qc->err_mask != AC_ERR_DEV))
+                       qc->flags |= ATA_QCFLAG_RETRY;
+               /* accumulate error info */
index 1d717e1fbd9110a43f90300d2ef605b1e9051da4..3e6bc1f9c9b9e28ce08d9a72b3f825e4e6d2b645 100644 (file)
@@ -19,3 +19,6 @@ usb-fix-testing-the-wrong-variable-in-fs_create_by_name.patch
 nfs-d_revalidate-is-too-trigger-happy-with-d_drop.patch
 nfs-rsize-and-wsize-settings-ignored-on-v4-mounts.patch
 i2c-fix-probing-of-fsc-hardware-monitoring-chips.patch
+libata-ensure-ncq-error-result-taskfile-is-fully-initialized-before-returning-it-via-qc-result_tf.patch
+libata-retry-fs-ios-even-if-it-has-failed-with-ac_err_invalid.patch
+svc-clean-up-deferred-requests-on-transport-destruction.patch
diff --git a/queue-2.6.27/svc-clean-up-deferred-requests-on-transport-destruction.patch b/queue-2.6.27/svc-clean-up-deferred-requests-on-transport-destruction.patch
new file mode 100644 (file)
index 0000000..1adc557
--- /dev/null
@@ -0,0 +1,85 @@
+From 22945e4a1c7454c97f5d8aee1ef526c83fef3223 Mon Sep 17 00:00:00 2001
+From: Tom Tucker <tom@opengridcomputing.com>
+Date: Mon, 5 Jan 2009 15:21:19 -0600
+Subject: svc: Clean up deferred requests on transport destruction
+
+From: Tom Tucker <tom@opengridcomputing.com>
+
+commit 22945e4a1c7454c97f5d8aee1ef526c83fef3223 upstream.
+
+A race between svc_revisit and svc_delete_xprt can result in
+deferred requests holding references on a transport that can never be
+recovered because dead transports are not enqueued for subsequent
+processing.
+
+Check for XPT_DEAD in revisit to clean up completing deferrals on a dead
+transport and sweep a transport's deferred queue to do the same for queued
+but unprocessed deferrals.
+
+Signed-off-by: Tom Tucker <tom@opengridcomputing.com>
+Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
+Cc: roma1390 <roma1390@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/sunrpc/svc_xprt.c |   25 ++++++++++++++++++-------
+ 1 file changed, 18 insertions(+), 7 deletions(-)
+
+--- a/net/sunrpc/svc_xprt.c
++++ b/net/sunrpc/svc_xprt.c
+@@ -810,6 +810,11 @@ static void svc_age_temp_xprts(unsigned
+ void svc_delete_xprt(struct svc_xprt *xprt)
+ {
+       struct svc_serv *serv = xprt->xpt_server;
++      struct svc_deferred_req *dr;
++
++      /* Only do this once */
++      if (test_and_set_bit(XPT_DEAD, &xprt->xpt_flags))
++              return;
+       dprintk("svc: svc_delete_xprt(%p)\n", xprt);
+       xprt->xpt_ops->xpo_detach(xprt);
+@@ -824,12 +829,16 @@ void svc_delete_xprt(struct svc_xprt *xp
+        * while still attached to a queue, the queue itself
+        * is about to be destroyed (in svc_destroy).
+        */
+-      if (!test_and_set_bit(XPT_DEAD, &xprt->xpt_flags)) {
+-              BUG_ON(atomic_read(&xprt->xpt_ref.refcount) < 2);
+-              if (test_bit(XPT_TEMP, &xprt->xpt_flags))
+-                      serv->sv_tmpcnt--;
++      if (test_bit(XPT_TEMP, &xprt->xpt_flags))
++              serv->sv_tmpcnt--;
++
++      for (dr = svc_deferred_dequeue(xprt); dr;
++           dr = svc_deferred_dequeue(xprt)) {
+               svc_xprt_put(xprt);
++              kfree(dr);
+       }
++
++      svc_xprt_put(xprt);
+       spin_unlock_bh(&serv->sv_lock);
+ }
+@@ -875,17 +884,19 @@ static void svc_revisit(struct cache_def
+               container_of(dreq, struct svc_deferred_req, handle);
+       struct svc_xprt *xprt = dr->xprt;
+-      if (too_many) {
++      spin_lock(&xprt->xpt_lock);
++      set_bit(XPT_DEFERRED, &xprt->xpt_flags);
++      if (too_many || test_bit(XPT_DEAD, &xprt->xpt_flags)) {
++              spin_unlock(&xprt->xpt_lock);
++              dprintk("revisit canceled\n");
+               svc_xprt_put(xprt);
+               kfree(dr);
+               return;
+       }
+       dprintk("revisit queued\n");
+       dr->xprt = NULL;
+-      spin_lock(&xprt->xpt_lock);
+       list_add(&dr->handle.recent, &xprt->xpt_deferred);
+       spin_unlock(&xprt->xpt_lock);
+-      set_bit(XPT_DEFERRED, &xprt->xpt_flags);
+       svc_xprt_enqueue(xprt);
+       svc_xprt_put(xprt);
+ }
index 1ee8da7fa6c2d3738a88c57412b144b94efe3496..a619e315b1d66bd86fb1611245e3c4fff4e41aeb 100644 (file)
@@ -21,9 +21,13 @@ Signed-off-by: Matthew Garrett <mjg@redhat.com>
 Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
 Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
 
+---
+ drivers/pci/pci.c |    6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
 --- a/drivers/pci/pci.c
 +++ b/drivers/pci/pci.c
-@@ -679,7 +679,7 @@ static void __pci_start_power_transition(struct pci_dev *dev, pci_power_t state)
+@@ -601,7 +601,7 @@ static void __pci_start_power_transition
   */
  int __pci_complete_power_transition(struct pci_dev *dev, pci_power_t state)
  {
@@ -32,7 +36,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
                        pci_platform_power_transition(dev, state) : -EINVAL;
  }
  EXPORT_SYMBOL_GPL(__pci_complete_power_transition);
-@@ -716,10 +716,6 @@ int pci_set_power_state(struct pci_dev *dev, pci_power_t state)
+@@ -638,10 +638,6 @@ int pci_set_power_state(struct pci_dev *
                 */
                return 0;
  
index 0e80b9e7805a9e8d8fe43e0d0b5c08ff2540d4f7..c339bbebc5cab06513cfad2d034fb2f09184f593 100644 (file)
@@ -66,4 +66,15 @@ acpi-introduce-kernel-parameter-acpi_sleep-sci_force_enable.patch
 p54pci-rx-frame-length-check.patch
 drivers-net-wireless-p54-txrx.c-fix-off-by-one-error.patch
 dccp_probe-fix-module-load-dependencies-between-dccp-and-dccp_probe.patch
+kvm-remove-unused-load_segment_descriptor_to_kvm_desct.patch
+kgdb-don-t-needlessly-skip-page_user-test-for-fsl-booke.patch
+r8169-use-correct-barrier-between-cacheable-and-non-cacheable-memory.patch
+r8169-fix-broken-register-writes.patch
+r8169-more-broken-register-writes-workaround.patch
 pci-ensure-we-re-enable-devices-on-resume.patch
+skip-sense-logging-for-some-ata-pass-through-cdbs.patch
+tg3-fix-intx-fallback-when-msi-fails.patch
+xfs-add-a-shrinker-to-background-inode-reclaim.patch
+parisc-set-pci-cls-early-in-boot.patch
+qla2xxx-properly-handle-underrun-completion-statuses.patch
+bnx2-fix-lost-msi-x-problem-on-5709-nics.patch
index ff8153129e460eed7ee179e292fba9c545530b8a..d6b88c6a73d86866733987f13294c34a8edda3cf 100644 (file)
@@ -68,3 +68,15 @@ initramfs-handle-unrecognised-decompressor-when-unpacking.patch
 cred-fix-a-race-in-creds_are_invalid-in-credentials-debugging.patch
 jfs-fix-diallocext-error-in-resizing-filesystem.patch
 drivers-net-wireless-p54-txrx.c-fix-off-by-one-error.patch
+kgdb-don-t-needlessly-skip-page_user-test-for-fsl-booke.patch
+r8169-use-correct-barrier-between-cacheable-and-non-cacheable-memory.patch
+r8169-fix-broken-register-writes.patch
+r8169-more-broken-register-writes-workaround.patch
+ath9k-reorder-ieee80211_free_hw-behind-ath9k_uninit_hw-to-avoid-oops.patch
+skip-sense-logging-for-some-ata-pass-through-cdbs.patch
+tg3-fix-intx-fallback-when-msi-fails.patch
+xfs-add-a-shrinker-to-background-inode-reclaim.patch
+powerpc-reset-kernel-stack-on-cpu-online-from-cede-state.patch
+powerpc-move-checks-in-pseries_mach_cpu_die.patch
+powerpc-reduce-printk-from-pseries_mach_cpu_die.patch
+bnx2-fix-lost-msi-x-problem-on-5709-nics.patch