无法删除btrfs快照

我有一个系统创build定期btrfs快照并删除旧的。 今天,我开始接受警告,说系统无法删除一些旧的快照。

这是我得到的输出:

root@machine:/path# btrfs sub del 2014-10-26--01-50-01-@ten_minutely Delete subvolume '/path/2014-10-26--01-50-01-@ten_minutely' ERROR: cannot delete '/path/2014-10-26--01-50-01-@ten_minutely' 

我可以创build和删除新的快照,而不会产生任何问题,只是今天创build的其中一些快照会出现此问题。

权限看起来不错。 系统日志显示没有关系。 我检查了btrfs filesystem df ,还有可用于文件系统的空间 – 用于元数据和数据。

一条删除命令显示:

 #... ioctl(3, 0x5000940f, 0xffa1d1f0) = -1 ENOTEMPTY (Directory not empty) close(3) = 0 #... 

我可以采取哪些进一步措施来调查原因?

经过一番挖掘,我find了问题的根源

在无法删除的快照中,有一个子卷 – 显然是另一个快照。 创build定期快照的系统必须为相同path运行两次,因此在第一个快照中创build了第二个快照,而不是采用该名称。

为了logging,我通过普通的cron使用btrfs-snapshot-rotation 。 由于我有多个快照频率,两个必须同时运行。 一个可能的解决scheme是切换到anacron