You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@mesos.apache.org by Shuai Lin <li...@gmail.com> on 2016/02/24 17:38:47 UTC

Review Request 43932: Added overlayfs provisioning backend.

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/43932/
-----------------------------------------------------------

Review request for mesos and Jie Yu.


Bugs: MESOS-2971
    https://issues.apache.org/jira/browse/MESOS-2971


Repository: mesos


Description
-------

Added overlayfs provisioning backend.


Diffs
-----

  src/CMakeLists.txt b13fb23219ebb23bcfd6db062e1c814ca2114aa4 
  src/Makefile.am 2a26261b513bb7c03437ed8e850c3b36b93d82f5 
  src/slave/containerizer/mesos/provisioner/backend.cpp 01d06ebc67e259272ee57ea5c75bf7077ede65c4 
  src/slave/containerizer/mesos/provisioner/backends/overlay.hpp PRE-CREATION 
  src/slave/containerizer/mesos/provisioner/backends/overlay.cpp PRE-CREATION 
  src/slave/flags.cpp 1c6a87b670efde2deab4d6e3f24fd6eb3704a47d 
  src/tests/containerizer/provisioner_backend_tests.cpp 25b28ef8fa5aae81e8dd0c9e33df4160dd912ce8 
  src/tests/environment.cpp 6cd295f76496770774d090e0485ff87be378f74c 

Diff: https://reviews.apache.org/r/43932/diff/


Testing
-------

sudo modprobe overlayfs
sudo make check -j4 GTEST_FILTER='OverlayBackendTest.ROOT_OVERLAYFS_OverlayFSBackend'

- OS: ubuntu 14.04 64bit vm
- Kernel: 4.2.0-27-generic


Thanks,

Shuai Lin


Re: Review Request 43932: Added overlayfs provisioning backend.

Posted by Cong Wang <xi...@gmail.com>.

> On Feb. 25, 2016, 2:52 a.m., Guangya Liu wrote:
> > src/slave/containerizer/mesos/provisioner/backends/overlay.cpp, line 106
> > <https://reviews.apache.org/r/43932/diff/1/?file=1268084#file1268084line106>
> >
> >     just a question, does there are any policy when to use `Failure` and `Error`

Failure is for Future, Error is for Try/Result.


- Cong


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/43932/#review120649
-----------------------------------------------------------


On Feb. 24, 2016, 4:38 p.m., Shuai Lin wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/43932/
> -----------------------------------------------------------
> 
> (Updated Feb. 24, 2016, 4:38 p.m.)
> 
> 
> Review request for mesos and Jie Yu.
> 
> 
> Bugs: MESOS-2971
>     https://issues.apache.org/jira/browse/MESOS-2971
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Added overlayfs provisioning backend.
> 
> 
> Diffs
> -----
> 
>   src/CMakeLists.txt b13fb23219ebb23bcfd6db062e1c814ca2114aa4 
>   src/Makefile.am 2a26261b513bb7c03437ed8e850c3b36b93d82f5 
>   src/slave/containerizer/mesos/provisioner/backend.cpp 01d06ebc67e259272ee57ea5c75bf7077ede65c4 
>   src/slave/containerizer/mesos/provisioner/backends/overlay.hpp PRE-CREATION 
>   src/slave/containerizer/mesos/provisioner/backends/overlay.cpp PRE-CREATION 
>   src/slave/flags.cpp 1c6a87b670efde2deab4d6e3f24fd6eb3704a47d 
>   src/tests/containerizer/provisioner_backend_tests.cpp 25b28ef8fa5aae81e8dd0c9e33df4160dd912ce8 
>   src/tests/environment.cpp 6cd295f76496770774d090e0485ff87be378f74c 
> 
> Diff: https://reviews.apache.org/r/43932/diff/
> 
> 
> Testing
> -------
> 
> sudo modprobe overlayfs
> sudo make check -j4 GTEST_FILTER='OverlayBackendTest.ROOT_OVERLAYFS_OverlayFSBackend'
> 
> - OS: ubuntu 14.04 64bit vm
> - Kernel: 4.2.0-27-generic
> 
> 
> Thanks,
> 
> Shuai Lin
> 
>


