COW goes back at least to the early days of virtual memory and fork().
On fork() the kernel would arrange for writable pages in the parent
process to be made read-only so that writes to them could be caught
and then the page fault handler would copy the page (and restore write
access) so the parent and child each have their own private copies.
COW as used in ZFS is not the same, but the concept was introduced
very early also, IIRC in the mid-80s -- certainly no later than
BSD4.4's log structure filesystem (which ZFS resembles in many ways).
So, is COW a misnomer? Yes and no, and anyways, it's irrelevant. The
important thing is that when you say COW people understand that you're
not saving a copy of the old thing but rather writing the new thing to
a new location. (The old version of whatever was copied-on-write is
stranded, unless -of course- you have references left to it from
things like snapshots.)
zfs-discuss mailing list