Re: Infernalis => Jewel: ceph-fuse regression concerning the automatic mount at boot?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Now, I have a explanation and it's _very_ strange, absolutely not related
to a problem of Unix rights. For memory, my client node is an updated
Ubuntu Trusty and I use ceph-fuse. Here is my fstab line:

~# grep ceph /etc/fstab
id=cephfs,keyring=/etc/ceph/ceph.client.cephfs.keyring,client_mountpoint=/ /mnt/ fuse.ceph noatime,nonempty,defaults,_netdev 0 0

My VM is in the Infernalis state where cephfs is well automatically
mounted at boot. I have just modified the file /sbin/mount.fuse.ceph
(it's shell script) to add these 2 lines:

----------------------------------------------------------------
echo arguments are "$@" >/tmp/mount.fuse.ceph.log

[...]

# The command launched by /sbin/mount.fuse.ceph via an "exec".
echo ceph-fuse $cephargs $2 $3 $opts >>/tmp/mount.fuse.ceph.log
----------------------------------------------------------------

And I have rebooted. After the reboot, big surprise with this:

~# cat /tmp/mount.fuse.ceph.log 
arguments are id=cephfs,keyring=/etc/ceph/ceph.client.cephfs.keyring,client_mountpoint= /mnt -o rw,_netdev,noatime,nonempty
ceph-fuse --id=cephfs --keyring=/etc/ceph/ceph.client.cephfs.keyring --client_mountpoint= /mnt -o rw,noatime,nonempty

Yes, this is not a misprint, there is no "/" after "client_mountpoint=".
But, with Infernalis, it works even without the "/". 

~# ceph-fuse --id=cephfs --keyring=/etc/ceph/ceph.client.cephfs.keyring --client_mountpoint= /mnt -o rw,noatime,nonempty && echo OK
ceph-fuse[1380]: starting ceph client
2016-06-02 04:09:37.340050 7f69590e9780 -1 init, newargv = 0x7f695b7ae0b0 newargc=13
ceph-fuse[1380]: starting fuse
OK

And with Jewel, it's simple, I have exactly the same thing, except
that, without the "/", ceph-fuse fails:

~# ceph -v
ceph version 10.2.1 (3a66dd4f30852819c1bdaa8ec23c795d4ad77269)

~# ceph-fuse --id=cephfs --keyring=/etc/ceph/ceph.client.cephfs.keyring --client_mountpoint= /mnt -o rw,noatime,nonempty && echo OK
ceph-fuse[1302]: starting ceph client
2016-06-02 04:30:25.840514 7f9ec24b2e80 -1 init, newargv = 0x7f9ecba9ffd0 newargc=13
ceph-fuse[1302]: ceph mount failed with (1) Operation not permitted
ceph-fuse[1300]: mount failed: (1) Operation not permitted

By the way, it seems to me a sane behavior to have a fail with a not clean option.

So, this is not a Infernalis=>Jewel regression at all. The problem is:
the arguments which are given to /sbin/mount.fuse.ceph are bad.

A possible workaround is to just change the place of "client_mountpoint=/"
in the fstab line. For instance, no problem with:

id=cephfs,client_mountpoint=/,keyring=/etc/ceph/ceph.client.cephfs.keyring /mnt ...
          ^^^^^^^^^^^^^^^^^^^

It's definitively curious that a manual mount works well and not at boot.
My conclusion is that the mechanism (ie the code) to pass arguments to ceph-fuse
from fstab are different in these 2 cases (manual mount vs mount at boot).

Now, my question is: which program gives the arguments to /sbin/mount.fuse.ceph?
Is it the init program (upstart in my case)? Or does it concern a Ceph programs?

-- 
François Lafont
_______________________________________________
ceph-users mailing list
ceph-users@xxxxxxxxxxxxxx
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com




[Index of Archives]     [Information on CEPH]     [Linux Filesystem Development]     [Ceph Development]     [Ceph Large]     [Ceph Dev]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [xfs]


  Powered by Linux