Fix struct ht_lock padding in arc.c.

This was leading to a compilation error because in Linux, sizeof
(kmutex_t) can be larger than 64 in some circumstances (e.g. with
debugging and lockdep enabled).

The code was previously fixed to align the structure to 256 bytes,
but a better fix is to align it to the next multiple of 64 bytes.
This commit is contained in:
Ricardo M. Correia 2010-03-09 13:49:36 -08:00 committed by Brian Behlendorf
parent e5fd6fb97f
commit ba0a56bb2a
1 changed files with 3 additions and 2 deletions

View File

@ -517,12 +517,13 @@ static void arc_evict_ghost(arc_state_t *state, uint64_t spa, int64_t bytes);
* Hash table routines
*/
#define HT_LOCK_PAD 256
#define HT_LOCK_ALIGN 64
#define HT_LOCK_PAD (P2NPHASE(sizeof (kmutex_t), (HT_LOCK_ALIGN)))
struct ht_lock {
kmutex_t ht_lock;
#ifdef _KERNEL
unsigned char pad[(HT_LOCK_PAD - sizeof (kmutex_t))];
unsigned char pad[HT_LOCK_PAD];
#endif
};