[LU-12978] FSTYPE=zfs ./lustre/tests/llmount.sh Fails with "mount.lustre: lustre-mdt1/mdt1 has not been formatted with mkfs.lustre or the backend filesystem type is not supported by this tool" Created: 16/Nov/19  Updated: 17/Nov/19  Resolved: 17/Nov/19

Status: Closed
Project: Lustre
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Minor
Reporter: Arshad Hussain Assignee: Andreas Dilger
Resolution: Not a Bug Votes: 0
Labels: zfs
Environment:

FSTYPE=zfs
Singe Node Client/Server
Combined MDT/MGS


Severity: 3
Rank (Obsolete): 9223372036854775807

 Description   

Running llmount.sh with FSTYPE=zfs fails with "mount.lustre: lustre-mdt1/mdt1 has not been formatted with mkfs.lustre or the backend filesystem type is not supported by this tool".

This was seen while working on LU-3606 (ZFS). The goal is to create a very small working ZFS instance for dev purpose. This is combined MDT/MGS. Changing test-framework.sh to using mount.lustre binary worked for me. This may just not be a bug. I am raising it to understand if this is really a bug or something to do with my environment. What are the difference of passing -t lustre vs using mount.lustre. I thought they ultimately boils down to same.

 

This fails

# FSTYPE=zfs bash ./lustre/tests/llmount.sh
Stopping clients: mrpel7 /mnt/lustre (opts:-f)
Stopping clients: mrpel7 /mnt/lustre2 (opts:-f)
mrpel7: executing set_hostid
Loading modules from /root/mrp/lustre-xx-3.10/lustre-release/lustre/tests/..
detected 2 online CPUs by sysfs
Force libcfs to create 2 CPU partitions
../lnet/lnet/lnet options: 'networks=tcp0(eth1) accept=all'
quota/lquota options: 'hash_lqs_cur_bits=3'
Formatting mgs, mds, osts
Format mds1: lustre-mdt1/mdt1
Format ost1: lustre-ost1/ost1
Format ost2: lustre-ost2/ost2
Checking servers environments
Checking clients mrpel7 environments
Loading modules from /root/mrp/lustre-xx-3.10/lustre-release/lustre/tests/..
detected 2 online CPUs by sysfs
Force libcfs to create 2 CPU partitions
Setup mgs, mdt, osts
Starting mds1: lustre-mdt1/mdt1 /mnt/lustre-mds1
mount.lustre: lustre-mdt1/mdt1 has not been formatted with mkfs.lustre or the backend filesystem type is not supported by this tool

 

This was fix by changing test-framework.sh

diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh
index 31e7ec3..a363fbb 100755
--- a/lustre/tests/test-framework.sh
+++ b/lustre/tests/test-framework.sh
@@ -2003,8 +2003,12 @@ mount_facet() {
 if [ -f $TMP/test-lu482-trigger ]; then
 RC=2
 else
+ #do_facet ${facet} \
+ # "mkdir -p $mntpt; $MOUNT_CMD $opts $dm_dev $mntpt"
+ local ML_CMD=/usr/sbin/mount.lustre
 do_facet ${facet} \
- "mkdir -p $mntpt; $MOUNT_CMD $opts $dm_dev $mntpt"
+ "mkdir -p $mntpt; $ML_CMD $opts $dm_dev $mntpt"
 RC=${PIPESTATUS[0]}
 fi

Essentially changing from using mount -t lustre to using mount.lustre binary makes it work.

My e2fsprogs version

# rpm -qa | grep e2fsprogs-1
e2fsprogs-1.45.2.wc1-0.el7.x86_64

My setup and compile lustre

# sh ./autogen.sh
# ./configure --enable-client --enable-server --disable-ldiskfs --with-linux=/usr/src/kernels/3.10.0-862.9.1.el7_lustre.x86_64/ --with-zfs=/root/zfs/zfs/zfs-0.7.12/ --with-spl=/root/zfs/spl/spl-0.7.12/
# make -j2
# make install

 



 Comments   
Comment by Andreas Dilger [ 16/Nov/19 ]

Arshad, this is probably because "mount -t lustre" is looking for the binary "/sbin/mount.lustre" and if that is not found then it doesn't know how to mount the "lustre" filesystem type. Normally the test-framework.sh scripts will create a bind mount from "$LUSTRE/lustre/utils/mount.lustre" to "/sbin/mount.lustre" so that this works. On rare occasions this can become incorrect (e.g. building and running from two different Lustre build directories, or if the options changed from the previous build of Lustre), so the old bind mount must be unmounted manually and restarted.

Comment by Arshad Hussain [ 17/Nov/19 ]

Andreas, Thanks!!

I get it now.

Generated at Sat Feb 10 02:57:18 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.