The Lustre community supports recent point-releases of RHEL/CentOS but those patches don’t seem to come back into existing Lustre releases, since those releases don’t officially support later kernels. I installed client 2.10 thinking it had the best chance of working but encountered huge numbers of errors when compiling!

After tweaking flags, wondering if the odd spin of RHEL or the CPU arch might be at fault and sitting through minutes of ./configure output each attempt - I noticed the errors were mostly the same, undefined variables.

include/linux/wait.h:152:13: note: expected 'struct wait_queue_entry *' but argument is of type 'int *'               
 extern void remove_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);                   

The fix was simple, finding it was less so!

find -type f | xargs sed -i 's/wait_queue_t/wait_queue_entry_t/g; s/ vfs_write/ kernel_write/g'
sed -i '/^Require/d' rpm/kmp-lustre.preamble

This bulk sed runs over the Lustre source code to rename two kernel variables:

The second line removes the requirement for a specific kernel package version; I could have tweaked it to allow for later kernels but the syntax was never happy, removing the line has the same effect anyway.

If you need this hotfix then just insert it at the top of the %build just after the cd in the lustre RPM SPEC file.

Then - I tried to commit this upstream only to find the work had been done!

Lustre LU-10560 - Fixes for 4.14 kernel