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

nobrl flag on volume mounts causes silent errors #694

Closed
lokkju opened this issue May 2, 2017 · 8 comments

Comments

@lokkju
Copy link

commented May 2, 2017

in #11, the nobrl flag was added to the mount options, causing lock requests to not be send to the CIFS server. This causes silent corruption in sqlite when using journaling. While nobrl may be a valid solution in some cases, having it as a non-documented, non-configurable, mount flag provides the illusion of locking working, without any warning to the user that their applications could silently fail if they need file locking, mmap, etc.

I'm not sure what the solution is, other than perhaps not using CIFS for access to the underlying file system. Has there been any consideration of a direct-access local volume driver?

@friism

This comment has been minimized.

Copy link

commented May 2, 2017

We don't have a viable alternative to CIFS at the moment even though it has a number of drawbacks.

Docker for Windows is a development tool. Is the current setting impeding using Docker for Windows for development purposes?

@lokkju

This comment has been minimized.

Copy link
Author

commented May 3, 2017

At the moment, it is blocking me from using sqlite db files reliably in my host mounted config folders; essentially the nobrl flag addition in #11 hid the problem instead of solving it. Since I often use sqlite in development, it's a real problem. Each time a container doesn't exit cleanly, or two process attempt to use the same file, the risk of corruption occurs. At the very least, it should be very well documented that any functionality that relies on file locking will be broken on host volumes. Preferably, it should be a configurable option on a per container basis.

Of course, the best would be not using CIFS, but I understand that is an large undertaking.

@friism

This comment has been minimized.

Copy link

commented May 3, 2017

I agree that it should be documented, cc @londoncalling.

@lokkju can you use a named volume? docker volume create. The would be Linux-only.

Michael

@lokkju

This comment has been minimized.

Copy link
Author

commented May 3, 2017

Oh, interesting; so volume create, creates a location in the MobyLinuxVM? That might work. Is there any easy way to access that from the host, as well?

@friism

This comment has been minimized.

Copy link

commented May 3, 2017

No, those Linux volumes are not easily accessible from the Windows host.

@Andy2244

This comment has been minimized.

Copy link

commented Dec 6, 2017

I suspect my #1385 has a similar problem with sqlite+wal under headphones, but with the new lcow. What is lcow using internally, is it also cifs?
The bigger problem is that even using volumes + lcow results in i/o errors, so there is no fix atm.

@Elehiggle

This comment has been minimized.

Copy link

commented Jan 28, 2018

It took me 4 days to come here and figure out what is causing issues with my containers. You can use SMB with vers=1.0, that will work with SQlite databases. But unfortunately it has many other drawbacks and issues (POSIX leaks, I guess due to locking issues as well). I'll use SMBv3 now with the nobrl flag, but will create an extra mount just for SickRage. With backups it should be fine.

@docker-desktop-robot

This comment has been minimized.

Copy link
Collaborator

commented May 9, 2018

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale comment.
Stale issues will be closed after an additional 30d of inactivity.

Prevent issues from auto-closing with an /lifecycle frozen comment.

If this issue is safe to close now please do so.

Send feedback to Docker Community Slack channels #docker-for-mac or #docker-for-windows.
/lifecycle stale

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
5 participants
You can’t perform that action at this time.