Transactional Filesystem

ByteBuffer read(String filename, long position, long capacity);

ByteBuffer read(String filename, long position) -> read(filename, position, -1);

ByteBuffer read(String filename) -> read(filename, 0, -1);

void write(String filename, long position, ByteBuffer data);

void write(String filename, ByteBuffer data) -> write(filename 0, data)

void delete(String filename)

void rename(String filename, String newname)

void move(String filename, String newname) -> rename(filename, newname)

void copy(String filename, String newname) -> write(newname, read(filename))


Filesystem.startTransaction();
FileSystem.write();
FileSystem.commit();

Open Questions

  1. What is the notion of clients and how is transaction routing resolved when there are concurrent ones happening?