Other operating systems in existence at the time Unix was being designed required you to call different system calls depending on what device you were trying to do I/O to. And some operating systems knew about file types and defined the complete set of file types you could deal with - e.g. source code, object files, linked executable, etc. If you wanted a new file type, you had to get the people who provided the operating system (usually the hardware vendor) to add it in the next rev of the OS. This created all sorts of problems.

To try to solve those problems, Thompson, Ritchie, etc. settled on the philosophy that, to the greatest extent possible, all Unix I/O would be treated as nothing more than a stream of bytes, with no structure imposed on it by the operating system. So, device drivers in the kernel try to make files in the filesystem and devices that can only do output (e.g. a printer), etc., look the same to code in the application layer. The philosophy that only applications should impose structure on the data, and that the kernel should always present I/O as an undifferentiated byte stream is one of the things that made Unix such a success. Versioning filesystems run very much counter to the traditional Unix design philosophy.

   Mark Rosenthal


On 5/3/2012 10:09 PM, Shankar Viswanathan wrote:
On Thu, May 3, 2012 at 2:33 PM, Richard Pieri<[email protected]>  wrote:
Snapshots aren't at all close to versioning.  A versioning file system keeps
(or can keep; one can usually configure how many versions to keep) every
version of a file saved.  File system snapshots get the file system state
when the snapshots are made.

For example: create a ZFS snapshot.  Create a file.  Edit it and save it.
  Repeat nine more times.  Create another snapshot.  How many versions of the
file do you have?  You would have just one on ZFS.  You would have all
eleven on a versioning file system.
Talking about versioning filesystems, why haven't they been popular on
Unix/Linux? I know RSX-11 and VMS implemented versioning filesystems
which were used quite extensively in development environments. I am
aware of VFS implementations for Linux such as ext3cow and NILFS but
haven't actually seen them used anywhere. I have always wondered why
we don't see more uses of this idea.

I know ClearCase implements a virtual filesystem to create a "view" of
the versioned object, but I don't believe the versioning is handled
natively in the filesystem -- the versioning I think is handled by a
separate database.

-Shankar
_______________________________________________
Discuss mailing list
[email protected]
http://lists.blu.org/mailman/listinfo/discuss


_______________________________________________
Discuss mailing list
[email protected]
http://lists.blu.org/mailman/listinfo/discuss

Reply via email to