In POSIX the call creat(path,mode) is the same as:

   open(path, O_CREAT | O_TRUNC | O_WRONLY, mode)
                        ^^^^^^^

In PLFS we've got a plfs_create() API that take a "flags" arg:

  plfs_create(const char *path, mode_t mode, int flags, pid_t pid)

that calls to LogicalFS -- ContainerFileSystem::create() in our
case.  To match the POSIX creat() call, ContainerFileSystem::create()
forces O_TRUNC to always be set.

Where the problem comes in is when you call plfs_open() with
O_CREAT|O_WRONLY but no O_TRUNC set (e.g. you want to create
the file if it isn't there, but you don't want to truncate.)
Internally, in ContainerFS, if O_CREAT is set we have
ContainerFileSystem::open() call ContainerFileSystem::create()
to create the file.

The thing here is that for open() with O_CREAT, we only want
to O_TRUNC if the user asks for it...  but the create()
function ignores the user's request and always sets O_TRUNC.

The easist way to resolve this is to have a new file create
function API that honors the O_TRUNC flag rather than ignore
it ("xcreate").  Then ContainerFileSystem::open() can use that.
We can then make ContainerFileSystem::create() a 1 line function
that calls the new xcreate function with the O_TRUNC flag added in.