On  5 Aug, Mateusz Guzik wrote:
> Author: mjg
> Date: Wed Aug  5 09:24:38 2020
> New Revision: 363891
> URL: https://svnweb.freebsd.org/changeset/base/363891
> 
> Log:
>   cache: reduce zone alignment to 8 bytes
>   
>   It used to be sizeof of the given struct to accomodate for 32 bit mips
>   doing 64 bit loads, but the same can be achieved with requireing just
>   64 bit alignment.
>   
>   While here reorder struct namecache so that most commonly used fields
>   are closer.
> 
> Modified:
>   head/sys/kern/vfs_cache.c
> 
> Modified: head/sys/kern/vfs_cache.c
> ==============================================================================
> --- head/sys/kern/vfs_cache.c Wed Aug  5 09:24:00 2020        (r363890)
> +++ head/sys/kern/vfs_cache.c Wed Aug  5 09:24:38 2020        (r363891)
> @@ -122,9 +122,9 @@ _Static_assert(sizeof(struct negstate) <= sizeof(struc
>      "the state must fit in a union with a pointer without growing it");
>  
>  struct       namecache {
> -     CK_LIST_ENTRY(namecache) nc_hash;/* hash chain */
>       LIST_ENTRY(namecache) nc_src;   /* source vnode list */
>       TAILQ_ENTRY(namecache) nc_dst;  /* destination vnode list */
> +     CK_LIST_ENTRY(namecache) nc_hash;/* hash chain */
>       struct  vnode *nc_dvp;          /* vnode of parent of name */
>       union {
>               struct  vnode *nu_vp;   /* vnode the name refers to */
> @@ -142,6 +142,8 @@ struct    namecache {
>   * to be stored.  The nc_dotdottime field is used when a cache entry is 
> mapping
>   * both a non-dotdot directory name plus dotdot for the directory's
>   * parent.
> + *
> + * See below for alignment requirement.
>   */
>  struct       namecache_ts {
>       struct  timespec nc_time;       /* timespec provided by fs */
> @@ -150,6 +152,14 @@ struct   namecache_ts {
>       struct namecache nc_nc;
>  };
>  
> +/*
> + * At least mips n32 performs 64-bit accesses to timespec as found
> + * in namecache_ts and requires them to be aligned. Since others
> + * may be in the same spot suffer a little bit and enforce the
> + * alignment for everyone. Note this is a nop for 64-bit platforms.
> + */
> +#define CACHE_ZONE_ALIGNMENT UMA_ALIGNOF(time_t)

time_t is only 32 bits on i386

_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to