In fact, the problem is not really embarassing in Ubuntu Xenial because
mountall is not used by default to mount the filesystems from fstab.
But, for instance, it's really embarassing in Ubuntu Trusty because:

1. the problem is present in Ubuntu Trusty too (the code C is the same on this 
part),
2. by default, mountall is used in Ubuntu Trusty to mount the file system from 
fstab at boot.


PS: of course, a workaround possible is to _not_ put "client_mountpoint=/" at 
the end like in:

id=cfs,client_mountpoint=/,keyring=/etc/ceph/keyring /mnt/ fuse.ceph
defaults,_netdev 0 0

which is a valid fstab line too.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to mountall in Ubuntu.
https://bugs.launchpad.net/bugs/1588594

Title:
  mountall: potential problem with fuse.ceph

Status in mountall package in Ubuntu:
  New

Bug description:
  Hi,

  Here is a perfectly valid fstab line to mount a fuse.ceph filesystem
  (it's a distributed file system but no importance here):

      id=cfs,keyring=/etc/ceph/keyring,client_mountpoint=/ /mnt/
  fuse.ceph defaults,_netdev   0   0

  But here are the arguments given to /sbin/mount.fuse.ceph by mountall:

      id=cfs,keyring=/etc/ceph/keyring,client_mountpoint= /mnt -o
  rw,_netdev

  As you can see, I have "client_mountpoint=" but it should be
  "client_mountpoint=/" (with the / at the end). The trailing "/" has
  been removed and in this case it's a bad idea. The mount at boot just
  fails because "client_mountpoint=" is not correct.

  In fact, the problem is in src/mountall.c around line 569:

      char *colon;
      dequote (mnt->device);
      /* If our device name is in host:/path format, as is
       * commonly used for network filesystems, don't strip
       * trailing slashes if this is the entire path.  We
       * look for the colon starting from the end, so that
       * we correctly handle IPv6 addresses for the host
       * part.
       */
      if ((colon = strrchr (mnt->device,':')) != NULL
          && colon[1] == '/')
          strip_slashes (colon + 2);
      else
          strip_slashes (mnt->device);  // <==== bad idea in the specific case 
of fuse.ceph filesystem

  
  It's Ubuntu Xenial with mountall version 2.54ubuntu1.

  Regards

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/mountall/+bug/1588594/+subscriptions

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to