> On Aug. 6, 2020, 1:27 a.m., Greg Mann wrote:
> > src/slave/containerizer/mesos/isolators/volume/csi/isolator.cpp
> > Lines 115-117 (patched)
> > <https://reviews.apache.org/r/72733/diff/1/?file=2236985#file2236985line115>
> >
> >     This seems pretty simple, could we do it now?
> 
> Qian Zhang wrote:
>     Actually we have this issue in the other two isolators:
>     
> https://github.com/apache/mesos/blob/1.10.0/src/slave/containerizer/mesos/isolators/volume/image.cpp#L118:L123
>     
> https://github.com/apache/mesos/blob/1.10.0/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp#L364:L367
>     
>     I think I can create a separate ticket for this issue and refactor all of 
> them later, HDYT?
> 
> Greg Mann wrote:
>     Personally I think it's OK to write this isolator the "correct" way now, 
> we can always update the others later. I don't feel a need to keep our 
> isolator implementations super consistent across isolators.
> 
> Qian Zhang wrote:
>     Sure, let me do it for this isolator now.

Thanks!!


> On Aug. 6, 2020, 1:27 a.m., Greg Mann wrote:
> > src/slave/containerizer/mesos/isolators/volume/csi/isolator.cpp
> > Lines 146-151 (patched)
> > <https://reviews.apache.org/r/72733/diff/1/?file=2236985#file2236985line146>
> >
> >     Should we check `_volume.mode()` against the access mode contained 
> > within the `VolumeCapability`? Maybe we should have some separate 
> > validation code for that?
> 
> Qian Zhang wrote:
>     Yeah, I thought this before, but I am not quite sure if we should do 
> that. Actually in CSI spec, there is no any explanation about the interaction 
> between the `NodePublishVolumeRequest.readonly` and the access mode in the 
> `VolumeCapability`, like what if `NodePublishVolumeRequest.readonly == false` 
> but the access mode in the `VolumeCapability` is `SINGLE_NODE_READER_ONLY`? 
> Should we return a failure in this case?
> 
> Greg Mann wrote:
>     I'm not so worried about the `readonly` field, I don't think that we need 
> to validate it against the volume capabilities because mounting a volume as 
> read-only isn't "incompatible" with any of the capabilities (for example, I 
> don't think there's anything wrong with mounting a volume readonly if the 
> volume has only the SINGLE_NODE_WRITER capability, since mounting as readonly 
> does not violate RW permissions).
>     
>     However, I do think we should perform validation for our internal 
> `Volume::Mode` field. If a task attempts to include a CSI volume which has 
> only the SINGLE_NODE_READER_ONLY capability and the volume mode is set as RW, 
> that does not seem valid to me. WDYT?
> 
> Qian Zhang wrote:
>     > I don't think there's anything wrong with mounting a volume readonly if 
> the volume has only the SINGLE_NODE_WRITER capability, since mounting as 
> readonly does not violate RW permissions
>     
>     But what about the reverse? I mean `NodePublishVolumeRequest.readonly == 
> false` and the volume has only the `SINGLE_NODE_READER_ONLY` capability. Do 
> you think it is wrong?
>     
>     > However, I do think we should perform validation for our internal 
> Volume::Mode field. If a task attempts to include a CSI volume which has only 
> the SINGLE_NODE_READER_ONLY capability and the volume mode is set as RW, that 
> does not seem valid to me. WDYT?
>     
>     Yes, I agree. I think I should add more validation here like: if the CSI 
> volume has only the `SINGLE_NODE_READER_ONLY` or `MULTI_NODE_READER_ONLY` 
> capability and our internal `Volume::Mode` field it set as `RW`, then we 
> should return a failure. WDYT?

> But what about the reverse? I mean NodePublishVolumeRequest.readonly == false 
> and the volume has only the SINGLE_NODE_READER_ONLY capability. Do you think 
> it is wrong?

