ENBD とか stat とか statfs とか
色々確認中です。
とりあえず確認要件としては_df と ls の結果なサイズの数値が異なる_という事なんですが、statfs とか stat なシステムコールを確認する必要あり、な結論に至ってます。
結論から言えば
enbd ってブロックデバイスなソレしか提供してない、というかレイヤとしては低水準なんで、そこが確認要件な要因ではなさげ、というのが現時点での結論です。
結局そのブロックデバイスにどんなファイルシステムが mount されてるか、というのがある意味一つのポイントな状態。
と、いうのも statfs なカーネル i/f と見られる以下l (fs/open.c) を見ても
int vfs_statfs(struct dentry *dentry, struct kstatfs *buf) { int retval = -ENODEV; if (dentry) { retval = -ENOSYS; if (dentry->d_sb->s_op->statfs) { memset(buf, 0, sizeof(*buf)); retval = security_sb_statfs(dentry); if (retval) return retval; retval = dentry->d_sb->s_op->statfs(dentry, buf); if (retval == 0 && buf->f_frsize == 0) buf->f_frsize = buf->f_bsize; } } return retval; }
元が dentry なんだよな、と。
結局そのブロックデバイスにどのファイルシステムが mount されてるか、が問題なんじゃね、という結論に至ってる今日この頃。