Re: Review Request 43932: Added overlayfs provisioning backend.

Posted by Guangya Liu <gy...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/43932/#review120649
-----------------------------------------------------------




src/slave/containerizer/mesos/provisioner/backend.cpp (lines 23 - 24)
<https://reviews.apache.org/r/43932/#comment182110>

    add a blank line here



src/slave/containerizer/mesos/provisioner/backends/overlay.cpp (line 55)
<https://reviews.apache.org/r/43932/#comment182111>

    what about adding user name in the Error message?



src/slave/containerizer/mesos/provisioner/backends/overlay.cpp (line 106)
<https://reviews.apache.org/r/43932/#comment182112>

    just a question, does there are any policy when to use `Failure` and `Error`



src/slave/containerizer/mesos/provisioner/backends/overlay.cpp (line 115)
<https://reviews.apache.org/r/43932/#comment182113>

    return Failure(
            "Failed to create container rootfs at '" + rootfs + "': " + mkdir.error());


- Guangya Liu


On 二月 24, 2016, 4:38 p.m., Shuai Lin wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/43932/
> -----------------------------------------------------------
> 
> (Updated 二月 24, 2016, 4:38 p.m.)
> 
> 
> Review request for mesos and Jie Yu.
> 
> 
> Bugs: MESOS-2971
>     https://issues.apache.org/jira/browse/MESOS-2971
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Added overlayfs provisioning backend.
> 
> 
> Diffs
> -----
> 
>   src/CMakeLists.txt b13fb23219ebb23bcfd6db062e1c814ca2114aa4 
>   src/Makefile.am 2a26261b513bb7c03437ed8e850c3b36b93d82f5 
>   src/slave/containerizer/mesos/provisioner/backend.cpp 01d06ebc67e259272ee57ea5c75bf7077ede65c4 
>   src/slave/containerizer/mesos/provisioner/backends/overlay.hpp PRE-CREATION 
>   src/slave/containerizer/mesos/provisioner/backends/overlay.cpp PRE-CREATION 
>   src/slave/flags.cpp 1c6a87b670efde2deab4d6e3f24fd6eb3704a47d 
>   src/tests/containerizer/provisioner_backend_tests.cpp 25b28ef8fa5aae81e8dd0c9e33df4160dd912ce8 
>   src/tests/environment.cpp 6cd295f76496770774d090e0485ff87be378f74c 
> 
> Diff: https://reviews.apache.org/r/43932/diff/
> 
> 
> Testing
> -------
> 
> sudo modprobe overlayfs
> sudo make check -j4 GTEST_FILTER='OverlayBackendTest.ROOT_OVERLAYFS_OverlayFSBackend'
> 
> - OS: ubuntu 14.04 64bit vm
> - Kernel: 4.2.0-27-generic
> 
> 
> Thanks,
> 
> Shuai Lin
> 
>


Re: Review Request 43932: Added overlayfs provisioning backend.

Posted by Mesos ReviewBot <re...@mesos.apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/43932/#review121158
-----------------------------------------------------------



Patch looks great!

Reviews applied: [43718, 43932]

Passed command: export OS='ubuntu:14.04' CONFIGURATION='--verbose' COMPILER='gcc' ENVIRONMENT='GLOG_v=1 MESOS_VERBOSE=1'; ./support/docker_build.sh

- Mesos ReviewBot


