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(a)sharcnet.ca
http://www.sharcnet.ca
(519) 661-2111 x80360