Acho que foi aí que você errou:
If I try to run:
btrfs subvolume snapshot /mnt/disk/root/snapshots/2015-05-01 /mnt/disk/rootIt creates the new subvolume as /mnt/disk/root/2015-05-01 instead of replacing /mnt/disk/root/.
btrfs subvolume snapshot é usado para criar um instantâneo do primeiro argumento, e colocá-lo no diretório fornecido pelo segundo argumento. Parece que você está esperando para substituir /mnt/disk/root .
Antes de tentar substituir o subvolume /mnt/disk/root , você precisará movê-lo ou excluí-lo (por exemplo, mv /mnt/disk/root /mnt/disk/root-backup-during-restore ). Então faça:
btrfs subvolume snapshot /mnt/disk/root/snapshots/2015-05-01 /mnt/disk/
E então:
mv /mnt/disk/2015-05-01 /mnt/disk/root