On Feb. 28, 2016, 5:22 p.m., Shuai Lin wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/43932/
> -----------------------------------------------------------
> 
> (Updated Feb. 28, 2016, 5:22 p.m.)
> 
> 
> Review request for mesos and Jie Yu.
> 
> 
> Bugs: MESOS-2971
>     https://issues.apache.org/jira/browse/MESOS-2971
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Added overlayfs provisioning backend.
> 
> 
> Diffs
> -----
> 
>   src/CMakeLists.txt b13fb23219ebb23bcfd6db062e1c814ca2114aa4 
>   src/Makefile.am 2a26261b513bb7c03437ed8e850c3b36b93d82f5 
>   src/slave/containerizer/mesos/provisioner/backend.cpp 01d06ebc67e259272ee57ea5c75bf7077ede65c4 
>   src/slave/containerizer/mesos/provisioner/backends/overlay.hpp PRE-CREATION 
>   src/slave/containerizer/mesos/provisioner/backends/overlay.cpp PRE-CREATION 
>   src/slave/flags.cpp 1c6a87b670efde2deab4d6e3f24fd6eb3704a47d 
>   src/tests/containerizer/provisioner_backend_tests.cpp 25b28ef8fa5aae81e8dd0c9e33df4160dd912ce8 
>   src/tests/environment.cpp 6cd295f76496770774d090e0485ff87be378f74c 
> 
> Diff: https://reviews.apache.org/r/43932/diff/
> 
> 
> Testing
> -------
> 
> sudo modprobe overlayfs
> sudo make check -j4 GTEST_FILTER='OverlayBackendTest.ROOT_OVERLAYFS_OverlayFSBackend'
> 
> - OS: ubuntu 14.04 64bit vm
> - Kernel: 4.2.0-27-generic
> 
> 
> Thanks,
> 
> Shuai Lin
> 
>


Re: Review Request 43932: Added overlayfs provisioning backend.

Posted by Shuai Lin <li...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/43932/
-----------------------------------------------------------

(Updated Feb. 28, 2016, 5:22 p.m.)


Review request for mesos and Jie Yu.


Bugs: MESOS-2971
    https://issues.apache.org/jira/browse/MESOS-2971


Repository: mesos


Description
-------

Added overlayfs provisioning backend.


Diffs (updated)
-----

  src/CMakeLists.txt b13fb23219ebb23bcfd6db062e1c814ca2114aa4 
  src/Makefile.am 2a26261b513bb7c03437ed8e850c3b36b93d82f5 
  src/slave/containerizer/mesos/provisioner/backend.cpp 01d06ebc67e259272ee57ea5c75bf7077ede65c4 
  src/slave/containerizer/mesos/provisioner/backends/overlay.hpp PRE-CREATION 
  src/slave/containerizer/mesos/provisioner/backends/overlay.cpp PRE-CREATION 
  src/slave/flags.cpp 1c6a87b670efde2deab4d6e3f24fd6eb3704a47d 
  src/tests/containerizer/provisioner_backend_tests.cpp 25b28ef8fa5aae81e8dd0c9e33df4160dd912ce8 
  src/tests/environment.cpp 6cd295f76496770774d090e0485ff87be378f74c 

Diff: https://reviews.apache.org/r/43932/diff/


Testing
-------

sudo modprobe overlayfs
sudo make check -j4 GTEST_FILTER='OverlayBackendTest.ROOT_OVERLAYFS_OverlayFSBackend'

- OS: ubuntu 14.04 64bit vm
- Kernel: 4.2.0-27-generic


Thanks,

Shuai Lin


Re: Review Request 43932: Added overlayfs provisioning backend.

Posted by Shuai Lin <li...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/43932/
-----------------------------------------------------------

(Updated Feb. 28, 2016, 5:17 p.m.)


Review request for mesos and Jie Yu.


Changes
-------

Address review comments.


Bugs: MESOS-2971
    https://issues.apache.org/jira/browse/MESOS-2971


Repository: mesos


Description
-------

Added overlayfs provisioning backend.


Diffs (updated)
-----

  src/CMakeLists.txt b13fb23219ebb23bcfd6db062e1c814ca2114aa4 
  src/Makefile.am 2a26261b513bb7c03437ed8e850c3b36b93d82f5 
  src/slave/containerizer/mesos/provisioner/backend.cpp 01d06ebc67e259272ee57ea5c75bf7077ede65c4 
  src/slave/containerizer/mesos/provisioner/backends/overlay.hpp PRE-CREATION 
  src/slave/containerizer/mesos/provisioner/backends/overlay.cpp PRE-CREATION 
  src/slave/flags.cpp 1c6a87b670efde2deab4d6e3f24fd6eb3704a47d 
  src/tests/containerizer/provisioner_backend_tests.cpp 25b28ef8fa5aae81e8dd0c9e33df4160dd912ce8 
  src/tests/environment.cpp 6cd295f76496770774d090e0485ff87be378f74c 

