WebDAV upload-> mmap failed: operation not permitted
I have done this successfully on other servers with .13 so .. ???
For small files it's fine, but for larger than about 70KB it has the following behavior.
- It transfers the file into /var/tmp as several blocks, until the whole file is uploaded from the web browser.
- It creates the target file into the correct folder, with a 0 byte size.
- The following error appears in the error.log:
(mod_webdav.c.1715) mmap failed: Operation not permitted /var/tmp/lighttpd-upload-wuZTa0 10
My configure flags
./configure --host=i686-linux --build=i686-linux --prefix=/usr --mandir=/share/man --infodir=/share/info --sysconfdir=/etc/lighttpd --libdir=/usr/lib/lighttpd --with-webdav-locks --with-webdav-props --with-openssl --with-lua
Some configuration items of consequence
webdav.sqlite-db-name = "/etc/lighttpd/davdb/db" webdav.activate = "enable"
For uploaded files or other request body, fall back to
lseek(),read() if filesystem does not support mmap()
(mmap(), if supported, is utilized regardless of --enable-mmap
since request body is either in memory or stored in temporary
files controlled by lighttpd)
github: closes #55
Updated by Anonymous almost 12 years ago
This host is a virtuozzo virtual machine. /tmp and /var/tmp are virtualized in some unusual way where all virtual machines share one big drive but only see the files owned by them. For example if I do a 'df' it shows 141 gigabytes used on /var/tmp, but there are no files or dirs visible in there to me (a 'du' says '1').
One other interesting detail is that uploads from form POSTs work just fine. It is only webdav that encounters this issue.
When I changed my server.upload-dirs to be a path that was NOT on this weird shared tmp space, the issue goes away and webdav uploads work.
So personally, I no longer "care" about this issue.. but Darix says keep it open for now =)
Updated by Anonymous over 11 years ago
I found the 'mmap' problem with lighttpd when I had to modify CIFS mount parameter, adding 'forcedirectio'. That mount parameter was necesary due to a random problem when writing into CIFS mounts. My CIFS mount is ~ 2TB and is used to store huge ISOs. Rsync / cp was used to transfer those ISOs. Some of them were corrupted.
Also available in: Atom