[LU-7718] lfs getstripe does not work on bind mount Created: 28/Jan/16  Updated: 13/May/16  Resolved: 14/Mar/16

Status: Resolved
Project: Lustre
Component/s: None
Affects Version/s: Lustre 2.8.0
Fix Version/s: Lustre 2.9.0

Type: Bug Priority: Major
Reporter: Vinayak (Inactive) Assignee: WC Triage
Resolution: Fixed Votes: 0
Labels: patch

Epic/Theme: patch
Severity: 3
Rank (Obsolete): 9223372036854775807

 Description   

Found that lfs getstripe on lustre bind mount fails to return the attributes.

Here are the steps to reproduce the problem.

/mnt/lustre is lustre mount point

  1. mkdir /mnt/lustre/dir
  1. mount --bind /mnt/lustre /home/bind/
  1. ls /home/bind/
    dir
  1. lfs getstripe /home/bind//dir/
    /home/bind//dir/
    can't find fs root for '/home/bind/dir': -19
    Cannot determine default stripe count.: No such device (19)
    can't find fs root for '/home/bind/dir': -19
    Cannot determine default stripe size.: No such device (19)
    stripe_count: stripe_size: stripe_offset: -1


 Comments   
Comment by Gerrit Updater [ 28/Jan/16 ]

Vinayak (vinayakswami.hariharmath@seagate.com) uploaded a new patch: http://review.whamcloud.com/18195
Subject: LU-7718 utils: lfs getstripe does not work on bind mount
Project: fs/lustre-release
Branch: master
Current Patch Set: 1
Commit: f9338774a5afc5689b62fc5dc1151a8db8e805af

Comment by Vinayak (Inactive) [ 28/Jan/16 ]

This behavior is observed because of get_root_path() in which mount point details are obtained going through /etc/mtab which does not list original mount type and fsname (lustre in this case) of bind mount point.
i.e

# cat /etc/mtab 
/dev/mapper/VolGroup-lv_root / ext4 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs rw 0 0
/dev/sda1 /boot ext4 rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
gvfs-fuse-daemon /root/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
/home/build/upstream/lustre-release/lustre/utils/mount.lustre /sbin/mount.lustre none rw,bind 0 0
/dev/loop0 /mnt/mds1 lustre rw,loop=/dev/loop0 0 0
/dev/loop1 /mnt/ost1 lustre rw,loop=/dev/loop1 0 0
/dev/loop2 /mnt/ost2 lustre rw,loop=/dev/loop2 0 0
cli-4@tcp:/lustre /mnt/lustre lustre rw,user_xattr,flock 0 0          =============> lustre mount
/mnt/lustre /home/bind none rw,bind 0 0                                    =============> lustre bind mount not showing original mount info

/proc/mounts is useful in this case

# cat /proc/mounts 
rootfs / rootfs rw 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
devtmpfs /dev devtmpfs rw,relatime,size=1337872k,nr_inodes=334468,mode=755 0 0
devpts /dev/pts devpts rw,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /dev/shm tmpfs rw,relatime 0 0
/dev/mapper/VolGroup-lv_root / ext4 rw,relatime,barrier=1,data=ordered 0 0
/proc/bus/usb /proc/bus/usb usbfs rw,relatime 0 0
/dev/sda1 /boot ext4 rw,relatime,barrier=1,data=ordered 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0
cgroup /cgroup/cpuset cgroup rw,relatime,cpuset 0 0
cgroup /cgroup/cpu cgroup rw,relatime,cpu 0 0
cgroup /cgroup/cpuacct cgroup rw,relatime,cpuacct 0 0
cgroup /cgroup/memory cgroup rw,relatime,memory 0 0
cgroup /cgroup/devices cgroup rw,relatime,devices 0 0
cgroup /cgroup/freezer cgroup rw,relatime,freezer 0 0
cgroup /cgroup/net_cls cgroup rw,relatime,net_cls 0 0
cgroup /cgroup/blkio cgroup rw,relatime,blkio 0 0
/etc/auto.misc /misc autofs rw,relatime,fd=7,pgrp=1625,timeout=300,minproto=5,maxproto=5,indirect 0 0
-hosts /net autofs rw,relatime,fd=13,pgrp=1625,timeout=300,minproto=5,maxproto=5,indirect 0 0
gvfs-fuse-daemon /root/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=0,group_id=0 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
/dev/mapper/VolGroup-lv_root /sbin/mount.lustre ext4 rw,relatime,barrier=1,data=ordered 0 0
/dev/loop0 /mnt/mds1 lustre ro 0 0
/dev/loop1 /mnt/ost1 lustre ro 0 0
/dev/loop2 /mnt/ost2 lustre ro 0 0
192.168.56.104@tcp:/lustre /mnt/lustre lustre rw,flock,user_xattr 0 0   ===============> lustre mount 
192.168.56.104@tcp:/lustre /home/bind lustre rw,flock,user_xattr 0 0  ===============> lustre bind mount 

Patch for this fix can be tracked at http://review.whamcloud.com/#/c/18195/

Comment by Gerrit Updater [ 14/Mar/16 ]

Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/18195/
Subject: LU-7718 utils: lfs getstripe does not work on bind mount
Project: fs/lustre-release
Branch: master
Current Patch Set:
Commit: 7e41081c512afcb883582e9d9c24cd04e77d0b27

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