Diff: https://reviews.apache.org/r/43932/diff/


Testing
-------

sudo modprobe overlayfs
sudo make check -j4 GTEST_FILTER='OverlayBackendTest.ROOT_OVERLAYFS_OverlayFSBackend'

- OS: ubuntu 14.04 64bit vm
- Kernel: 4.2.0-27-generic


Thanks,

Shuai Lin


Re: Review Request 43932: Added overlayfs provisioning backend.

Posted by Mesos ReviewBot <re...@mesos.apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/43932/#review120540
-----------------------------------------------------------



Patch looks great!

Reviews applied: [43718, 43932]

Passed command: export OS='ubuntu:14.04' CONFIGURATION='--verbose' COMPILER='gcc' ENVIRONMENT='GLOG_v=1 MESOS_VERBOSE=1'; ./support/docker_build.sh

- Mesos ReviewBot


On Feb. 24, 2016, 4:38 p.m., Shuai Lin wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/43932/
> -----------------------------------------------------------
> 
> (Updated Feb. 24, 2016, 4:38 p.m.)
> 
> 
> Review request for mesos and Jie Yu.
> 
> 
> Bugs: MESOS-2971
>     https://issues.apache.org/jira/browse/MESOS-2971
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Added overlayfs provisioning backend.
> 
> 
> Diffs
> -----
> 
>   src/CMakeLists.txt b13fb23219ebb23bcfd6db062e1c814ca2114aa4 
>   src/Makefile.am 2a26261b513bb7c03437ed8e850c3b36b93d82f5 
>   src/slave/containerizer/mesos/provisioner/backend.cpp 01d06ebc67e259272ee57ea5c75bf7077ede65c4 
>   src/slave/containerizer/mesos/provisioner/backends/overlay.hpp PRE-CREATION 
>   src/slave/containerizer/mesos/provisioner/backends/overlay.cpp PRE-CREATION 
>   src/slave/flags.cpp 1c6a87b670efde2deab4d6e3f24fd6eb3704a47d 
>   src/tests/containerizer/provisioner_backend_tests.cpp 25b28ef8fa5aae81e8dd0c9e33df4160dd912ce8 
>   src/tests/environment.cpp 6cd295f76496770774d090e0485ff87be378f74c 
> 
> Diff: https://reviews.apache.org/r/43932/diff/
> 
> 
> Testing
> -------
> 
> sudo modprobe overlayfs
> sudo make check -j4 GTEST_FILTER='OverlayBackendTest.ROOT_OVERLAYFS_OverlayFSBackend'
> 
> - OS: ubuntu 14.04 64bit vm
> - Kernel: 4.2.0-27-generic
> 
> 
> Thanks,
> 
> Shuai Lin
> 
>


Re: Review Request 43932: Added overlayfs provisioning backend.

Posted by Shuai Lin <li...@gmail.com>.