The 'readonly' field, when true, requires the volume to be mounted readonly. 
When 'readonly' is false, it doesn't require anything, and the volume can still 
be mounted readonly. So, I don't think the case you mentioned is wrong.

> I think I should add more validation here like: if the CSI volume has only 
> the SINGLE_NODE_READER_ONLY or MULTI_NODE_READER_ONLY capability and our 
> internal Volume::Mode field it set as RW, then we should return a failure. 
> WDYT?

Yep, sounds good!


> On Aug. 6, 2020, 1:27 a.m., Greg Mann wrote:
> > src/slave/containerizer/mesos/isolators/volume/csi/isolator.cpp
> > Lines 316 (patched)
> > <https://reviews.apache.org/r/72733/diff/1/?file=2236985#file2236985line316>
> >
> >     Why do we do a recursive bind mount here, but not for volumes in the 
> > Linux filesystem isolator? 
> > https://github.com/apache/mesos/blob/c78dc333fc893a43d40dc33299a61987198a6ea9/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp#L1067-L1068
> 
> Qian Zhang wrote:
>     The reason that we do a recursive bind mount here is, if there is any 
> submounts under the `source`, we want all those submounts also bind mounted 
> at the `target` so that the container can access them. We have this logic in 
> all the volume isolators, like:
>     
> https://github.com/apache/mesos/blob/1.10.0/src/slave/containerizer/mesos/isolators/volume/host_path.cpp#L351
>     
> https://github.com/apache/mesos/blob/1.10.0/src/slave/containerizer/mesos/isolators/volume/image.cpp#L255
>     
>     The code that you pointed out in the Linux filesystem isolator is to 
> mount the PV, since PV is originally created by Mesos and we are sure there 
> is no submounts under it, so we do not need `MS_REC` in this case.
> 
> Greg Mann wrote:
>     Why do we know that a persistent volume will not have any mounts under 
> it, but we don't know this for CSI volumes? The PV is originally created by 
> Mesos, but applications can do whatever they want in the volume after it's 
> created.
> 
> Qian Zhang wrote:
>     A CSI volume can be a pre-provisioned volume so it can already have some 
> submounts under it before users try to use it via Mesos. But you are right, 
> applicaiton can also create submounts under a PV. Maybe we should fix it for 
> PV in a separate ticket? WDYT?

Yea I think you're right, we want to do a recursive mount in both cases. Let's 
fix the PV case in another patch.


- Greg


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


On Aug. 10, 2020, 2:37 a.m., Qian Zhang wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/72733/
> -----------------------------------------------------------
> 
> (Updated Aug. 10, 2020, 2:37 a.m.)
> 
> 
> Review request for mesos, Andrei Budnik and Greg Mann.
> 
> 
> Bugs: MESOS-10153
>     https://issues.apache.org/jira/browse/MESOS-10153
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Implemented the `prepare` method of `volume/csi` isolator.
> 
> 
> Diffs
> -----
> 
>   include/mesos/mesos.proto 0f91d88abba4bd49b46676e956211f1cf4e7219b 
>   include/mesos/v1/mesos.proto f25db8aeefd721653b2027282abbae8f2e6a40f3 
>   src/CMakeLists.txt 4e15e3d99aa2cce2403fe07e762fef2fb4a27dea 
>   src/Makefile.am 447db323875e4cad46000977f4a61600baff8f89 
>   src/common/validation.cpp 14a8c7b9d70c303b527e5e43012999471ced2d78 
>   src/slave/containerizer/mesos/isolators/volume/csi/isolator.hpp 
> PRE-CREATION 
>   src/slave/containerizer/mesos/isolators/volume/csi/isolator.cpp 
> PRE-CREATION 
>   src/slave/containerizer/mesos/isolators/volume/csi/state.hpp PRE-CREATION 
>   src/slave/containerizer/mesos/isolators/volume/csi/state.proto PRE-CREATION 
> 
> 
> Diff: https://reviews.apache.org/r/72733/diff/4/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Qian Zhang
> 
>

Reply via email to