m/p/erofs: add character device test
Also, drive-by fix a misleading comment.
Change-Id: Ic5dc2d16a0c2f453d55f0f698f06f30fd355098a
Reviewed-on: https://review.monogon.dev/c/monogon/+/649
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/metropolis/pkg/erofs/erofs_test.go b/metropolis/pkg/erofs/erofs_test.go
index fbd1af1..fa5f248 100644
--- a/metropolis/pkg/erofs/erofs_test.go
+++ b/metropolis/pkg/erofs/erofs_test.go
@@ -130,6 +130,38 @@
},
},
{
+ name: "Chardev",
+ setup: func(w *Writer) error {
+ if err := w.Create(".", &Directory{
+ Base: Base{GID: 123, UID: 123, Permissions: 0755},
+ Children: []string{"ttyS0"},
+ }); err != nil {
+ return err
+ }
+ err := w.Create("ttyS0", &CharacterDevice{
+ Base: Base{GID: 0, UID: 0, Permissions: 0600},
+ Major: 4,
+ Minor: 64,
+ })
+ if err != nil {
+ return err
+ }
+ return nil
+ },
+ validate: func(t *testing.T) error {
+ var stat unix.Statx_t
+ err := unix.Statx(0, "/test/ttyS0", 0, unix.STATX_ALL, &stat)
+ assert.NoError(t, err, "failed to statx file")
+ require.EqualValues(t, 0, stat.Uid, "wrong Uid")
+ require.EqualValues(t, 0, stat.Gid, "wrong Gid")
+ require.EqualValues(t, 0600, stat.Mode&^unix.S_IFMT, "wrong mode")
+ require.EqualValues(t, unix.S_IFCHR, stat.Mode&unix.S_IFMT, "wrong file type")
+ require.EqualValues(t, 4, stat.Rdev_major, "wrong dev major")
+ require.EqualValues(t, 64, stat.Rdev_minor, "wrong dev minor")
+ return nil
+ },
+ },
+ {
name: "LargeFile",
setup: func(w *Writer) error {
if err := w.Create(".", &Directory{
diff --git a/metropolis/pkg/erofs/inode_types.go b/metropolis/pkg/erofs/inode_types.go
index bac29c5..8147892 100644
--- a/metropolis/pkg/erofs/inode_types.go
+++ b/metropolis/pkg/erofs/inode_types.go
@@ -114,7 +114,7 @@
return i
}
-// CharacterDevice represents a Unix block device inode with major and minor
+// BlockDevice represents a Unix block device inode with major and minor
// numbers.
type BlockDevice struct {
Base