> On Feb. 25, 2016, 11:40 p.m., Jie Yu wrote:
> > src/slave/containerizer/mesos/provisioner/backends/overlay.cpp, lines 124-129
> > <https://reviews.apache.org/r/43932/diff/1/?file=1268084#file1268084line124>
> >
> >     To be safe, can you do the same thing to mark the mount as slave+shared (like we did in the bind backend).
> >     
> >     So the goal of doing that is: we want to make sure when slave fork a subprocess with a new mount namespace, it does not create an extra reference to the mount so that rmdir might fail later.
> 
> Shuai Lin wrote:
>     Updated. I am interested in how to reprduce the potential problem, but failed to reproduce with these shell commands:
>     
>     
>     ```sh
>     mkdir -p /tmp/rootfs/folder1 /tmp/layer1
>     mount --bind /tmp/layer1 /tmp/rootfs/folder1
>     
>     # create a subprocess with a new mount namespace
>     unshare -m sleep 1000 &
>     
>     # Try to remove the mount dir, Expected: rm would failed, Result: rm succeeded.
>     umount /tmp/rootfs/folder1
>     rm -rf /tmp/rootfs
>     ```
>     
>     I've also read about https://issues.apache.org/jira/browse/MESOS-3483 and https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt, but still don't understand this problem, can you provide some links on this?
> 
> Jie Yu wrote:
>     I think you're using a newer kernel. See this thread:
>     https://lwn.net/Articles/570338/
>     
>     You should be able to repo this problem using an older kernel (e.g., 3.10).

Right, I was using kernel 4.2.0 (for better overlayfs support). With another ubuntu 12.04 vm with kernel 3.2.0 I can reproduce the bug with the above commands. Thanks!


- Shuai


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/43932/#review120750
-----------------------------------------------------------


On Feb. 28, 2016, 5:22 p.m., Shuai Lin wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/43932/
> -----------------------------------------------------------
> 
> (Updated Feb. 28, 2016, 5:22 p.m.)
> 
> 
> Review request for mesos and Jie Yu.
> 
> 
> Bugs: MESOS-2971
>     https://issues.apache.org/jira/browse/MESOS-2971
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Added overlayfs provisioning backend.
> 
> 
> Diffs
> -----
> 
>   src/CMakeLists.txt b13fb23219ebb23bcfd6db062e1c814ca2114aa4 
>   src/Makefile.am 2a26261b513bb7c03437ed8e850c3b36b93d82f5 
>   src/slave/containerizer/mesos/provisioner/backend.cpp 01d06ebc67e259272ee57ea5c75bf7077ede65c4 
>   src/slave/containerizer/mesos/provisioner/backends/overlay.hpp PRE-CREATION 
>   src/slave/containerizer/mesos/provisioner/backends/overlay.cpp PRE-CREATION 
>   src/slave/flags.cpp 1c6a87b670efde2deab4d6e3f24fd6eb3704a47d 
>   src/tests/containerizer/provisioner_backend_tests.cpp 25b28ef8fa5aae81e8dd0c9e33df4160dd912ce8 
>   src/tests/environment.cpp 6cd295f76496770774d090e0485ff87be378f74c 
> 
> Diff: https://reviews.apache.org/r/43932/diff/
> 
> 
> Testing
> -------
> 
> sudo modprobe overlayfs
> sudo make check -j4 GTEST_FILTER='OverlayBackendTest.ROOT_OVERLAYFS_OverlayFSBackend'
> 
> - OS: ubuntu 14.04 64bit vm
> - Kernel: 4.2.0-27-generic
> 
> 
> Thanks,
> 
> Shuai Lin
> 
>


Re: Review Request 43932: Added overlayfs provisioning backend.

Posted by Jie Yu <yu...@gmail.com>.

> On Feb. 25, 2016, 11:40 p.m., Jie Yu wrote:
> > src/slave/containerizer/mesos/provisioner/backends/overlay.cpp, lines 124-129
> > <https://reviews.apache.org/r/43932/diff/1/?file=1268084#file1268084line124>
> >
> >     To be safe, can you do the same thing to mark the mount as slave+shared (like we did in the bind backend).
> >     
> >     So the goal of doing that is: we want to make sure when slave fork a subprocess with a new mount namespace, it does not create an extra reference to the mount so that rmdir might fail later.
> 
> Shuai Lin wrote:
>     Updated. I am interested in how to reprduce the potential problem, but failed to reproduce with these shell commands:
>     
>     
>     ```sh
>     mkdir -p /tmp/rootfs/folder1 /tmp/layer1
>     mount --bind /tmp/layer1 /tmp/rootfs/folder1
>     
>     # create a subprocess with a new mount namespace
>     unshare -m sleep 1000 &
>     
>     # Try to remove the mount dir, Expected: rm would failed, Result: rm succeeded.
>     umount /tmp/rootfs/folder1
>     rm -rf /tmp/rootfs
>     ```
>     
>     I've also read about https://issues.apache.org/jira/browse/MESOS-3483 and https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt, but still don't understand this problem, can you provide some links on this?

