]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.31/patches.drivers/libfc-updated-comment-for-orde.diff
Move xen patchset to new version's subdir.
[ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.drivers / libfc-updated-comment-for-orde.diff
diff --git a/src/patches/suse-2.6.27.31/patches.drivers/libfc-updated-comment-for-orde.diff b/src/patches/suse-2.6.27.31/patches.drivers/libfc-updated-comment-for-orde.diff
new file mode 100644 (file)
index 0000000..02e8d8a
--- /dev/null
@@ -0,0 +1,56 @@
+From: Vasu Dev <vasu.dev@intel.com>
+Subject: [FcOE] updated comment for order of em and ex locks
+References: bnc #459142
+
+The fc_exch is public but em_lock is static to fc_exch.c,
+so updated comment only in fc_exch.c on order of these locks.
+
+Also removed seq.f_ctl from comments since this field is
+already removed.
+
+Signed-off-by: Vasu Dev <vasu.dev@intel.com>
+Acked-by: Bernhard Walle <bwalle@suse.de>
+---
+
+ drivers/scsi/libfc/fc_exch.c |    5 ++++-
+ include/scsi/libfc.h         |    5 ++---
+ 2 files changed, 6 insertions(+), 4 deletions(-)
+
+
+--- a/drivers/scsi/libfc/fc_exch.c
++++ b/drivers/scsi/libfc/fc_exch.c
+@@ -68,7 +68,8 @@ static struct kmem_cache *fc_em_cachep;
+  */
+ struct fc_exch_mgr {
+       enum fc_class   class;          /* default class for sequences */
+-      spinlock_t      em_lock;        /* exchange manager lock */
++      spinlock_t      em_lock;        /* exchange manager lock,
++                                         must be taken before ex_lock */
+       u16             last_xid;       /* last allocated exchange ID */
+       u16             min_xid;        /* min exchange ID */
+       u16             max_xid;        /* max exchange ID */
+@@ -179,6 +180,8 @@ static struct fc_seq *fc_seq_start_next_
+  * sequence allocation and deallocation must be locked.
+  *  - exchange refcnt can be done atomicly without locks.
+  *  - sequence allocation must be locked by exch lock.
++ *  - If the em_lock and ex_lock must be taken at the same time, then the
++ *    em_lock must be taken before the ex_lock.
+  */
+ /*
+--- a/include/scsi/libfc.h
++++ b/include/scsi/libfc.h
+@@ -299,11 +299,10 @@ struct fc_seq {
+ /*
+  * Exchange.
+  *
+- * Locking notes: The ex_lock protects changes to the following fields:
+- *    esb_stat, f_ctl, seq.ssb_stat, seq.f_ctl.
++ * Locking notes: The ex_lock protects following items:
++ *    state, esb_stat, f_ctl, seq.ssb_stat
+  *    seq_id
+  *    sequence allocation
+- *
+  */
+ struct fc_exch {
+       struct fc_exch_mgr *em;         /* exchange manager */