[lustre-discuss] Compiling lustre-2.10.6

Tung-Han Hsieh thhsieh at twcp1.phys.ntu.edu.tw
Tue Mar 12 09:36:59 PDT 2019

Dear Farrell,

Thank you very much for your response. Unfortunately, the wiki does
not cover our special environment.

We need to build Lustre Master (i.e., to handle MDS and OSS) on a
Debian Linux 8.X/9.X operating system, with LDSIKFS as the backend
for MDT and OST. This is because we already have a lot of OSS with
a lot of data. They were upgraded from Lustre-1.8.8 to Lustre-2.5.3.
These servers are all installed Debian 8.11 Linux system. We just
want to keep them running smoothly to provide a stable computing

I saw that the Lustre Master with LDISKFS is tightly bond to RHEL
6.4 or 7.3. It is quite unfortunate not our case. So we have to
find some non-standard way to build it for our system.

>From Lustre-1.6.X, 1.8.X, and up to 2.5.X, we got the source code
of Linux kernel from SuSE, patch it, and then build lustre source.
For example, for 2.5.X, we get the following Linux kernel from


and patch it via the following commands:

    cd linux-3.0.101-138.gcdbe806
    ln -s ../lustre-2.5.X/lustre/kernel_patches/series/3.0-sles11sp3.series series
    ln -s ../lustre-2.5.X/lustre/kernel_patches/patches patches
    quilt push -av

Then we build Linux kernel, and build Lustre with the following

    cd lustre-2.5.X
    ./configure --prefix=/opt/lustre --with-linux=/usr/src/linux-3.0.101-138.gcdbe806 --with-o2ib=no
    make install

These are standard methods we found in the Lustre-1.8.X manuals. It
works before, and the resulting system ran without problem for a long
time. So for Lustre-2.10.X, we want to try similar method. Now we
encountered the compiling errors of LDISKFS_HTREE_EOF_32BIT and
LDISKFS_HTREE_EOF_64BIT not defined.

I guess that these symbols are defined somewhere in RHEL systems,
but unfortunately not available in other Linux distributions. I
searched the entire source code of lustre-2.10.6, including all the
patch files coming with the source code, there is no definition of
these two symbols. So maybe I should ask what are the definition
of these symbols ? We could just add their definitions into the
header file "ldiskfs/ldiskfs.h" to complete the compilation.

ps. In Debian Linux system, we already successfully compiled Lustre-2.10.5
    with ZFS backend. It works very nice in one of our clusters. However,
    this time we need Lustre-2.10.X with LDISKFS backend, because there
    are a lot of OSTs which are formatted with LDISKFS. The total size of
    data is more than 50TB which is impossible to back it up and reformat.

Thanks very much.


On Tue, Mar 12, 2019 at 03:55:13PM +0000, Patrick Farrell wrote:
> Hsieh,
> We have instructions for compiling from source here on our Wiki:
> https://wiki.whamcloud.com/display/PUB/Building+Lustre+from+Source
> Are you following those?  If not, I'd suggest it - Your problem looks likely to be an error in the build process.
> We also have prebuilt 2.10.6 packages for many platforms:
> https://downloads.whamcloud.com/public/lustre/
> - Patrick
> ________________________________
> From: lustre-discuss <lustre-discuss-bounces at lists.lustre.org> on behalf of Tung-Han Hsieh <thhsieh at twcp1.phys.ntu.edu.tw>
> Sent: Tuesday, March 12, 2019 9:22:57 AM
> To: lustre-discuss at lists.lustre.org
> Subject: [lustre-discuss] Compiling lustre-2.10.6
> Dear All,
> I am trying to compile lustre-2.10.6 from source code. During
> compilation, there are undefined symbols:
> ==========================================================================
>   CC [M]  /home/thhsieh/lustre/L-2.10.6/lustre-2.10.6/lustre/osd-ldiskfs/osd_handler.o
> In file included from /home/thhsieh/lustre/L-2.10.6/lustre-2.10.6/lustre/osd-ldiskfs/osd_handler.c:72:0:
> /home/thhsieh/lustre/L-2.10.6/lustre-2.10.6/lustre/osd-ldiskfs/osd_internal.h: In function 'ldiskfs_get_htree_eof':
> /home/thhsieh/lustre/L-2.10.6/lustre-2.10.6/lustre/osd-ldiskfs/osd_internal.h:1254:10: error: 'LDISKFS_HTREE_EOF_32BIT' undeclared (first use in this function)
>    return LDISKFS_HTREE_EOF_32BIT;
>           ^
> /home/thhsieh/lustre/L-2.10.6/lustre-2.10.6/lustre/osd-ldiskfs/osd_internal.h:1254:10: note: each undeclared identifier is reported only once for each function it appears in
> /home/thhsieh/lustre/L-2.10.6/lustre-2.10.6/lustre/osd-ldiskfs/osd_internal.h:1256:10: error: 'LDISKFS_HTREE_EOF_64BIT' undeclared (first use in this function)
>    return LDISKFS_HTREE_EOF_64BIT;
>           ^
> /home/thhsieh/lustre/L-2.10.6/lustre-2.10.6/lustre/osd-ldiskfs/osd_handler.c: In function 'osd_check_lmv':
> /home/thhsieh/lustre/L-2.10.6/lustre-2.10.6/lustre/osd-ldiskfs/osd_handler.c:968:19: error: 'LDISKFS_HTREE_EOF_64BIT' undeclared (first use in this function)
>     filp->f_pos != LDISKFS_HTREE_EOF_64BIT);
>                    ^
> In file included from /home/thhsieh/lustre/L-2.10.6/lustre-2.10.6/lustre/osd-ldiskfs/osd_handler.c:72:0:
> /home/thhsieh/lustre/L-2.10.6/lustre-2.10.6/lustre/osd-ldiskfs/osd_internal.h: In function 'ldiskfs_get_htree_eof':
> /home/thhsieh/lustre/L-2.10.6/lustre-2.10.6/lustre/osd-ldiskfs/osd_internal.h:1257:1: error: control reaches end of non-void function [-Werror=return-type]
>  }
>  ^
> cc1: all warnings being treated as errors
> scripts/Makefile.build:321: recipe for target '/home/thhsieh/lustre/L-2.10.6/lustre-2.10.6/lustre/osd-ldiskfs/osd_handler.o' failed
> ==========================================================================
> I searched the source code, only find the definition of LDISKFS_HTREE_EOF
> in ldiskfs/ldiskfs.h:
> #define LDISKFS_HTREE_EOF       0x7fffffff
> but cannot find the definition of LDISKFS_HTREE_EOF_32BIT and
> LDISKFS_HTREE_EOF_64BIT. Could anyone tell me how to fix this problem ?
> Thanks very much.
> T.H.Hsieh
> _______________________________________________
> lustre-discuss mailing list
> lustre-discuss at lists.lustre.org
> http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org

More information about the lustre-discuss mailing list