- From: Brian Korver <briank@xythos.com>
- Date: Wed, 5 Mar 2003 12:06:00 -0800
- To: "'WebDAV'" <w3c-dist-auth@w3.org>
On Wednesday, March 5, 2003, at 12:21 AM, Julian Reschke wrote: > Brian, > > in the Unix API, you don't move at all -- you link() then unlink(). > "mv" is > just a user command that does it's best when the files reside in > different > partitions. I think WebDAV MOVE should just fail if the resource cannot > really be moved (preserving all dead & live properties), and fail > otherwise. > Just like in the Unix API, the caller *then* can decide to do a > COPY/DELETE > instead. > > Julian Julian, I don't think we can push this behavior out to the client. For the sake of illustration, let's take an hypothetical repository built on a unix filesystem: Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/da0s1f 992239 372 912488 0% /users/briank /dev/da0s1g 3048942 2509636 295391 89% /users/briank/MP3s Now, let's say I've got a file sitting at /users/briank/tmp/groovy.mp3 that I'd like to copy to my MP3s collection. What is my WebDAV client going to do? We have two cases: 1) The server is "smart" and performs a copy/delete Ok, in this case my client issues a MOVE, the server performs a copy/delete (NOT rename(2) [link/unlink]). But notice, this is a server-side copy/delete, not client-side. 2) The server isn't "smart" and thus the client must perform a COPY/DELETE What happens here? The client issues a MOVE, but this must fail because rename(2) doesn't work across file systems. What error does the server return to tell the client that a COPY/DELETE must be performed instead? What is the point of this extra round trip? -brian briank@xythos.com
Received on Wednesday, 5 March 2003 15:06:29 UTC