From: Greg Kroah-Hartman Date: Fri, 7 May 2010 22:40:04 +0000 (-0700) Subject: .27 patches X-Git-Tag: v2.6.32.13~11 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d4437301f60c13390f3f0c528fc14546a008b3a7;p=thirdparty%2Fkernel%2Fstable-queue.git .27 patches --- 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 index 00000000000..97a78f779d9 --- /dev/null +++ b/queue-2.6.27/libata-ensure-ncq-error-result-taskfile-is-fully-initialized-before-returning-it-via-qc-result_tf.patch @@ -0,0 +1,26 @@ +From a09bf4cd53b8ab000197ef81f15d50f29ecf973c Mon Sep 17 00:00:00 2001 +From: Jeff Garzik +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 + +commit a09bf4cd53b8ab000197ef81f15d50f29ecf973c upstream. + +Signed-off-by: Jeff Garzik +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..269cee3c7ba --- /dev/null +++ b/queue-2.6.27/libata-retry-fs-ios-even-if-it-has-failed-with-ac_err_invalid.patch @@ -0,0 +1,46 @@ +From 534ead709235b967b659947c55d9130873a432c4 Mon Sep 17 00:00:00 2001 +From: Tejun Heo +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 + +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 +Reported-by: Johannes Stezenbach +Signed-off-by: Jeff Garzik +Signed-off-by: Greg Kroah-Hartman + +--- + 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 */ diff --git a/queue-2.6.27/series b/queue-2.6.27/series index 1d717e1fbd9..3e6bc1f9c9b 100644 --- a/queue-2.6.27/series +++ b/queue-2.6.27/series @@ -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 index 00000000000..1adc557eba4 --- /dev/null +++ b/queue-2.6.27/svc-clean-up-deferred-requests-on-transport-destruction.patch @@ -0,0 +1,85 @@ +From 22945e4a1c7454c97f5d8aee1ef526c83fef3223 Mon Sep 17 00:00:00 2001 +From: Tom Tucker +Date: Mon, 5 Jan 2009 15:21:19 -0600 +Subject: svc: Clean up deferred requests on transport destruction + +From: Tom Tucker + +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 +Signed-off-by: J. Bruce Fields +Cc: roma1390 +Signed-off-by: Greg Kroah-Hartman + +--- + 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); + } diff --git a/queue-2.6.32/pci-ensure-we-re-enable-devices-on-resume.patch b/queue-2.6.32/pci-ensure-we-re-enable-devices-on-resume.patch index 1ee8da7fa6c..a619e315b1d 100644 --- a/queue-2.6.32/pci-ensure-we-re-enable-devices-on-resume.patch +++ b/queue-2.6.32/pci-ensure-we-re-enable-devices-on-resume.patch @@ -21,9 +21,13 @@ Signed-off-by: Matthew Garrett Signed-off-by: Jesse Barnes Signed-off-by: Greg Kroah-Hartman +--- + 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 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; diff --git a/queue-2.6.32/series b/queue-2.6.32/series index 0e80b9e7805..c339bbebc5c 100644 --- a/queue-2.6.32/series +++ b/queue-2.6.32/series @@ -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 diff --git a/queue-2.6.33/series b/queue-2.6.33/series index ff8153129e4..d6b88c6a73d 100644 --- a/queue-2.6.33/series +++ b/queue-2.6.33/series @@ -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