I think you're using a newer kernel. See this thread:
https://lwn.net/Articles/570338/

You should be able to repo this problem using an older kernel (e.g., 3.10).


- Jie


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/43932/#review120750
-----------------------------------------------------------


On Feb. 28, 2016, 5:22 p.m., Shuai Lin wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/43932/
> -----------------------------------------------------------
> 
> (Updated Feb. 28, 2016, 5:22 p.m.)
> 
> 
> Review request for mesos and Jie Yu.
> 
> 
> Bugs: MESOS-2971
>     https://issues.apache.org/jira/browse/MESOS-2971
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Added overlayfs provisioning backend.
> 
> 
> Diffs
> -----
> 
>   src/CMakeLists.txt b13fb23219ebb23bcfd6db062e1c814ca2114aa4 
>   src/Makefile.am 2a26261b513bb7c03437ed8e850c3b36b93d82f5 
>   src/slave/containerizer/mesos/provisioner/backend.cpp 01d06ebc67e259272ee57ea5c75bf7077ede65c4 
>   src/slave/containerizer/mesos/provisioner/backends/overlay.hpp PRE-CREATION 
>   src/slave/containerizer/mesos/provisioner/backends/overlay.cpp PRE-CREATION 
>   src/slave/flags.cpp 1c6a87b670efde2deab4d6e3f24fd6eb3704a47d 
>   src/tests/containerizer/provisioner_backend_tests.cpp 25b28ef8fa5aae81e8dd0c9e33df4160dd912ce8 
>   src/tests/environment.cpp 6cd295f76496770774d090e0485ff87be378f74c 
> 
> Diff: https://reviews.apache.org/r/43932/diff/
> 
> 
> Testing
> -------
> 
> sudo modprobe overlayfs
> sudo make check -j4 GTEST_FILTER='OverlayBackendTest.ROOT_OVERLAYFS_OverlayFSBackend'
> 
> - OS: ubuntu 14.04 64bit vm
> - Kernel: 4.2.0-27-generic
> 
> 
> Thanks,
> 
> Shuai Lin
> 
>


Re: Review Request 43932: Added overlayfs provisioning backend.

Posted by Shuai Lin <li...@gmail.com>.

> On Feb. 25, 2016, 11:40 p.m., Jie Yu wrote:
> > src/slave/containerizer/mesos/provisioner/backends/overlay.hpp, lines 30-31
> > <https://reviews.apache.org/r/43932/diff/1/?file=1268083#file1268083line30>
> >
> >     can you wrap comments in 70 char width. It's less jagged IMO.

done


> On Feb. 25, 2016, 11:40 p.m., Jie Yu wrote:
> > src/slave/containerizer/mesos/provisioner/backends/overlay.cpp, lines 124-129
> > <https://reviews.apache.org/r/43932/diff/1/?file=1268084#file1268084line124>
> >
> >     To be safe, can you do the same thing to mark the mount as slave+shared (like we did in the bind backend).
> >     
> >     So the goal of doing that is: we want to make sure when slave fork a subprocess with a new mount namespace, it does not create an extra reference to the mount so that rmdir might fail later.

Updated. I am interested in how to reprduce the potential problem, but failed to reproduce with these shell commands:


```sh
mkdir -p /tmp/rootfs/folder1 /tmp/layer1
mount --bind /tmp/layer1 /tmp/rootfs/folder1

# create a subprocess with a new mount namespace
unshare -m sleep 1000 &

# Try to remove the mount dir, Expected: rm would failed, Result: rm succeeded.
umount /tmp/rootfs/folder1
rm -rf /tmp/rootfs
```

I've also read about https://issues.apache.org/jira/browse/MESOS-3483 and https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt, but still don't understand this problem, can you provide some links on this?


