I made a couple of mistakes in my modified patch - so please ignore that.But the basic idea of it was to handle special mount flags (in this case RDONLY) before it hits
if (mount(fsname, target, fstype, mountflags & ~MS_REMOUNT, data)) Will be glad to test additional patches for you. On Wed, Nov 26, 2014 at 11:19 AM, Claudio Kuenzler <[email protected]> wrote: > I applied the patch but it does not work for the read only mount. > > lxc-start 1416993491.172 INFO lxc_conf - > conf.c:check_autodev:3821 - Autodev not required. > lxc-start 1416993491.172 ERROR lxc_conf - conf.c:mount_entry:1916 > - Device or resource busy - failed to mount '/dev/vglxc/apps' on > '/usr/local/lib/lxc/rootfs/mnt/apps' > > I have modified the patch order a bit. Please note that I'm not a > developer so this might be plain wrong: > > 1901 static int mount_entry(const char *fsname, const char *target, > 1902 const char *fstype, unsigned long mountflags, > 1903 const char *data, int optional) > 1904 { > 1905 #ifdef HAVE_STATVFS > 1906 struct statvfs sb; > 1907 #endif > 1908 > 1909 if ((mountflags & MS_REMOUNT) || (mountflags & MS_BIND)) { > 1910 DEBUG("remounting %s on %s to respect bind or remount > options", > 1911 fsname ? fsname : "(none)", target ? target : > "(none)"); > 1912 unsigned long rqd_flags = 0; > 1913 if (mountflags & MS_RDONLY) > 1914 rqd_flags |= MS_RDONLY; > 1915 > 1916 > 1917 else if (mount(fsname, target, fstype, mountflags & > ~MS_REMOUNT, data)) { > 1918 if (optional) { > 1919 INFO("failed to mount '%s' on '%s' > (optional): %s", fsname, > 1920 target, strerror(errno)); > 1921 return 0; > 1922 } > 1923 else { > 1924 SYSERROR("failed to mount '%s' on '%s'", > fsname, target); > 1925 return -1; > 1926 } > 1927 } > 1928 > 1929 #ifdef HAVE_STATVFS > > This time the LV was mounted: > > lxc-start 1416996121.708 INFO lxc_conf - > conf.c:check_autodev:3823 - Autodev not required. > lxc-start 1416996121.708 DEBUG lxc_conf - conf.c:mount_entry:1975 > - mounted '/dev/vglxc/apps' on '/usr/local/lib/lxc/rootfs/mnt/apps', type > 'ext4' > lxc-start 1416996121.708 INFO lxc_conf - > conf.c:mount_file_entries:2224 - mount points have been setup > > But I got different errors - which could be because of the modified code > or because of something else: > > lxc-start 1416996121.730 DEBUG lxc_conf - > conf.c:setup_rootfs_pivot_root:1082 - pivot_root syscall to > '/usr/local/lib/lxc/rootfs' successful > lxc-start 1416996121.731 INFO lxc_conf - conf.c:setup_pts:1641 - > created new pts instance > lxc-start 1416996121.731 INFO lxc_conf - > conf.c:setup_personality:1658 - set personality to '0x0' > lxc-start 1416996121.731 ERROR lxc_conf - conf.c:setup_caps:2339 > - unknown capability mac_admin > lxc-start 1416996121.731 ERROR lxc_conf - conf.c:lxc_setup:4174 - > failed to drop capabilities > lxc-start 1416996121.731 ERROR lxc_start - start.c:do_start:688 - > failed to setup the container > lxc-start 1416996121.731 ERROR lxc_sync - sync.c:__sync_wait:51 - > invalid sequence number 1. expected 2 > lxc-start 1416996121.731 WARN lxc_conf - > conf.c:lxc_delete_network:3175 - failed to remove interface '(null)' > lxc-start 1416996121.758 ERROR lxc_start - > start.c:__lxc_start:1088 - failed to spawn 'mycontainer' > lxc-start 1416996121.759 WARN lxc_commands - > commands.c:lxc_cmd_rsp_recv:172 - command get_init_pid failed to receive > response > lxc-start 1416996121.759 WARN lxc_cgmanager - > cgmanager.c:cgm_get:963 - do_cgm_get exited with error > lxc-start 1416996126.764 ERROR lxc_start_ui - > lxc_start.c:main:342 - The container failed to start. > lxc-start 1416996126.765 ERROR lxc_start_ui - > lxc_start.c:main:344 - To get more details, run the container in foreground > mode. > lxc-start 1416996126.765 ERROR lxc_start_ui - > lxc_start.c:main:346 - Additional information can be obtained by setting > the --logfile and --logpriority options. > > Will try to redo this in a clean installation. > > On Wed, Nov 26, 2014 at 7:31 AM, Claudio Kuenzler <[email protected]> > wrote: > >> I've read that mailing list post yesterday, too and was actually hoping >> this could solve the mount issue. When I looked at it, it seems that this >> patch hasnt been merged into the github repo yet, correct? >> >> Will try it and let you know. >> On Nov 26, 2014 6:35 AM, "Serge Hallyn" <[email protected]> wrote: >> >>> Quoting Claudio Kuenzler ([email protected]): >>> > Hello all, >>> > >>> > OS: Ubuntu 14.04.1 LTS >>> > LXC Version: 1.0.6-0ubuntu0.1 >>> > >>> > Experienced a weird issue when I tried to launch a container which >>> mounts >>> > an additional logical volume (ext4 formatted) through the container's >>> fstab >>> > file: >>> > >>> > # cat /var/lib/lxc/mycontainer/fstab >>> > /dev/vglxc/apps mnt/apps ext4 ro 0 0 >>> > >>> > This LV is already mounted on the physical host: >>> > >>> > # mount /dev/vglxc/apps /mnt >>> > >>> > Now when I try to launch the container, I get the following error: >>> > >>> > # lxc-start -n mycontainer -l trace -o mycontainer.out >>> > lxc-start: Device or resource busy - failed to mount '/dev/vglxc/apps' >>> on >>> > '/usr/lib/x86_64-linux-gnu/lxc/mnt/apps' >>> > lxc-start: failed to setup the mounts for 'mycontainer' >>> > lxc-start: failed to setup the container >>> > lxc-start: invalid sequence number 1. expected 2 >>> > lxc-start: failed to spawn 'mycontainer' >>> > lxc-start: The container failed to start. >>> > lxc-start: Additional information can be obtained by setting the >>> --logfile >>> > and --logpriority options. >>> > >>> > In the output file the following information is shown: >>> > >>> > lxc-start 1416921918.699 INFO lxc_conf - Autodev not >>> required. >>> > lxc-start 1416921918.699 ERROR lxc_conf - Device or resource >>> busy >>> > - failed to mount '/dev/vglxc/apps' on >>> > '/usr/lib/x86_64-linux-gnu/lxc/mnt/apps' >>> > lxc-start 1416921918.699 ERROR lxc_conf - failed to setup the >>> > mounts for 'mycontainer' >>> > >>> > When I change the mount option in the container's fstab file from "ro" >>> to >>> > "defaults" (or basically "rw"), the container starts up: >>> > >>> > # cat /var/lib/lxc/mycontainer/fstab >>> > /dev/vglxc/apps mnt/apps ext4 defaults 0 0 >>> > >>> > # lxc-start -n mycontainer -l trace -o mycontainer.out >>> > >>> > lxc-start 1416921799.912 INFO lxc_conf - Autodev not >>> required. >>> > lxc-start 1416921799.912 DEBUG lxc_conf - mounted >>> > '/dev/vglxc/apps' on '/usr/lib/x86_64-linux-gnu/lxc/mnt/apps', type >>> 'ext4' >>> > >>> > If the LV /dev/vglxc/apps is nowhere mounted yet, the container starts >>> up - >>> > with the read only mount option, too. >>> > >>> > Is this a (known) bug I ran into? >>> >>> I think it is. Can you please try with this patch: >>> >>> >>> https://lists.linuxcontainers.org/pipermail/lxc-devel/2014-November/010876.html >>> >>> applied? >>> _______________________________________________ >>> lxc-users mailing list >>> [email protected] >>> http://lists.linuxcontainers.org/listinfo/lxc-users >> >> >
_______________________________________________ lxc-users mailing list [email protected] http://lists.linuxcontainers.org/listinfo/lxc-users
