diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2011-02-15 11:45:03 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-02-15 11:45:03 -0800 |
commit | 4311ad2dde5f42e8047da970e8cf2523c6657d29 (patch) | |
tree | d671e7cffaac0d5ba4402f58ee0cf9ab30cd2f83 | |
parent | 77cdffb9553fa2a9bbe0822a96113b72bd50e934 (diff) | |
download | longterm-queue-2.6.33-4311ad2dde5f42e8047da970e8cf2523c6657d29.tar.gz |
.33
4 files changed, 167 insertions, 0 deletions
diff --git a/queue-2.6.33/dm-dont-take-i_mutex-to-change-device-size.patch b/queue-2.6.33/dm-dont-take-i_mutex-to-change-device-size.patch new file mode 100644 index 0000000..3cce814 --- /dev/null +++ b/queue-2.6.33/dm-dont-take-i_mutex-to-change-device-size.patch @@ -0,0 +1,49 @@ +From c217649bf2d60ac119afd71d938278cffd55962b Mon Sep 17 00:00:00 2001 +From: Mike Snitzer <snitzer@redhat.com> +Date: Thu, 13 Jan 2011 19:53:46 +0000 +Subject: dm: dont take i_mutex to change device size + +From: Mike Snitzer <snitzer@redhat.com> + +commit c217649bf2d60ac119afd71d938278cffd55962b upstream. + +No longer needlessly hold md->bdev->bd_inode->i_mutex when changing the +size of a DM device. This additional locking is unnecessary because +i_size_write() is already protected by the existing critical section in +dm_swap_table(). DM already has a reference on md->bdev so the +associated bd_inode may be changed without lifetime concerns. + +A negative side-effect of having held md->bdev->bd_inode->i_mutex was +that a concurrent DM device resize and flush (via fsync) would deadlock. +Dropping md->bdev->bd_inode->i_mutex eliminates this potential for +deadlock. The following reproducer no longer deadlocks: + https://www.redhat.com/archives/dm-devel/2009-July/msg00284.html + +Signed-off-by: Mike Snitzer <snitzer@redhat.com> +Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> +Signed-off-by: Alasdair G Kergon <agk@redhat.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/md/dm.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/md/dm.c ++++ b/drivers/md/dm.c +@@ -2039,13 +2039,14 @@ static void event_callback(void *context + wake_up(&md->eventq); + } + ++/* ++ * Protected by md->suspend_lock obtained by dm_swap_table(). ++ */ + static void __set_size(struct mapped_device *md, sector_t size) + { + set_capacity(md->disk, size); + +- mutex_lock(&md->bdev->bd_inode->i_mutex); + i_size_write(md->bdev->bd_inode, (loff_t)size << SECTOR_SHIFT); +- mutex_unlock(&md->bdev->bd_inode->i_mutex); + } + + /* diff --git a/queue-2.6.33/dm-mpath-disable-blk_abort_queue.patch b/queue-2.6.33/dm-mpath-disable-blk_abort_queue.patch new file mode 100644 index 0000000..da670aa --- /dev/null +++ b/queue-2.6.33/dm-mpath-disable-blk_abort_queue.patch @@ -0,0 +1,81 @@ +From 09c9d4c9b6a2b5909ae3c6265e4cd3820b636863 Mon Sep 17 00:00:00 2001 +From: Mike Snitzer <snitzer@redhat.com> +Date: Thu, 13 Jan 2011 19:59:46 +0000 +Subject: dm mpath: disable blk_abort_queue + +From: Mike Snitzer <snitzer@redhat.com> + +commit 09c9d4c9b6a2b5909ae3c6265e4cd3820b636863 upstream. + +Revert commit 224cb3e981f1b2f9f93dbd49eaef505d17d894c2 + dm: Call blk_abort_queue on failed paths + +Multipath began to use blk_abort_queue() to allow for +lower latency path deactivation. This was found to +cause list corruption: + + the cmd gets blk_abort_queued/timedout run on it and the scsi eh + somehow is able to complete and run scsi_queue_insert while + scsi_request_fn is still trying to process the request. + + https://www.redhat.com/archives/dm-devel/2010-November/msg00085.html + +Signed-off-by: Mike Snitzer <snitzer@redhat.com> +Signed-off-by: Alasdair G Kergon <agk@redhat.com> +Cc: Mike Anderson <andmike@linux.vnet.ibm.com> +Cc: Mike Christie <michaelc@cs.wisc.edu> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/md/dm-mpath.c | 12 ------------ + 1 file changed, 12 deletions(-) + +--- a/drivers/md/dm-mpath.c ++++ b/drivers/md/dm-mpath.c +@@ -33,7 +33,6 @@ struct pgpath { + unsigned fail_count; /* Cumulative failure count */ + + struct dm_path path; +- struct work_struct deactivate_path; + struct work_struct activate_path; + }; + +@@ -117,7 +116,6 @@ static struct workqueue_struct *kmultipa + static void process_queued_ios(struct work_struct *work); + static void trigger_event(struct work_struct *work); + static void activate_path(struct work_struct *work); +-static void deactivate_path(struct work_struct *work); + + + /*----------------------------------------------- +@@ -130,7 +128,6 @@ static struct pgpath *alloc_pgpath(void) + + if (pgpath) { + pgpath->is_active = 1; +- INIT_WORK(&pgpath->deactivate_path, deactivate_path); + INIT_WORK(&pgpath->activate_path, activate_path); + } + +@@ -142,14 +139,6 @@ static void free_pgpath(struct pgpath *p + kfree(pgpath); + } + +-static void deactivate_path(struct work_struct *work) +-{ +- struct pgpath *pgpath = +- container_of(work, struct pgpath, deactivate_path); +- +- blk_abort_queue(pgpath->path.dev->bdev->bd_disk->queue); +-} +- + static struct priority_group *alloc_priority_group(void) + { + struct priority_group *pg; +@@ -958,7 +947,6 @@ static int fail_path(struct pgpath *pgpa + pgpath->path.dev->name, m->nr_valid_paths); + + schedule_work(&m->trigger_event); +- queue_work(kmultipathd, &pgpath->deactivate_path); + + out: + spin_unlock_irqrestore(&m->lock, flags); diff --git a/queue-2.6.33/ieee80211-correct-ieee80211_addba_param_buf_size_mask-macro.patch b/queue-2.6.33/ieee80211-correct-ieee80211_addba_param_buf_size_mask-macro.patch new file mode 100644 index 0000000..5f1bf67 --- /dev/null +++ b/queue-2.6.33/ieee80211-correct-ieee80211_addba_param_buf_size_mask-macro.patch @@ -0,0 +1,34 @@ +From 8d661f1e462d50bd83de87ee628aaf820ce3c66c Mon Sep 17 00:00:00 2001 +From: Amitkumar Karwar <akarwar@marvell.com> +Date: Tue, 11 Jan 2011 16:14:24 -0800 +Subject: ieee80211: correct IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK macro + +From: Amitkumar Karwar <akarwar@marvell.com> + +commit 8d661f1e462d50bd83de87ee628aaf820ce3c66c upstream. + +It is defined in include/linux/ieee80211.h. As per IEEE spec. +bit6 to bit15 in block ack parameter represents buffer size. +So the bitmask should be 0xFFC0. + +Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> +Signed-off-by: Bing Zhao <bzhao@marvell.com> +Reviewed-by: Johannes Berg <johannes@sipsolutions.net> +Signed-off-by: John W. Linville <linville@tuxdriver.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + include/linux/ieee80211.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/include/linux/ieee80211.h ++++ b/include/linux/ieee80211.h +@@ -910,7 +910,7 @@ struct ieee80211_ht_info { + /* block-ack parameters */ + #define IEEE80211_ADDBA_PARAM_POLICY_MASK 0x0002 + #define IEEE80211_ADDBA_PARAM_TID_MASK 0x003C +-#define IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK 0xFFA0 ++#define IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK 0xFFC0 + #define IEEE80211_DELBA_PARAM_TID_MASK 0xF000 + #define IEEE80211_DELBA_PARAM_INITIATOR_MASK 0x0800 + diff --git a/queue-2.6.33/series b/queue-2.6.33/series index 3944f1f..7bf3546 100644 --- a/queue-2.6.33/series +++ b/queue-2.6.33/series @@ -320,3 +320,6 @@ tpm_tis-use-timeouts-returned-from-tpm.patch selinux-define-permissions-for-dcb-netlink-messages.patch selinux-do-not-compute-transition-labels-on-mountpoint-labeled-filesystems.patch tpm-autodetect-itpm-devices.patch +ieee80211-correct-ieee80211_addba_param_buf_size_mask-macro.patch +dm-dont-take-i_mutex-to-change-device-size.patch +dm-mpath-disable-blk_abort_queue.patch |