Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Block support list of issues #285

Closed
2 tasks
lpabon opened this issue Oct 26, 2018 · 4 comments
Closed
2 tasks

Block support list of issues #285

lpabon opened this issue Oct 26, 2018 · 4 comments
Assignees
Milestone

Comments

@lpabon
Copy link

lpabon commented Oct 26, 2018

List of issues as I find them. We can create issues from here to address the ones we need to create PRs for (or we can just refer to this issue).

  • NodeUnpublishVolumeRequest() should have VolumeCapability() to determine if it is a block device or not. We need to determine if we need to unmount or remove the symlink
  • NodePublishVolumeRequest() should define what to do as a driver when given a targetPath for a block volume. Right now in Kubernetes-csi we are assuming it is the responsibility of the CO to create the directory where the Symlink will live, for the CO to pass the targetPath (which is the symlink name) and for the CO to create the symlink to the raw device node.
@mkimuram
Copy link

mkimuram commented Nov 1, 2018

I think that we should also add NodeStage/NodeUnstage to this discussion.
So, below should be clearly defined in CSI spec:

  • For both NodeStage/NodeUnstage and NodePublish/NodeUnpublish:

    • who make device accessible via targetPath, CO or SP? --> SP
    • how to make device accessible via targetPath, by bind mount or by symlink? --> By bind mount only
    • who create/delete mount point for bind mount? --> CO
  • For NodePublish/NodeUnpublish:

    • which device should be bind mounted to publish path, device or staging path --> device for NodeStage/NodeUnstage unsupported case and staging path for NodeStage/NodeUnstage supported case?
    • In which case should NodePublish/NodeUnpublish attach/detach device to the node for Node NodeStage/NodeUnstage unsupported case ? --> Both dynamic provisioned case and pre-provisioned case (Need to confirm that it also satisfies pre-provisioned case)?
  • For NodeStage/NodeStage:

    • In which case should NodeStage/NodeStage attach/detach device to the node --> Always?

Above descriptions are not block specific, except whether what is bind mounted is filesystem or device and whether mount point is file or directory. Also, in deciding expression, we will need to consider that filesystem can be directly mounted to the target path instead of bind mount from other place, while block can't, technically. (For filesystem case and NodeStage/NodeUnstage unsupported case, some SP seems to mount filesystem to target path directly. Whether it should be allowed is example for this consideration.)

@saad-ali
Copy link
Member

saad-ali commented Nov 6, 2018

@lpabon can you verify if after the change from symlink to bind mount any of these is still needed?

@saad-ali
Copy link
Member

saad-ali commented Nov 6, 2018

What may be required: clarify that target_path should be created/deleted by CO. For block, it should be a empty file. For mountable FS, it should be a dir.

@saad-ali saad-ali self-assigned this Nov 6, 2018
@saad-ali saad-ali added this to the v1.0 milestone Nov 6, 2018
@jieyu
Copy link
Member

jieyu commented Nov 8, 2018

how to make device accessible via targetPath, by bind mount or by symlink? --> By bind mount only

Thought about this more. Maybe we shouldn't dictate that it has to use bind mount. Maybe some SP prefers directly creating the device node at target_path using mknod? I don't think we should disallow this use case.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants