Posix compliance is a standard that is been followed by many a companies. I have few question around this area, 1. does all the file systems need to be posix compliant? 2. a
In the area of "requires POSIX filesystem semantics" what is typically meant is:
Sometimes it also means symlink/hardlink support as well as file names and 32bit file pointers (minimum). In some cases it is also used to refer specific API features like fcntl()
locking, mmap()
or truncate()
or AIO.
Answering your questions in a very objective way:
1. does all the file systems need to be posix compliant? Actually not. In fact POSIX defines some standards for operational systems in general. Good to have, but no really required.
2. are applications also required to be posix compliant? No.
3. are there any non posix filesystems? HDFS (hadoop file system)
When I think about POSIX compliance for distributed file systems, I use the general standard that a distributed file system is POSIX compliant if multiple processes running on different nodes see the same behavior as if they were running on the same node using a local file system. This basically has two implications:
Although my examples were reads/writes to a single file, correct behavior also includes write/writes to a single file as well as read/writes and write/writes to the hierarchical namespace via calls such as stat/readdir/mkdir/unlink/etc.