SquashFS port status update
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 02 Aug 2023 16:22:58 UTC
Hello! Apologies for not writing much but here's the writeup on progress for our squashfs port. I started my work by debugging umount() hook issue, which was running for an infinite loop. After spending some time understanding umount() hook behavior realized it was waiting for a lock on a vnode and vnops_reclain() hook. I implemented both and we finally got working mount() and umount() hooks for squashfs. The PR I created for my mentor to review my code was unfortunately too large so my mentor suggested breaking it down into several small PRs and then pushing for review. I followed his advice and spend some time creating a new review branch and pushing small changes PRs. The first major change my mentor suggested was to not depend on external algorithms for compiling kernel drivers. Squashfs is a compressed file system which means it uses compression algorithms like zlib, zstd, lzma, etc... In the beginning, I used external files like zlib.h to get those compression techniques which is not good for compiling and linking the squashfs driver. My mentor advised me to look at the subr_compressor.c file and check if I can support some compression algorithms defined there for squashfs. I explored that and found we can support zlib and zstd compressions since they are implemented for our kernel. So for now squashfs supports the above two compressions and if time permits we can add support for more from geom. In the meantime, on addressing review comments I Implemented vnops_open() and close() hooks. They are not much complex so it was easy to implement them. To get directories read support, implementing the lookup() hook is mandatory. I managed to implement that and currently finishing up my work on readdir() hook. Once that is tested and is in working condition our directories read support will be completed. Thanks Raghav