> On Feb. 25, 2016, 11:40 p.m., Jie Yu wrote:
> > src/slave/containerizer/mesos/provisioner/backends/overlay.cpp, lines 132-133
> > <https://reviews.apache.org/r/43932/diff/1/?file=1268084#file1268084line132>
> >
> >     Can you align the error message:
> >     ```
> >     return Failure(
> >         "Failed to remount rootfs '" + rootfs +
> >         "' read-only: " + mount.error());
> >     ```

Reformatted this function with clang-format.


> On Feb. 25, 2016, 11:40 p.m., Jie Yu wrote:
> > src/tests/containerizer/provisioner_backend_tests.cpp, line 51
> > <https://reviews.apache.org/r/43932/diff/1/?file=1268086#file1268086line51>
> >
> >     We should add an TearDown method to unmount anything under sandbox. You can take a look at fs::unmountAll.

Refactored out the `TearDown` method of BindBackendTest into a common `MountBackendTest` class so it could be reused for all mount-based backend like bind/overlay/aufs.


- Shuai


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/43932/#review120750
-----------------------------------------------------------


On Feb. 24, 2016, 4:38 p.m., Shuai Lin wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/43932/
> -----------------------------------------------------------
> 
> (Updated Feb. 24, 2016, 4:38 p.m.)
> 
> 
> Review request for mesos and Jie Yu.
> 
> 
> Bugs: MESOS-2971
>     https://issues.apache.org/jira/browse/MESOS-2971
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Added overlayfs provisioning backend.
> 
> 
> Diffs
> -----
> 
>   src/CMakeLists.txt b13fb23219ebb23bcfd6db062e1c814ca2114aa4 
>   src/Makefile.am 2a26261b513bb7c03437ed8e850c3b36b93d82f5 
>   src/slave/containerizer/mesos/provisioner/backend.cpp 01d06ebc67e259272ee57ea5c75bf7077ede65c4 
>   src/slave/containerizer/mesos/provisioner/backends/overlay.hpp PRE-CREATION 
>   src/slave/containerizer/mesos/provisioner/backends/overlay.cpp PRE-CREATION 
>   src/slave/flags.cpp 1c6a87b670efde2deab4d6e3f24fd6eb3704a47d 
>   src/tests/containerizer/provisioner_backend_tests.cpp 25b28ef8fa5aae81e8dd0c9e33df4160dd912ce8 
>   src/tests/environment.cpp 6cd295f76496770774d090e0485ff87be378f74c 
> 
> Diff: https://reviews.apache.org/r/43932/diff/
> 
> 
> Testing
> -------
> 
> sudo modprobe overlayfs
> sudo make check -j4 GTEST_FILTER='OverlayBackendTest.ROOT_OVERLAYFS_OverlayFSBackend'
> 
> - OS: ubuntu 14.04 64bit vm
> - Kernel: 4.2.0-27-generic
> 
> 
> Thanks,
> 
> Shuai Lin
> 
>


Re: Review Request 43932: Added overlayfs provisioning backend.

Posted by Jie Yu <yu...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/43932/#review120750
-----------------------------------------------------------


Fix it, then Ship it!




Thanks! This is great!


src/slave/containerizer/mesos/provisioner/backend.cpp (line 50)
<https://reviews.apache.org/r/43932/#comment182221>

    Kill this line.



src/slave/containerizer/mesos/provisioner/backend.cpp (line 52)
<https://reviews.apache.org/r/43932/#comment182222>

    Add a new line above.



src/slave/containerizer/mesos/provisioner/backends/overlay.hpp (lines 30 - 31)
<https://reviews.apache.org/r/43932/#comment182223>

    can you wrap comments in 70 char width. It's less jagged IMO.



src/slave/containerizer/mesos/provisioner/backends/overlay.cpp (line 28)
<https://reviews.apache.org/r/43932/#comment182224>

    Let's use 'using process::XXX' explicitly. We try to avoid using 'using namespace'.



