File access time changed after upload?

Help
2008-05-19
2013-04-16
  • Chris O'Brien
    Chris O'Brien
    2008-05-19

    Hi Werner,

    I've noticed that some time after I create (or update) a file on a davfs2 volume, the Access/Modify/Change timestamps as reported by 'stat' are changed.  Here's an example:

    ubuntu@ubuntu:davfs$ touch test.txt; while true; do stat test.txt; date; sleep 1; done
      File: `test.txt'
      Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    Device: 16h/22d Inode: 134933776   Links: 1
    Access: (0644/-rw-r--r--)  Uid: ( 1000/  ubuntu)   Gid: ( 1000/  ubuntu)
    Access: 2008-05-19 18:03:36.000000000 -0400
    Modify: 2008-05-19 18:03:36.000000000 -0400
    Change: 2008-05-19 18:03:36.000000000 -0400
    Mon May 19 18:03:36 EDT 2008
      File: `test.txt'
      Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    Device: 16h/22d Inode: 134933776   Links: 1
    Access: (0644/-rw-r--r--)  Uid: ( 1000/  ubuntu)   Gid: ( 1000/  ubuntu)
    Access: 2008-05-19 18:03:36.000000000 -0400
    Modify: 2008-05-19 18:03:36.000000000 -0400
    Change: 2008-05-19 18:03:36.000000000 -0400
    Mon May 19 18:03:37 EDT 2008
      File: `test.txt'
      Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    Device: 16h/22d Inode: 134933776   Links: 1
    Access: (0644/-rw-r--r--)  Uid: ( 1000/  ubuntu)   Gid: ( 1000/  ubuntu)
    Access: 2008-05-19 18:03:36.000000000 -0400
    Modify: 2008-05-19 18:03:36.000000000 -0400
    Change: 2008-05-19 18:03:36.000000000 -0400
    Mon May 19 18:03:38 EDT 2008
      File: `test.txt'
      Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    Device: 16h/22d Inode: 134933776   Links: 1
    Access: (0644/-rw-r--r--)  Uid: ( 1000/  ubuntu)   Gid: ( 1000/  ubuntu)
    Access: 2008-05-19 18:03:36.000000000 -0400
    Modify: 2008-05-19 18:03:36.000000000 -0400
    Change: 2008-05-19 18:03:36.000000000 -0400
    Mon May 19 18:03:39 EDT 2008
      File: `test.txt'
      Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    Device: 16h/22d Inode: 134933776   Links: 1
    Access: (0644/-rw-r--r--)  Uid: ( 1000/  ubuntu)   Gid: ( 1000/  ubuntu)
    Access: 2008-05-19 18:03:36.000000000 -0400
    Modify: 2008-05-19 18:03:36.000000000 -0400
    Change: 2008-05-19 18:03:36.000000000 -0400
    Mon May 19 18:03:40 EDT 2008

    (snip)

      File: `test.txt'
      Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    Device: 16h/22d Inode: 134933776   Links: 1
    Access: (0644/-rw-r--r--)  Uid: ( 1000/  ubuntu)   Gid: ( 1000/  ubuntu)
    Access: 2008-05-19 18:03:36.000000000 -0400
    Modify: 2008-05-19 18:03:36.000000000 -0400
    Change: 2008-05-19 18:03:36.000000000 -0400
    Mon May 19 18:04:08 EDT 2008
      File: `test.txt'
      Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    Device: 16h/22d Inode: 134933776   Links: 1
    Access: (0644/-rw-r--r--)  Uid: ( 1000/  ubuntu)   Gid: ( 1000/  ubuntu)
    Access: 2008-05-19 18:03:36.000000000 -0400
    Modify: 2008-05-19 18:03:36.000000000 -0400
    Change: 2008-05-19 18:03:36.000000000 -0400
    Mon May 19 18:04:09 EDT 2008
      File: `test.txt'
      Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    Device: 16h/22d Inode: 134933776   Links: 1
    Access: (0644/-rw-r--r--)  Uid: ( 1000/  ubuntu)   Gid: ( 1000/  ubuntu)
    Access: 2008-05-19 18:03:45.000000000 -0400
    Modify: 2008-05-19 18:03:45.000000000 -0400
    Change: 2008-05-19 18:03:45.000000000 -0400
    Mon May 19 18:04:10 EDT 2008

    A couple of questions:

    1) Is this expected behavior?
    2) Can it be prevented?

    The relevant portion of /var/log/syslog and a copy of davfs2.conf are pasted below. davfs2 version 1.3.1.

    Thanks,
    Chris

    May 19 18:03:36 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:36 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:36 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:36 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:36 ubuntu mount.davfs: RET: Success
    May 19 18:03:36 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:36 ubuntu mount.davfs: FUSE_OPEN:
    May 19 18:03:36 ubuntu mount.davfs:   n 0x80aed10, f 0104001
    May 19 18:03:36 ubuntu mount.davfs:   pid 8869, mode 00
    May 19 18:03:36 ubuntu mount.davfs: open /test.txt
    May 19 18:03:36 ubuntu mount.davfs: Running pre_send hooks
    May 19 18:03:36 ubuntu mount.davfs: Sending request headers: GET /test.txt HTTP/1.1^M Host: obrien.net.nz:2078^M User-Agent: davfs2/1.3.1 neon/0.26.3^M Connection: TE^M TE: trailers^M Authorization: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx^M ^M
    May 19 18:03:36 ubuntu mount.davfs: Sending request-line and headers:
    May 19 18:03:36 ubuntu mount.davfs: Request sent; retry is 1.
    May 19 18:03:36 ubuntu mount.davfs: [status-line] < HTTP/1.1 200 OK^M
    May 19 18:03:36 ubuntu mount.davfs: [hdr] Date: Mon, 19 May 2008 22:03:34 GMT^M
    May 19 18:03:36 ubuntu mount.davfs: Header Name: [date], Value: [Mon, 19 May 2008 22:03:34 GMT]
    May 19 18:03:36 ubuntu mount.davfs: [hdr] Server: Cpanel::Httpd like Apache^M
    May 19 18:03:36 ubuntu mount.davfs: Header Name: [server], Value: [Cpanel::Httpd like Apache]
    May 19 18:03:36 ubuntu mount.davfs: [hdr] Content-Length: 0^M
    May 19 18:03:36 ubuntu mount.davfs: Header Name: [content-length], Value: [0]
    May 19 18:03:36 ubuntu mount.davfs: [hdr] Connection: Keep-Alive^M
    May 19 18:03:36 ubuntu mount.davfs: Header Name: [connection], Value: [Keep-Alive]
    May 19 18:03:36 ubuntu mount.davfs: [hdr] Keep-Alive: timeout=15, max=100^M
    May 19 18:03:36 ubuntu mount.davfs: Header Name: [keep-alive], Value: [timeout=15, max=100]
    May 19 18:03:36 ubuntu mount.davfs: [hdr] Last-Modified: Mon, 19 May 2008 21:59:07 GMT^M
    May 19 18:03:36 ubuntu mount.davfs: Header Name: [last-modified], Value: [Mon, 19 May 2008 21:59:07 GMT]
    May 19 18:03:36 ubuntu mount.davfs: [hdr] ^M
    May 19 18:03:36 ubuntu mount.davfs: End of headers.
    May 19 18:03:36 ubuntu mount.davfs: Running post_send hooks
    May 19 18:03:36 ubuntu mount.davfs: Request ends, status 200 class 2xx, error line: 200 OK
    May 19 18:03:36 ubuntu mount.davfs: Running destroy hooks.
    May 19 18:03:36 ubuntu mount.davfs: Request ends.
    May 19 18:03:36 ubuntu mount.davfs:   fd 6
    May 19 18:03:36 ubuntu mount.davfs: RET: Success
    May 19 18:03:36 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:36 ubuntu mount.davfs: FUSE_SETATTR:
    May 19 18:03:36 ubuntu mount.davfs:   n 0x80aed10, m 00
    May 19 18:03:36 ubuntu mount.davfs:   uid 0, gid 0
    May 19 18:03:36 ubuntu mount.davfs:   sz 0, at 1211234616,
    May 19 18:03:36 ubuntu mount.davfs:   mt 1211234616
    May 19 18:03:36 ubuntu mount.davfs: setattr /test.txt
    May 19 18:03:36 ubuntu mount.davfs:   set times
    May 19 18:03:36 ubuntu mount.davfs: RET: Success
    May 19 18:03:36 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:36 ubuntu mount.davfs: FUSE_FLUSH: ignored
    May 19 18:03:36 ubuntu mount.davfs: RET: Success
    May 19 18:03:36 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:36 ubuntu mount.davfs: FUSE_RELEASE:
    May 19 18:03:36 ubuntu mount.davfs:   n 0x80aed10, f 0104001
    May 19 18:03:36 ubuntu mount.davfs:   pid 0, fd 6
    May 19 18:03:36 ubuntu mount.davfs:  close /test.txt
    May 19 18:03:36 ubuntu mount.davfs: RET: Success
    May 19 18:03:36 ubuntu mount.davfs: tidy: 1 of 25 nodes changed
    May 19 18:03:37 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:37 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:37 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:37 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:37 ubuntu mount.davfs: RET: Success
    May 19 18:03:38 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:38 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:38 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:38 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:38 ubuntu mount.davfs: RET: Success
    May 19 18:03:39 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:39 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:39 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:39 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:39 ubuntu mount.davfs: RET: Success
    May 19 18:03:40 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:40 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:40 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:40 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:40 ubuntu mount.davfs: RET: Success
    May 19 18:03:41 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:41 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:41 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:41 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:41 ubuntu mount.davfs: RET: Success
    May 19 18:03:42 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:42 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:42 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:42 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:42 ubuntu mount.davfs: RET: Success
    May 19 18:03:43 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:43 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:43 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:43 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:43 ubuntu mount.davfs: RET: Success
    May 19 18:03:44 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:44 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:44 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:44 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:44 ubuntu mount.davfs: RET: Success
    May 19 18:03:45 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:45 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:45 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:45 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:45 ubuntu mount.davfs: RET: Success
    May 19 18:03:46 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:46 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:46 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:46 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:46 ubuntu mount.davfs: RET: Success
    May 19 18:03:46 ubuntu mount.davfs: tidy: 1 of 25 nodes changed
    May 19 18:03:46 ubuntu mount.davfs: Running pre_send hooks
    May 19 18:03:46 ubuntu mount.davfs: Sending request headers: HEAD /test.txt HTTP/1.1^M Host: obrien.net.nz:2078^M User-Agent: davfs2/1.3.1 neon/0.26.3^M Connection: TE^M TE: trailers^M Authorization: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx^M ^M
    May 19 18:03:46 ubuntu mount.davfs: Sending request-line and headers:
    May 19 18:03:46 ubuntu mount.davfs: Request sent; retry is 1.
    May 19 18:03:46 ubuntu mount.davfs: [status-line] < HTTP/1.1 200 OK^M
    May 19 18:03:46 ubuntu mount.davfs: [hdr] Date: Mon, 19 May 2008 22:03:45 GMT^M
    May 19 18:03:46 ubuntu mount.davfs: Header Name: [date], Value: [Mon, 19 May 2008 22:03:45 GMT]
    May 19 18:03:46 ubuntu mount.davfs: [hdr] Server: Cpanel::Httpd like Apache^M
    May 19 18:03:46 ubuntu mount.davfs: Header Name: [server], Value: [Cpanel::Httpd like Apache]
    May 19 18:03:46 ubuntu mount.davfs: [hdr] Content-Length: 0^M
    May 19 18:03:46 ubuntu mount.davfs: Header Name: [content-length], Value: [0]
    May 19 18:03:46 ubuntu mount.davfs: [hdr] Connection: Keep-Alive^M
    May 19 18:03:46 ubuntu mount.davfs: Header Name: [connection], Value: [Keep-Alive]
    May 19 18:03:46 ubuntu mount.davfs: [hdr] Keep-Alive: timeout=15, max=100^M
    May 19 18:03:46 ubuntu mount.davfs: Header Name: [keep-alive], Value: [timeout=15, max=100]
    May 19 18:03:46 ubuntu mount.davfs: [hdr] Last-Modified: Thu, 01 Jan 1970 00:00:00 GMT^M
    May 19 18:03:46 ubuntu mount.davfs: Header Name: [last-modified], Value: [Thu, 01 Jan 1970 00:00:00 GMT]
    May 19 18:03:46 ubuntu mount.davfs: [hdr] ^M
    May 19 18:03:46 ubuntu mount.davfs: End of headers.
    May 19 18:03:46 ubuntu mount.davfs: Running post_send hooks
    May 19 18:03:46 ubuntu mount.davfs: Request ends, status 200 class 2xx, error line: 200 OK
    May 19 18:03:46 ubuntu mount.davfs: Running destroy hooks.
    May 19 18:03:46 ubuntu mount.davfs: Request ends.
    May 19 18:03:46 ubuntu mount.davfs: Running pre_send hooks
    May 19 18:03:46 ubuntu mount.davfs: Sending request headers: PUT /test.txt HTTP/1.1^M Host: obrien.net.nz:2078^M User-Agent: davfs2/1.3.1 neon/0.26.3^M Connection: TE^M TE: trailers^M Content-Length: 0^M Authorization: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx^M ^M
    May 19 18:03:46 ubuntu mount.davfs: Sending request-line and headers:
    May 19 18:03:46 ubuntu mount.davfs: Request sent; retry is 1.
    May 19 18:03:46 ubuntu mount.davfs: [status-line] < HTTP/1.1 201 CREATED^M
    May 19 18:03:46 ubuntu mount.davfs: [hdr] Date: Mon, 19 May 2008 22:03:45 GMT^M
    May 19 18:03:46 ubuntu mount.davfs: Header Name: [date], Value: [Mon, 19 May 2008 22:03:45 GMT]
    May 19 18:03:46 ubuntu mount.davfs: [hdr] Server: Cpanel::Httpd like Apache^M
    May 19 18:03:46 ubuntu mount.davfs: Header Name: [server], Value: [Cpanel::Httpd like Apache]
    May 19 18:03:46 ubuntu mount.davfs: [hdr] Content-Length: 0^M
    May 19 18:03:46 ubuntu mount.davfs: Header Name: [content-length], Value: [0]
    May 19 18:03:46 ubuntu mount.davfs: [hdr] Connection: Keep-Alive^M
    May 19 18:03:46 ubuntu mount.davfs: Header Name: [connection], Value: [Keep-Alive]
    May 19 18:03:46 ubuntu mount.davfs: [hdr] Keep-Alive: timeout=15, max=100^M
    May 19 18:03:46 ubuntu mount.davfs: Header Name: [keep-alive], Value: [timeout=15, max=100]
    May 19 18:03:46 ubuntu mount.davfs: [hdr] ^M
    May 19 18:03:46 ubuntu mount.davfs: End of headers.
    May 19 18:03:46 ubuntu mount.davfs: Running post_send hooks
    May 19 18:03:46 ubuntu mount.davfs: Request ends, status 201 class 2xx, error line: 201 CREATED
    May 19 18:03:46 ubuntu mount.davfs: Running destroy hooks.
    May 19 18:03:46 ubuntu mount.davfs: Request ends.
    May 19 18:03:46 ubuntu mount.davfs: Running pre_send hooks
    May 19 18:03:46 ubuntu mount.davfs: Sending request headers: HEAD /test.txt HTTP/1.1^M Host: obrien.net.nz:2078^M User-Agent: davfs2/1.3.1 neon/0.26.3^M Connection: TE^M TE: trailers^M Authorization: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx^M ^M
    May 19 18:03:46 ubuntu mount.davfs: Sending request-line and headers:
    May 19 18:03:46 ubuntu mount.davfs: Request sent; retry is 1.
    May 19 18:03:47 ubuntu mount.davfs: [status-line] < HTTP/1.1 200 OK^M
    May 19 18:03:47 ubuntu mount.davfs: [hdr] Date: Mon, 19 May 2008 22:03:45 GMT^M
    May 19 18:03:47 ubuntu mount.davfs: Header Name: [date], Value: [Mon, 19 May 2008 22:03:45 GMT]
    May 19 18:03:47 ubuntu mount.davfs: [hdr] Server: Cpanel::Httpd like Apache^M
    May 19 18:03:47 ubuntu mount.davfs: Header Name: [server], Value: [Cpanel::Httpd like Apache]
    May 19 18:03:47 ubuntu mount.davfs: [hdr] Content-Length: 0^M
    May 19 18:03:47 ubuntu mount.davfs: Header Name: [content-length], Value: [0]
    May 19 18:03:47 ubuntu mount.davfs: [hdr] Connection: Keep-Alive^M
    May 19 18:03:47 ubuntu mount.davfs: Header Name: [connection], Value: [Keep-Alive]
    May 19 18:03:47 ubuntu mount.davfs: [hdr] Keep-Alive: timeout=15, max=100^M
    May 19 18:03:47 ubuntu mount.davfs: Header Name: [keep-alive], Value: [timeout=15, max=100]
    May 19 18:03:47 ubuntu mount.davfs: [hdr] Last-Modified: Thu, 01 Jan 1970 00:00:00 GMT^M
    May 19 18:03:47 ubuntu mount.davfs: Header Name: [last-modified], Value: [Thu, 01 Jan 1970 00:00:00 GMT]
    May 19 18:03:47 ubuntu mount.davfs: [hdr] ^M
    May 19 18:03:47 ubuntu mount.davfs: End of headers.
    May 19 18:03:47 ubuntu mount.davfs: Running post_send hooks
    May 19 18:03:47 ubuntu mount.davfs: Request ends, status 200 class 2xx, error line: 200 OK
    May 19 18:03:47 ubuntu mount.davfs: Running destroy hooks.
    May 19 18:03:47 ubuntu mount.davfs: Request ends.
    May 19 18:03:47 ubuntu mount.davfs: tidy: /test.txt
    May 19 18:03:47 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:47 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:47 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:47 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:47 ubuntu mount.davfs: RET: Success
    May 19 18:03:48 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:48 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:48 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:48 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:48 ubuntu mount.davfs: RET: Success
    May 19 18:03:49 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:49 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:49 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:49 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:49 ubuntu mount.davfs: RET: Success
    May 19 18:03:50 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:50 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:50 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:50 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:50 ubuntu mount.davfs: RET: Success
    May 19 18:03:51 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:51 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:51 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:51 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:51 ubuntu mount.davfs: RET: Success
    May 19 18:03:52 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:52 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:52 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:52 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:52 ubuntu mount.davfs: RET: Success
    May 19 18:03:53 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:53 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:53 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:53 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:53 ubuntu mount.davfs: RET: Success
    May 19 18:03:54 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:54 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:54 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:54 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:54 ubuntu mount.davfs: RET: Success
    May 19 18:03:55 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:55 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:55 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:55 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:55 ubuntu mount.davfs: RET: Success
    May 19 18:03:56 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:56 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:56 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:56 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:56 ubuntu mount.davfs: RET: Success
    May 19 18:03:58 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:58 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:58 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:58 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:58 ubuntu mount.davfs: RET: Success
    May 19 18:03:58 ubuntu mount.davfs: tidy: 0 of 25 nodes changed
    May 19 18:03:59 ubuntu mount.davfs: SELECT: 1
    May 19 18:03:59 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:03:59 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:03:59 ubuntu mount.davfs: lookup /test.txt
    May 19 18:03:59 ubuntu mount.davfs: RET: Success
    May 19 18:04:00 ubuntu mount.davfs: SELECT: 1
    May 19 18:04:00 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:04:00 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:04:00 ubuntu mount.davfs: lookup /test.txt
    May 19 18:04:00 ubuntu mount.davfs: RET: Success
    May 19 18:04:01 ubuntu mount.davfs: SELECT: 1
    May 19 18:04:01 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:04:01 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:04:01 ubuntu mount.davfs: lookup /test.txt
    May 19 18:04:01 ubuntu mount.davfs: RET: Success
    May 19 18:04:02 ubuntu mount.davfs: SELECT: 1
    May 19 18:04:02 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:04:02 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:04:02 ubuntu mount.davfs: lookup /test.txt
    May 19 18:04:02 ubuntu mount.davfs: RET: Success
    May 19 18:04:03 ubuntu mount.davfs: SELECT: 1
    May 19 18:04:03 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:04:03 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:04:03 ubuntu mount.davfs: lookup /test.txt
    May 19 18:04:03 ubuntu mount.davfs: RET: Success
    May 19 18:04:04 ubuntu mount.davfs: SELECT: 1
    May 19 18:04:04 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:04:04 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:04:04 ubuntu mount.davfs: lookup /test.txt
    May 19 18:04:04 ubuntu mount.davfs: RET: Success
    May 19 18:04:05 ubuntu mount.davfs: SELECT: 1
    May 19 18:04:05 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:04:05 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:04:05 ubuntu mount.davfs: lookup /test.txt
    May 19 18:04:05 ubuntu mount.davfs: RET: Success
    May 19 18:04:06 ubuntu mount.davfs: SELECT: 1
    May 19 18:04:06 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:04:06 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:04:06 ubuntu mount.davfs: lookup /test.txt
    May 19 18:04:06 ubuntu mount.davfs: RET: Success
    May 19 18:04:07 ubuntu mount.davfs: SELECT: 1
    May 19 18:04:07 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:04:07 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:04:07 ubuntu mount.davfs: lookup /test.txt
    May 19 18:04:07 ubuntu mount.davfs: RET: Success
    May 19 18:04:08 ubuntu mount.davfs: SELECT: 1
    May 19 18:04:08 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:04:08 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:04:08 ubuntu mount.davfs: lookup /test.txt
    May 19 18:04:08 ubuntu mount.davfs: RET: Success
    May 19 18:04:08 ubuntu mount.davfs: tidy: 0 of 25 nodes changed
    May 19 18:04:09 ubuntu mount.davfs: SELECT: 1
    May 19 18:04:09 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:04:09 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:04:09 ubuntu mount.davfs: lookup /test.txt
    May 19 18:04:09 ubuntu mount.davfs: RET: Success
    May 19 18:04:10 ubuntu mount.davfs: SELECT: 1
    May 19 18:04:10 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:04:10 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:04:10 ubuntu mount.davfs: lookup /test.txt
    May 19 18:04:10 ubuntu mount.davfs: Running pre_send hooks
    May 19 18:04:10 ubuntu mount.davfs: Sending request headers: PROPFIND / HTTP/1.1^M Host: obrien.net.nz:2078^M User-Agent: davfs2/1.3.1 neon/0.26.3^M Connection: TE^M TE: trailers^M Depth: 1^M Content-Length: 314^M Content-Type: application/xml^M Authorization: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx^M ^M
    May 19 18:04:10 ubuntu mount.davfs: Sending request-line and headers:
    May 19 18:04:10 ubuntu mount.davfs: Sending request body:
    May 19 18:04:10 ubuntu mount.davfs: Request sent; retry is 1.
    May 19 18:04:10 ubuntu mount.davfs: [status-line] < HTTP/1.1 207 Multi-Status^M
    May 19 18:04:10 ubuntu mount.davfs: [hdr] Date: Mon, 19 May 2008 22:04:08 GMT^M
    May 19 18:04:10 ubuntu mount.davfs: Header Name: [date], Value: [Mon, 19 May 2008 22:04:08 GMT]
    May 19 18:04:10 ubuntu mount.davfs: [hdr] Server: Cpanel::Httpd like Apache^M
    May 19 18:04:10 ubuntu mount.davfs: Header Name: [server], Value: [Cpanel::Httpd like Apache]
    May 19 18:04:10 ubuntu mount.davfs: [hdr] Content-Length: 8758^M
    May 19 18:04:10 ubuntu mount.davfs: Header Name: [content-length], Value: [8758]
    May 19 18:04:10 ubuntu mount.davfs: [hdr] Connection: Keep-Alive^M
    May 19 18:04:10 ubuntu mount.davfs: Header Name: [connection], Value: [Keep-Alive]
    May 19 18:04:10 ubuntu mount.davfs: [hdr] Keep-Alive: timeout=15, max=100^M
    May 19 18:04:10 ubuntu mount.davfs: Header Name: [keep-alive], Value: [timeout=15, max=100]
    May 19 18:04:10 ubuntu mount.davfs: [hdr] Content-Type: text/xml; charset="utf-8"^M
    May 19 18:04:10 ubuntu mount.davfs: Header Name: [content-type], Value: [text/xml; charset="utf-8"]
    May 19 18:04:10 ubuntu mount.davfs: [hdr] ^M
    May 19 18:04:10 ubuntu mount.davfs: End of headers.
    May 19 18:04:10 ubuntu mount.davfs: Reading 8192 bytes of response body.
    May 19 18:04:10 ubuntu mount.davfs: Got 8192 bytes.
    May 19 18:04:10 ubuntu mount.davfs: Reading 566 bytes of response body.
    May 19 18:04:10 ubuntu mount.davfs: Got 566 bytes.
    May 19 18:04:10 ubuntu mount.davfs: Running post_send hooks
    May 19 18:04:10 ubuntu mount.davfs: Request ends, status 207 class 2xx, error line: 207 Multi-Status
    May 19 18:04:10 ubuntu mount.davfs: Running destroy hooks.
    May 19 18:04:10 ubuntu mount.davfs: Request ends.
    May 19 18:04:10 ubuntu mount.davfs: updating node: 0x808c328->0x80aed10
    May 19 18:04:10 ubuntu mount.davfs:   /test.txt
    May 19 18:04:10 ubuntu mount.davfs: updating node: 0x808c328->0x80a8850
    May 19 18:04:10 ubuntu mount.davfs:   /02 - Glsli.mp3
    May 19 18:04:10 ubuntu mount.davfs: updating node: 0x808c328->0x80a8e78
    May 19 18:04:10 ubuntu mount.davfs:   /02 - Sweet Jane (LP Version).mp3
    May 19 18:04:10 ubuntu mount.davfs: updating node: 0x808c328->0x8091288
    May 19 18:04:10 ubuntu mount.davfs:   /10 - Brothers on a Hotel Bed (Album Version).mp3
    May 19 18:04:10 ubuntu mount.davfs: updating node: 0x808c328->0x80a7ab8
    May 19 18:04:10 ubuntu mount.davfs:   /bob/
    May 19 18:04:10 ubuntu mount.davfs: updating node: 0x808c328->0x8093d80
    May 19 18:04:10 ubuntu mount.davfs:   /test2.txt~
    May 19 18:04:10 ubuntu mount.davfs: updating node: 0x808c328->0x80925c0
    May 19 18:04:10 ubuntu mount.davfs:   /07 - Lazy Eye.mp3
    May 19 18:04:10 ubuntu mount.davfs: updating node: 0x808c328->0x80926c0
    May 19 18:04:10 ubuntu mount.davfs:   /04 - Ship Out On The Sea.mp3
    May 19 18:04:10 ubuntu mount.davfs: updating node: 0x808c328->0x8092498
    May 19 18:04:10 ubuntu mount.davfs:   /09 - In Spite Of All The Damage.mp3
    May 19 18:04:10 ubuntu mount.davfs: updating node: 0x808c328->0x8092430
    May 19 18:04:10 ubuntu mount.davfs:   /05 - Letter To Bowie Knife.mp3
    May 19 18:04:10 ubuntu mount.davfs: updating node: 0x808c328->0x8092310
    May 19 18:04:10 ubuntu mount.davfs:   /02 - Evil.mp3
    May 19 18:04:10 ubuntu mount.davfs: updating node: 0x808c328->0x8092180
    May 19 18:04:10 ubuntu mount.davfs:   /gtd.org.backup
    May 19 18:04:10 ubuntu mount.davfs: updating node: 0x808c328->0x8092060
    May 19 18:04:10 ubuntu mount.davfs:   /gtd.org~
    May 19 18:04:10 ubuntu mount.davfs: updating node: 0x808c328->0x80919d8
    May 19 18:04:10 ubuntu mount.davfs:   /projects/
    May 19 18:04:10 ubuntu mount.davfs: updating node: 0x808c328->0x8091518
    May 19 18:04:10 ubuntu mount.davfs:   /gtd.org
    May 19 18:04:10 ubuntu mount.davfs: directory updated: (nil)->0x808c328
    May 19 18:04:10 ubuntu mount.davfs:   /
    May 19 18:04:10 ubuntu mount.davfs: RET: Success
    May 19 18:04:11 ubuntu mount.davfs: SELECT: 1
    May 19 18:04:11 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:04:11 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:04:11 ubuntu mount.davfs: lookup /test.txt
    May 19 18:04:11 ubuntu mount.davfs: RET: Success
    May 19 18:04:12 ubuntu mount.davfs: SELECT: 1
    May 19 18:04:12 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:04:12 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:04:12 ubuntu mount.davfs: lookup /test.txt
    May 19 18:04:12 ubuntu mount.davfs: RET: Success
    May 19 18:04:13 ubuntu mount.davfs: SELECT: 1
    May 19 18:04:13 ubuntu mount.davfs: FUSE_LOOKUP:
    May 19 18:04:13 ubuntu mount.davfs:   p 0x808c328, test.txt
    May 19 18:04:13 ubuntu mount.davfs: lookup /test.txt
    May 19 18:04:13 ubuntu mount.davfs: RET: Success

    # davfs2 configuration file  2007-12-26
    # version 7
    # -------------------------------------

    # Please read the davfs2.conf (5) man page for a description of the
    # configuration options and syntax rules.

    # Available options and default values
    # ====================================

    # General Options
    # ---------------

    # dav_user        davfs2            # system wide config file only
    # dav_group       davfs2            # system wide config file only
    # ignore_home                       # system wide config file only
    # kernel_fs         coda
    # buf_size        16                 # KiByte

    # WebDAV Related Options
    # ----------------------

    # use_proxy       1                 # system wide config file only
    # proxy                             # system wide config file only
    # servercert
    # clientcert
    # secrets         ~/.davfs2/secrets # user config file only
    # ask_auth        1
    use_locks         0
    # lock_owner      <username>
    # lock_timeout    1800              # seconds
    # lock_refresh    60                # seconds
    use_expect100     0
    # if_match_bug    1
    # drop_weak_etags 0
    # allow_cookie    0
    # precheck        1
    # ignore_dav_header 0
    # server_charset
    # use_displayname 0                 # Deprecated. Don't use it or send
                                        # a bug report.
    # read_timeout    30                # seconds
    # retry           30                # seconds
    # max_retry       300               # seconds
    # add_header

    # Cache Related Options
    # ---------------------

    # backup_dir      lost+found
    # cache_dir       /var/cache/davfs2 # system wide cache
    #                 ~/.davfs2/cache   # per user cache
    # cache_size      50                # MiByte
    # table_size      1024
    # dir_refresh     60                # seconds
    # file_refresh    1                 # second
    # delay_upload    10
    # gui_optimize    0

    # Debugging Options
    # -----------------

    debug most           # possible values: config, kernel, cache, http, xml,
                         #      httpauth, locks, ssl, httpbody, secrets, most

     
    • Werner Baumann
      Werner Baumann
      2008-05-20

      Hello Chris,

      it is not intended and I don't get this behaviour when the server is Apache/mod_dav or IIS. But note: when unmounting and mounting again, atime and mtime might chance; this is because davfs2 uses unmounting to resynchronize times with the server, which cannot always be done while running without disturbing some applications.

      Looking at your debug-log: it is hard to tell, what the client (davfs2) should do, considering the garbage returned by the server. Please look at the Last-Modified-Dates as well as the reurn-code of the PUT-request.

      GET /test.txt HTTP/1.1
      Host: obrien.net.nz:2078
      User-Agent: davfs2/1.3.1 neon/0.26.3

      HTTP/1.1 200 OK^M
      Date: Mon, 19 May 2008 22:03:34 GMT
      Server: Cpanel::Httpd like Apache
      Content-Length: 0
      Last-Modified: Mon, 19 May 2008 21:59:07 GMT

      HEAD /test.txt HTTP/1.1
      Host: obrien.net.nz:2078
      User-Agent: davfs2/1.3.1 neon/0.26.3

      HTTP/1.1 200 OK
      Date: Mon, 19 May 2008 22:03:45 GMT
      Server: Cpanel::Httpd like Apache
      Content-Length: 0
      Last-Modified: Thu, 01 Jan 1970 00:00:00 GMT

      PUT /test.txt HTTP/1.1
      Host: obrien.net.nz:2078
      User-Agent: davfs2/1.3.1 neon/0.26.3

      HTTP/1.1 201 CREATED
      Date: Mon, 19 May 2008 22:03:45 GMT
      Server: Cpanel::Httpd like Apache
      Content-Length: 0

      HEAD /test.txt HTTP/1.1
      Host: obrien.net.nz:2078
      User-Agent: davfs2/1.3.1 neon/0.26.3

      HTTP/1.1 200 OK
      Date: Mon, 19 May 2008 22:03:45 GMT
      Server: Cpanel::Httpd like Apache
      Content-Length: 0
      Last-Modified: Thu, 01 Jan 1970 00:00:00 GMT

      PROPFIND / HTTP/1.1
      Host: obrien.net.nz:2078
      User-Agent: davfs2/1.3.1 neon/0.26.3

      HTTP/1.1 207 Multi-Status
      Date: Mon, 19 May 2008 22:04:08 GMT
      Server: Cpanel::Httpd like Apache

      201 Created means: a *new* resource has been created. But this one was already there. The Last-Modified-Dates are a confusing mess. Looks like the server is mixing up "empty files" and "locked null resources", though you are not even using locks. Maybe the server will behave better, when you use a real file (not an empty one).

      Cheers
      Werner

       
    • Werner Baumann
      Werner Baumann
      2008-05-20

      As the server's implemenation of HEAD is buggy, you may want to set option "precheck 0" to avoid HEAD-requests. You might additionally try "if_match_bug 0", to help avoiding lost-update-problems.

      And you should send a Bugreport to the server-maintainer. There seems to be an incresing number of WebDAV-servers that don't even get HEAD right.

      Cheers
      Werner