]> Pileus Git - ~andy/linux/commitdiff
[SCSI] libfc: cache align fc_exch_pool
authorVasu Dev <vasu.dev@intel.com>
Wed, 28 Sep 2011 04:38:08 +0000 (21:38 -0700)
committerJames Bottomley <JBottomley@Parallels.com>
Sun, 2 Oct 2011 17:56:50 +0000 (12:56 -0500)
fix holes and better cache aligned fields.

Signed-off-by: Vasu Dev <vasu.dev@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Yi Zou <yi.zou@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/libfc/fc_exch.c

index 01ff082dc34cfaac127eb62ebc4ad2cd02ef3ff5..a78655b86cb7327b30addc0b63e31a1b4f577848 100644 (file)
@@ -65,16 +65,15 @@ static struct workqueue_struct *fc_exch_workqueue;
  * assigned range of exchanges to per cpu pool.
  */
 struct fc_exch_pool {
+       spinlock_t       lock;
+       struct list_head ex_list;
        u16              next_index;
        u16              total_exches;
 
        /* two cache of free slot in exch array */
        u16              left;
        u16              right;
-
-       spinlock_t       lock;
-       struct list_head ex_list;
-};
+} ____cacheline_aligned_in_smp;
 
 /**
  * struct fc_exch_mgr - The Exchange Manager (EM).
@@ -91,13 +90,13 @@ struct fc_exch_pool {
  * It manages the allocation of exchange IDs.
  */
 struct fc_exch_mgr {
+       struct fc_exch_pool *pool;
+       mempool_t       *ep_pool;
        enum fc_class   class;
        struct kref     kref;
        u16             min_xid;
        u16             max_xid;
-       mempool_t       *ep_pool;
        u16             pool_max_index;
-       struct fc_exch_pool *pool;
 
        /*
         * currently exchange mgr stats are updated but not used.