src/slave/containerizer/mesos/provisioner/backends/overlay.cpp (lines 124 - 129)
<https://reviews.apache.org/r/43932/#comment182293>

    To be safe, can you do the same thing to mark the mount as slave+shared (like we did in the bind backend).
    
    So the goal of doing that is: we want to make sure when slave fork a subprocess with a new mount namespace, it does not create an extra reference to the mount so that rmdir might fail later.



src/slave/containerizer/mesos/provisioner/backends/overlay.cpp (lines 132 - 133)
<https://reviews.apache.org/r/43932/#comment182238>

    Can you align the error message:
    ```
    return Failure(
        "Failed to remount rootfs '" + rootfs +
        "' read-only: " + mount.error());
    ```



src/slave/containerizer/mesos/provisioner/backends/overlay.cpp (line 143)
<https://reviews.apache.org/r/43932/#comment182239>

    Kill this line.



src/slave/containerizer/mesos/provisioner/backends/overlay.cpp (line 148)
<https://reviews.apache.org/r/43932/#comment182240>

    You can use mountTable->entries



src/tests/containerizer/provisioner_backend_tests.cpp (line 50)
<https://reviews.apache.org/r/43932/#comment182297>

    kill this line.



src/tests/containerizer/provisioner_backend_tests.cpp (line 51)
<https://reviews.apache.org/r/43932/#comment182306>

    We should add an TearDown method to unmount anything under sandbox. You can take a look at fs::unmountAll.



src/tests/containerizer/provisioner_backend_tests.cpp (lines 78 - 79)
<https://reviews.apache.org/r/43932/#comment182302>

    You can do EXPECT_SOME_EQ("1", read);



src/tests/containerizer/provisioner_backend_tests.cpp (lines 83 - 84)
<https://reviews.apache.org/r/43932/#comment182303>

    Ditto.



src/tests/containerizer/provisioner_backend_tests.cpp (lines 87 - 88)
<https://reviews.apache.org/r/43932/#comment182304>

    Ditto.



src/tests/environment.cpp (line 489)
<https://reviews.apache.org/r/43932/#comment182300>

    `s/_OVERLAYFS_/OVERLAYFS_/`


- Jie Yu


On Feb. 24, 2016, 4:38 p.m., Shuai Lin wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/43932/
> -----------------------------------------------------------
> 
> (Updated Feb. 24, 2016, 4:38 p.m.)
> 
> 
> Review request for mesos and Jie Yu.
> 
> 
> Bugs: MESOS-2971
>     https://issues.apache.org/jira/browse/MESOS-2971
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Added overlayfs provisioning backend.
> 
> 
> Diffs
> -----
> 
>   src/CMakeLists.txt b13fb23219ebb23bcfd6db062e1c814ca2114aa4 
>   src/Makefile.am 2a26261b513bb7c03437ed8e850c3b36b93d82f5 
>   src/slave/containerizer/mesos/provisioner/backend.cpp 01d06ebc67e259272ee57ea5c75bf7077ede65c4 
>   src/slave/containerizer/mesos/provisioner/backends/overlay.hpp PRE-CREATION 
>   src/slave/containerizer/mesos/provisioner/backends/overlay.cpp PRE-CREATION 
>   src/slave/flags.cpp 1c6a87b670efde2deab4d6e3f24fd6eb3704a47d 
>   src/tests/containerizer/provisioner_backend_tests.cpp 25b28ef8fa5aae81e8dd0c9e33df4160dd912ce8 
>   src/tests/environment.cpp 6cd295f76496770774d090e0485ff87be378f74c 
> 
> Diff: https://reviews.apache.org/r/43932/diff/
> 
> 
> Testing
> -------
> 
> sudo modprobe overlayfs
> sudo make check -j4 GTEST_FILTER='OverlayBackendTest.ROOT_OVERLAYFS_OverlayFSBackend'
> 
> - OS: ubuntu 14.04 64bit vm
> - Kernel: 4.2.0-27-generic
> 
> 
> Thanks,
> 
> Shuai Lin
> 
>