O problema ocorre quando o kernel Linux não consegue gravar o cache de espaço livre em uma instância e, em seguida, tenta gravá-lo novamente. Na segunda tentativa, ele chama `btrfs get extent()` no inode para obter o mapeamento de extensão, mas como se trata de um novo grupo de blocos e o inode de espaço livre sempre pesquisa a raiz de commit para evitar um impasse com a árvore, ele não encontra nada e retorna um `EXTENT MAP HOLE` para o intervalo solicitado. Isso ocorre porque, na primeira vez que o kernel tenta gravar o cache de espaço, ele encontra um erro e descarta o mapeamento de extensão, o que é normal para arquivos comuns, mas não para o inode do cache de espaço livre, onde se espera que o mapa de extensão esteja sempre correto. Como resultado, na segunda tentativa, o kernel acaba com um mapa de extensão incorreto.