SquashFS port status update

From: Raghav Sharma <raghav_at_freebsd.org>
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