Lee Cheng Hui

Why nobrl for mount.cifs

What happened?

In the progress of setting up Picoshare (image/video hosting website) for this blog, I was stumped with the following error that caused the container to crash every single time it was launched.

picoshare_1  | 2023/03/11 09:47:27 sqlite.go:48: failed to set pragmas: database is locked                                        

I’m mounting an online storage using cifs to my server, and other containerized applications have no problem accessing it, but why is this?

After a quick search and debugging, the problem seems to be caused by the byte-range lock imposed on the mount by default.

Solution

Now that the problem is known, the command for mounting becomes the following after adding the nobrl flag.

mount.cifs -o user=username,pass=iampassword,iocharset=utf8,file_mode=0774,dir_mode=0774,nobrl //securestorage.com/folder /media/storage

Should I include nobrl everywhere?

Well, probably not. The byte-range lock is on by default for a reason, and should only be disabled if there’s a reason to do so.

By turning the lock off, there’s a risk of data corruption and inconsistencies, especially when multiple users actively use the mount.