Does anyone have Lustre working with recent versions of OpenVZ?

I tried to build Lustre 1.8 against the current OpenVZ kernel (2.6.32-042stab076.5). I get lots of warnings like this:

cc1: warnings being treated as errors
In file included from /root/rpmbuild/BUILD/lustre-1.8.9/lustre/include/linux/lvfs.h:49,
                 from /root/rpmbuild/BUILD/lustre-1.8.9/lustre/include/lvfs.h:48,
                 from /root/rpmbuild/BUILD/lustre-1.8.9/lustre/include/obd_support.h:43,
                 from /root/rpmbuild/BUILD/lustre-1.8.9/lustre/llite/dir.c:53:
/root/rpmbuild/BUILD/lustre-1.8.9/lustre/include/linux/lustre_compat25.h: In function 'll_set_fs_pwd':
/root/rpmbuild/BUILD/lustre-1.8.9/lustre/include/linux/lustre_compat25.h:71: error: passing argument 1 of '_write_lock' from incompatible pointer type
/usr/src/kernels/2.6.32-042stab076.5/include/linux/spinlock_api_smp.h:28: note: expected 'struct rwlock_t *' but argument is of type 'struct spinlock_t *'
/root/rpmbuild/BUILD/lustre-1.8.9/lustre/include/linux/lustre_compat25.h:75: error: passing argument 1 of '__write_unlock' from incompatible pointer type
/usr/src/kernels/2.6.32-042stab076.5/include/linux/spinlock_api_smp.h:356: note: expected 'struct rwlock_t *' but argument is of type 'struct spinlock_t *'

The underlying difference between the stock RH kernel and the OpenVZ kernel is this:

[root@gb240:/usr/local/src/lustre-release] diff  /usr/src/kernels/2.6.32-279.5.2.el6.x86_64/include/linux/fs_struct.h /usr/src/kernels/2.6.32-042stab076.5/include/linux/fs_struct.h
8c8
rwlock_t lock;
---
spinlock_t lock;

When I turned off -Werrors and built anyway the modules loaded, filesystems mounted, I could create and view files but any attempt to do a 'chmod' panicked the kernel (probably not surprising since linux/fs_struct.h is different, and chmod probably required a lock).

1.9 branch shows similar behaviour. I tried to build the most recent version (2.3.63) and get a completely different build error:

make[6]: Entering directory `/root/rpmbuild/BUILD/lustre-2.3.63/lustre/utils'
mount_lustre-mount_utils.o: In function `osd_is_lustre':
/root/rpmbuild/BUILD/lustre-2.3.63/lustre/utils/mount_utils.c:461: undefined reference to `ldiskfs_is_lustre'
mount_lustre-mount_utils.o: In function `osd_fini':
/root/rpmbuild/BUILD/lustre-2.3.63/lustre/utils/mount_utils.c:650: undefined reference to `ldiskfs_fini'
mount_lustre-mount_utils.o: In function `osd_init':
/root/rpmbuild/BUILD/lustre-2.3.63/lustre/utils/mount_utils.c:632: undefined reference to `ldiskfs_init'
mount_lustre-mount_utils.o: In function `osd_enable_quota':
/root/rpmbuild/BUILD/lustre-2.3.63/lustre/utils/mount_utils.c:607: undefined reference to `ldiskfs_enable_quota'
mount_lustre-mount_utils.o: In function `osd_label_lustre':
/root/rpmbuild/BUILD/lustre-2.3.63/lustre/utils/mount_utils.c:577: undefined reference to `ldiskfs_label_lustre'
mount_lustre-mount_utils.o: In function `osd_tune_lustre':
/root/rpmbuild/BUILD/lustre-2.3.63/lustre/utils/mount_utils.c:549: undefined reference to `ldiskfs_tune_lustre'
mount_lustre-mount_utils.o: In function `osd_prepare_lustre':
/root/rpmbuild/BUILD/lustre-2.3.63/lustre/utils/mount_utils.c:517: undefined reference to `ldiskfs_prepare_lustre'
mount_lustre-mount_utils.o: In function `osd_make_lustre':
/root/rpmbuild/BUILD/lustre-2.3.63/lustre/utils/mount_utils.c:487: undefined reference to `ldiskfs_make_lustre'
mount_lustre-mount_utils.o: In function `osd_read_ldd':
/root/rpmbuild/BUILD/lustre-2.3.63/lustre/utils/mount_utils.c:436: undefined reference to `ldiskfs_read_ldd'
mount_lustre-mount_utils.o: In function `osd_write_ldd':
/root/rpmbuild/BUILD/lustre-2.3.63/lustre/utils/mount_utils.c:408: undefined reference to `ldiskfs_write_ldd'
collect2: ld returned 1 exit status

Is there a trick, or should I just abandon this as a lost cause?


--
Fraser McCrossan              SHARCNET
Systems Administrator         University of Western Ontario
fm@sharcnet.ca                http://www.sharcnet.ca
(519) 661-2111 x80360