Describe the bug
when i mount a space via WebDAV as described here i can mount the space as a volume just fine, read all files but i can't upload a new file or replace/edit an old file. Trying to results in either an error message: Input/output error
Steps to reproduce
- Check "Show WebDAV in Spaces" option in WebUI settings, create AppToken, copy WebDAV URL from space info
- Mount folder using /etc/fstab: https://192.168.0.197:4443/remote.php/dav/spaces/e050f5cd-669d-4ac6-ba13-d4d204eeccf4$a0f996cc-a7a4-4c2a-aa4b-9c2b9bf996ac/Data /media/opencloud davfs rw,user,auto,nofail,file_mode=0777,dir_mode=0777 0 1
- touch /media/opencloud/test.txt
Expected behavior
Creation of a new file called test.txt in the mounted folder
Actual behavior
Error: touch: cannot touch '/media/opencloud/test.txt': Input/output error
Log: journalctl -t mount.davfs --since "2 min ago"
May 29 07:56:19 dirkfl mount.davfs[4775]: SELECT: 1
22 │ May 29 07:56:19 dirkfl mount.davfs[4775]: FUSE_LOOKUP:
23 │ May 29 07:56:19 dirkfl mount.davfs[4775]: p 0x5555ad52cd00, test.txt
24 │ May 29 07:56:19 dirkfl mount.davfs[4775]: lookup /remote.php/dav/spaces/e050f5cd-669d-4ac6-ba13-d4d204eeccf4$a0f996cc-a7a4-4c2a-aa4b-9c2b9bf996ac/Data/test.txt
25 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Running pre_send hooks
26 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Sending request headers:
27 │ PROPFIND /remote.php/dav/spaces/e050f5cd-669d-4ac6-ba13-d4d204eeccf4%%24a0f996cc-a7a4-4c2a-aa4b-9c2b9bf9
28 │ May 29 07:56:19 dirkfl mount.davfs[4775]: 96ac/Data/ HTTP/1.1
29 │ User-Agent: davfs2/1.7.1 neon/0.34.2
30 │ Connection: TE
31 │ TE: trailers
32 │ Host: 192.168.0.197:4443
33 │ Depth: 1
34 │ Con
35 │ May 29 07:56:19 dirkfl mount.davfs[4775]: tent-Length: 257
36 │ Content-Type: application/xml
37 │ Authorization: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
38 │ May 29 07:56:19 dirkfl mount.davfs[4775]: xxxxxxxxxxxxxx
39 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Sending request-line and headers:
40 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Sending request body:
41 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Request sent; retry is 1.
42 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: HTTP/1.1 207 Multi-Status
43 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Access-Control-Expose-Headers: Tus-Resumable, Tus-Version, Tus-Extension
44 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [access-control-expose-headers] = [Tus-Resumable, Tus-Version, Tus-Extension]
45 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Content-Length: 1921
46 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [content-length] = [1921]
47 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Content-Security-Policy: child-src 'self'; connect-src 'self' blob: https://raw.githubusercontent.com/opencloud-eu/aw
48 │ May 29 07:56:19 dirkfl mount.davfs[4775]: esome-apps/ https://update.opencloud.eu/ https://companion.opencloud.test:4443/ wss://companion.opencloud.test:4443/ https://key
49 │ May 29 07:56:19 dirkfl mount.davfs[4775]: cloak.opencloud.test:4443/; default-src 'none'; font-src 'self'; frame-ancestors 'self'; frame-src 'self' blob: https://embed.di
50 │ May 29 07:56:19 dirkfl mount.davfs[4775]: agrams.net/ https://collabora.xxxx.xx:4443/ https://docs.opencloud.eu; img-src 'self' data: blob: https://raw.githubusercontent.
51 │ May 29 07:56:19 dirkfl mount.davfs[4775]: com/opencloud-eu/awesome-apps/ https://tile.openstreetmap.org/ https://collabora.dirk.fl:4443/; manifest-src 'self'; media-src '
52 │ May 29 07:56:19 dirkfl mount.davfs[4775]: self'; object-src 'self' blob:; script-src 'self' 'unsafe-inline' https://keycloak.opencloud.test:4443/; style-src 'self' 'unsaf
53 │ May 29 07:56:19 dirkfl mount.davfs[4775]: e-inline'
54 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [content-security-policy] = [child-src 'self'; connect-src 'self' blob: https://raw.githubusercontent.com/opencloud
55 │ May 29 07:56:19 dirkfl mount.davfs[4775]: -eu/awesome-apps/ https://update.opencloud.eu/ https://companion.opencloud.test:4443/ wss://companion.opencloud.test:4443/ https
56 │ May 29 07:56:19 dirkfl mount.davfs[4775]: ://keycloak.opencloud.test:4443/; default-src 'none'; font-src 'self'; frame-ancestors 'self'; frame-src 'self' blob: https://em
57 │ May 29 07:56:19 dirkfl mount.davfs[4775]: bed.diagrams.net/ https://collabora.xxxx.xx:4443/ https://docs.opencloud.eu; img-src 'self' data: blob: https://raw.githubuserco
58 │ May 29 07:56:19 dirkfl mount.davfs[4775]: ntent.com/opencloud-eu/awesome-apps/ https://tile.openstreetmap.org/ https://collabora.dirk.fl:4443/; manifest-src 'self'; media
59 │ May 29 07:56:19 dirkfl mount.davfs[4775]: -src 'self'; object-src 'self' blob:; script-src 'self' 'unsafe-inline' https://keycloak.opencloud.test:4443/; style-src 'self'
60 │ May 29 07:56:19 dirkfl mount.davfs[4775]: 'unsafe-inline']
61 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Content-Type: application/xml; charset=utf-8
62 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [content-type] = [application/xml; charset=utf-8]
63 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Date: Fri, 29 May 2026 11:56:19 GMT
64 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [date] = [Fri, 29 May 2026 11:56:19 GMT]
65 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Dav: 1, 3, extended-mkcol
66 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [dav] = [1, 3, extended-mkcol]
67 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Referrer-Policy: strict-origin-when-cross-origin
68 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [referrer-policy] = [strict-origin-when-cross-origin]
69 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Tus-Extension: creation, creation-with-upload, checksum, expiration
70 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [tus-extension] = [creation, creation-with-upload, checksum, expiration]
71 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Tus-Resumable: 1.0.0
72 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [tus-resumable] = [1.0.0]
73 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Tus-Version: 1.0.0
74 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [tus-version] = [1.0.0]
75 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Vary: Origin, Prefer
76 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [vary] = [Origin, Prefer]
77 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: X-Content-Type-Options: nosniff
78 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [x-content-type-options] = [nosniff]
79 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: X-Frame-Options: SAMEORIGIN
80 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [x-frame-options] = [SAMEORIGIN]
81 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: X-Permitted-Cross-Domain-Policies: none
82 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [x-permitted-cross-domain-policies] = [none]
83 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: X-Request-Id: f7fd731f7bbb/GWZ7ri6yMW-000050
84 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [x-request-id] = [f7fd731f7bbb/GWZ7ri6yMW-000050]
85 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: X-Robots-Tag: none
86 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [x-robots-tag] = [none]
87 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: X-Xss-Protection: 1; mode=block
88 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [x-xss-protection] = [1; mode=block]
89 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line:
90 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: End of headers.
91 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Running post_headers hooks
92 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Reading 1921 bytes of response body.
93 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Got 1921 bytes.
94 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Running post_send hooks
95 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Request ends, status 207 class 2xx, error line:
96 │ 207 Multi-Status
97 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Running destroy hooks.
98 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Request ends.
Setup
latest docker-compose version of opencloud running on latest raspios (Debian Trixie)
davfs2 version 1.7.1
Describe the bug
when i mount a space via WebDAV as described here i can mount the space as a volume just fine, read all files but i can't upload a new file or replace/edit an old file. Trying to results in either an error message: Input/output error
Steps to reproduce
Expected behavior
Creation of a new file called test.txt in the mounted folder
Actual behavior
Error: touch: cannot touch '/media/opencloud/test.txt': Input/output error
Log: journalctl -t mount.davfs --since "2 min ago"
May 29 07:56:19 dirkfl mount.davfs[4775]: SELECT: 1
22 │ May 29 07:56:19 dirkfl mount.davfs[4775]: FUSE_LOOKUP:
23 │ May 29 07:56:19 dirkfl mount.davfs[4775]: p 0x5555ad52cd00, test.txt
24 │ May 29 07:56:19 dirkfl mount.davfs[4775]: lookup /remote.php/dav/spaces/e050f5cd-669d-4ac6-ba13-d4d204eeccf4$a0f996cc-a7a4-4c2a-aa4b-9c2b9bf996ac/Data/test.txt
25 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Running pre_send hooks
26 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Sending request headers:
27 │ PROPFIND /remote.php/dav/spaces/e050f5cd-669d-4ac6-ba13-d4d204eeccf4%%24a0f996cc-a7a4-4c2a-aa4b-9c2b9bf9
28 │ May 29 07:56:19 dirkfl mount.davfs[4775]: 96ac/Data/ HTTP/1.1
29 │ User-Agent: davfs2/1.7.1 neon/0.34.2
30 │ Connection: TE
31 │ TE: trailers
32 │ Host: 192.168.0.197:4443
33 │ Depth: 1
34 │ Con
35 │ May 29 07:56:19 dirkfl mount.davfs[4775]: tent-Length: 257
36 │ Content-Type: application/xml
37 │ Authorization: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
38 │ May 29 07:56:19 dirkfl mount.davfs[4775]: xxxxxxxxxxxxxx
39 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Sending request-line and headers:
40 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Sending request body:
41 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Request sent; retry is 1.
42 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: HTTP/1.1 207 Multi-Status
43 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Access-Control-Expose-Headers: Tus-Resumable, Tus-Version, Tus-Extension
44 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [access-control-expose-headers] = [Tus-Resumable, Tus-Version, Tus-Extension]
45 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Content-Length: 1921
46 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [content-length] = [1921]
47 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Content-Security-Policy: child-src 'self'; connect-src 'self' blob: https://raw.githubusercontent.com/opencloud-eu/aw
48 │ May 29 07:56:19 dirkfl mount.davfs[4775]: esome-apps/ https://update.opencloud.eu/ https://companion.opencloud.test:4443/ wss://companion.opencloud.test:4443/ https://key
49 │ May 29 07:56:19 dirkfl mount.davfs[4775]: cloak.opencloud.test:4443/; default-src 'none'; font-src 'self'; frame-ancestors 'self'; frame-src 'self' blob: https://embed.di
50 │ May 29 07:56:19 dirkfl mount.davfs[4775]: agrams.net/ https://collabora.xxxx.xx:4443/ https://docs.opencloud.eu; img-src 'self' data: blob: https://raw.githubusercontent.
51 │ May 29 07:56:19 dirkfl mount.davfs[4775]: com/opencloud-eu/awesome-apps/ https://tile.openstreetmap.org/ https://collabora.dirk.fl:4443/; manifest-src 'self'; media-src '
52 │ May 29 07:56:19 dirkfl mount.davfs[4775]: self'; object-src 'self' blob:; script-src 'self' 'unsafe-inline' https://keycloak.opencloud.test:4443/; style-src 'self' 'unsaf
53 │ May 29 07:56:19 dirkfl mount.davfs[4775]: e-inline'
54 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [content-security-policy] = [child-src 'self'; connect-src 'self' blob: https://raw.githubusercontent.com/opencloud
55 │ May 29 07:56:19 dirkfl mount.davfs[4775]: -eu/awesome-apps/ https://update.opencloud.eu/ https://companion.opencloud.test:4443/ wss://companion.opencloud.test:4443/ https
56 │ May 29 07:56:19 dirkfl mount.davfs[4775]: ://keycloak.opencloud.test:4443/; default-src 'none'; font-src 'self'; frame-ancestors 'self'; frame-src 'self' blob: https://em
57 │ May 29 07:56:19 dirkfl mount.davfs[4775]: bed.diagrams.net/ https://collabora.xxxx.xx:4443/ https://docs.opencloud.eu; img-src 'self' data: blob: https://raw.githubuserco
58 │ May 29 07:56:19 dirkfl mount.davfs[4775]: ntent.com/opencloud-eu/awesome-apps/ https://tile.openstreetmap.org/ https://collabora.dirk.fl:4443/; manifest-src 'self'; media
59 │ May 29 07:56:19 dirkfl mount.davfs[4775]: -src 'self'; object-src 'self' blob:; script-src 'self' 'unsafe-inline' https://keycloak.opencloud.test:4443/; style-src 'self'
60 │ May 29 07:56:19 dirkfl mount.davfs[4775]: 'unsafe-inline']
61 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Content-Type: application/xml; charset=utf-8
62 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [content-type] = [application/xml; charset=utf-8]
63 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Date: Fri, 29 May 2026 11:56:19 GMT
64 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [date] = [Fri, 29 May 2026 11:56:19 GMT]
65 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Dav: 1, 3, extended-mkcol
66 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [dav] = [1, 3, extended-mkcol]
67 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Referrer-Policy: strict-origin-when-cross-origin
68 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [referrer-policy] = [strict-origin-when-cross-origin]
69 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Tus-Extension: creation, creation-with-upload, checksum, expiration
70 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [tus-extension] = [creation, creation-with-upload, checksum, expiration]
71 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Tus-Resumable: 1.0.0
72 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [tus-resumable] = [1.0.0]
73 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Tus-Version: 1.0.0
74 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [tus-version] = [1.0.0]
75 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: Vary: Origin, Prefer
76 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [vary] = [Origin, Prefer]
77 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: X-Content-Type-Options: nosniff
78 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [x-content-type-options] = [nosniff]
79 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: X-Frame-Options: SAMEORIGIN
80 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [x-frame-options] = [SAMEORIGIN]
81 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: X-Permitted-Cross-Domain-Policies: none
82 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [x-permitted-cross-domain-policies] = [none]
83 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: X-Request-Id: f7fd731f7bbb/GWZ7ri6yMW-000050
84 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [x-request-id] = [f7fd731f7bbb/GWZ7ri6yMW-000050]
85 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: X-Robots-Tag: none
86 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [x-robots-tag] = [none]
87 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line: X-Xss-Protection: 1; mode=block
88 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Header: [x-xss-protection] = [1; mode=block]
89 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: Line:
90 │ May 29 07:56:19 dirkfl mount.davfs[4775]: req: End of headers.
91 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Running post_headers hooks
92 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Reading 1921 bytes of response body.
93 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Got 1921 bytes.
94 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Running post_send hooks
95 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Request ends, status 207 class 2xx, error line:
96 │ 207 Multi-Status
97 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Running destroy hooks.
98 │ May 29 07:56:19 dirkfl mount.davfs[4775]: Request ends.
Setup
latest docker-compose version of opencloud running on latest raspios (Debian Trixie)
davfs2 version 1.7.1