summaryrefslogtreecommitdiff
path: root/mkfs/meta.c
AgeCommit message (Collapse)Author
2019-06-10cleanup: move entire fstree serialization to libsqfs.aDavid Oberhollenzer
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2019-06-10Make sqfs_write_inodes independend of sqfs_info_tDavid Oberhollenzer
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2019-06-10cleanup: move write_inode to separate fileDavid Oberhollenzer
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2019-06-10Generate a flat inode table from the fstree ahead of timeDavid Oberhollenzer
Instead of allocating inode numbers as we go, generate and populat an inode table from the fstree ahead of time. This makes processing nodes a little bit simpler and we will need that table anyway for NFS export support later on. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2019-06-10cleanup: move directory serialization to separate fileDavid Oberhollenzer
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2019-06-09Add workaround to make empty directories with xattrs workDavid Oberhollenzer
The problem: SquashFS uses extended inode types for inodes with xattrs, so for directories we need to generate an ldir inode. The ldir inode type includes a directory index which cannot be empty (the counter is off by 1, so 0 means 1 entry) and the entry is expected to contain a file name with the same issue (must be at least 1 byte). This has probably not really been thought through. What the mksquashfs actually does is generating an ldir inode without an index. The kernel does not bother to read the index, since the size of the directory is 0. Its a hack that just so happens to work. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2019-05-21fix: inode number difference in dirent is actually signedDavid Oberhollenzer
For now, it is enough to reduce the comparison value, since the inode numbers are increasing. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2019-05-20cleanup: remove squashfs type from fstree nodesDavid Oberhollenzer
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2019-05-20cleanup: internalize meta reader/writer implementationsDavid Oberhollenzer
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2019-05-19Add xattr indices to inodesDavid Oberhollenzer
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2019-05-19Fix directory index (yet again)David Oberhollenzer
Turns out (after countless hours of debugging since the squashfs kernel code is so convoluted) that the offset is relative to the first directory header for no apparant reason (the field holding the offset is way larger than neccessary to store absolute values). Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2019-05-13Add yet another magic clutch to squashfs dir entry generationDavid Oberhollenzer
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2019-05-13Generate dir index for extended dir inodeDavid Oberhollenzer
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2019-05-04Rename tools to not collide with squashfs-toolsDavid Oberhollenzer
This commit changes the names of the tools to gensquashfs and rdsquashfs so they don't collide with the names used by the squashfs-tools package and the two can be installed side by side. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
2019-05-02Write inodes to imageDavid Oberhollenzer
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>