We can reorder pg_color and flags to recover two pad bytes, and thus
avoid increasing sizeof(struct vm_object). In particular, the current
layout looks like this:
...
/* 120 | 4 */ volatile int generation;
/* 124 | 4 */ int cleangeneration;
/* 128 | 4 */ volatile u_int ref_count;
/* 132 | 4 */ int shadow_count;
/* 136 | 1 */ vm_memattr_t memattr;
/* 137 | 1 */ objtype_t type;
/* 138 | 2 */ u_short flags;
/* 140 | 2 */ u_short pg_color;
/* XXX 2-byte hole */
/* 144 | 4 */ blockcount_t paging_in_progress;
/* 148 | 4 */ blockcount_t busy;
/* 152 | 4 */ int resident_page_count;
/* XXX 4-byte hole */
/* 160 | 8 */ struct vm_object *backing_object;
/* 168 | 8 */ vm_ooffset_t backing_object_offset;
...
I believe the offset of "flags" is part of the external kernel ABI, so
this change would not be MFCed.