Migrate to VFS, fix vfs.exists