diff options
author | Vasu Dev <vasu.dev@intel.com> | 2011-09-28 00:38:02 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2011-10-02 13:56:26 -0400 |
commit | 49a198898e889038c6601288cd2b0e037edada24 (patch) | |
tree | 4f233125a6e946cc03afd80b41e9343861f57022 /include/scsi | |
parent | ed26cfece6177310ad8f5896651a3187ce02711c (diff) |
[SCSI] libfc: cache align struct fc_exch fields
cache aligned xid and ex_lock beside
removing holes.
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>
Diffstat (limited to 'include/scsi')
-rw-r--r-- | include/scsi/libfc.h | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h index 05e2583d8fa6..5d1a758e0595 100644 --- a/include/scsi/libfc.h +++ b/include/scsi/libfc.h | |||
@@ -406,35 +406,32 @@ struct fc_seq { | |||
406 | * sequence allocation | 406 | * sequence allocation |
407 | */ | 407 | */ |
408 | struct fc_exch { | 408 | struct fc_exch { |
409 | spinlock_t ex_lock; | ||
410 | atomic_t ex_refcnt; | ||
411 | enum fc_class class; | ||
409 | struct fc_exch_mgr *em; | 412 | struct fc_exch_mgr *em; |
410 | struct fc_exch_pool *pool; | 413 | struct fc_exch_pool *pool; |
411 | u32 state; | ||
412 | u16 xid; | ||
413 | struct list_head ex_list; | 414 | struct list_head ex_list; |
414 | spinlock_t ex_lock; | ||
415 | atomic_t ex_refcnt; | ||
416 | struct delayed_work timeout_work; | ||
417 | struct fc_lport *lp; | 415 | struct fc_lport *lp; |
416 | u32 esb_stat; | ||
417 | u8 state; | ||
418 | u8 fh_type; | ||
419 | u8 seq_id; | ||
420 | u8 encaps; | ||
421 | u16 xid; | ||
418 | u16 oxid; | 422 | u16 oxid; |
419 | u16 rxid; | 423 | u16 rxid; |
420 | u32 oid; | 424 | u32 oid; |
421 | u32 sid; | 425 | u32 sid; |
422 | u32 did; | 426 | u32 did; |
423 | u32 esb_stat; | ||
424 | u32 r_a_tov; | 427 | u32 r_a_tov; |
425 | u8 seq_id; | ||
426 | u8 encaps; | ||
427 | u32 f_ctl; | 428 | u32 f_ctl; |
428 | u8 fh_type; | 429 | struct fc_seq seq; |
429 | enum fc_class class; | ||
430 | struct fc_seq seq; | ||
431 | |||
432 | void (*resp)(struct fc_seq *, struct fc_frame *, void *); | 430 | void (*resp)(struct fc_seq *, struct fc_frame *, void *); |
433 | void *arg; | 431 | void *arg; |
434 | |||
435 | void (*destructor)(struct fc_seq *, void *); | 432 | void (*destructor)(struct fc_seq *, void *); |
436 | 433 | struct delayed_work timeout_work; | |
437 | }; | 434 | } ____cacheline_aligned_in_smp; |
438 | #define fc_seq_exch(sp) container_of(sp, struct fc_exch, seq) | 435 | #define fc_seq_exch(sp) container_of(sp, struct fc_exch, seq) |
439 | 436 | ||
440 | 437 | ||