History log of /dragonfly/usr.sbin/makefs/Makefile (Results 1 – 5 of 5)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 2d60b848 04-Jun-2022 Tomohiro Kusumi <tkusumi@netbsd.org>

usr.sbin/makefs: Add HAMMER2 support

This commit adds HAMMER2 image creation support for makefs(8).
It runs newfs_hammer2(8) and then sys/vfs/hammer2 logic in userspace
to create HAMMER2 image from

usr.sbin/makefs: Add HAMMER2 support

This commit adds HAMMER2 image creation support for makefs(8).
It runs newfs_hammer2(8) and then sys/vfs/hammer2 logic in userspace
to create HAMMER2 image from a given directory.

This commit splits newfs_hammer2(8) into newfs and mkfs part simlarly
to newfs_msdos(8), so that makefs(8) can use newfs functionality.
The entire sys/vfs/hammer2 (with exception of unneeded
hammer2_{bulkfree,ccms,iocom,ioctl,msgops,synchro}.[hc] and reusable
hammer2_disk.h) is copied to usr.sbin/makefs with below modification.
It intends to have minimum amount of diff against sys/vfs/hammer2.

* Header includes are modified so that it compiles in userspace.
* VFS and other kernel functions are usually implemented as simple
stub functions in hammer2_compat.h and hammer2_buf.c, but some are
commented out.
* Kernel functions such as kprintf, kmalloc, kprintf, kstrdup, etc
are implemented using corresponding libc functions.
* Lock primitives are basically NOP, and they (should) never block
as makefs(8) is a single thread program.
* struct vnode and struct buf (the ones defined locally in makefs(8),
not sys/sys/*) have new struct members only used by HAMMER2 to
emulate VFS behavior required by HAMMER2.
* Since makefs(8) is write-only, VOP_{NRESOLVE,NCREATE,NMKDIR,NLINK,
NSYMLINK,WRITE,STRATEGY} are implemented, but other VOPs just
return EOPNOTSUPP.
* VOP_{INACTIVE,RECLAIM} may be implemented and used in future to
better emulate VFS behavior to address current limitation.
* VOP_WRITE is modified to directly call VOP_STRATEGY function.
* The XOP kernel thread is modified to act as a regular function
called from VOPs, along with simplified admin code.

It currently has following limitations.

* multi-volumes is unsupported, simply due to makefs(8) only taking 1
image file path.
* Not necessarily a limitation, but it only supports populating 1 PFS,
which is "DATA" by default. Other PFSes if any won't have anything
under the root PFS inode.
* makefs(8) process gets killed by OOM for a directory with *extremely*
large number of files, depending on available memory. This is due to
the way it currently tries to flush all chains in a single VFS_SYNC.
Supporting multiple VFS_SYNC calls by checking available memory along
the way gives chance to free unused vnodes/inodes and chains. This
may be implemented in future. This limitation is specific to HAMMER2,
as all other makefs(8) filesystems are not CoW, meaning they allow
in-place write based objects creation from a top directory to bottom
whereas HAMMER2 flushes chains in bottom-up direction.

show more ...


Revision tags: v6.2.1, v6.2.0, v6.3.0
# 20f6ddd0 26-Oct-2021 Tomohiro Kusumi <tkusumi@netbsd.org>

usr.sbin/makefs: Add FAT support (taken from FreeBSD)

Basically same as FreeBSD version, except that several denode
functions (that makefs(8) is trying to override kernel ones using
the same name) h

usr.sbin/makefs: Add FAT support (taken from FreeBSD)

Basically same as FreeBSD version, except that several denode
functions (that makefs(8) is trying to override kernel ones using
the same name) have slightly different arguments in DragonFly.

This commit adds #ifdef MAKEFS here and there in
sys/vfs/msdosfs/*.h, which is the same in FreeBSD makefs(8).

FreeBSD makefs(8) now uses m_buf and m_vnode instead of overriding
kernel structs (using that they can't be included in userspace),
but DragonFly still uses buf and vnode defined in makefs(8).

show more ...


Revision tags: v6.0.1, v6.0.0, v6.0.0rc1, v6.1.0
# cdfb6d44 27-Feb-2021 Sascha Wildner <saw@online.de>

Fix -Wundef in some code imported from NetBSD.


Revision tags: v5.8.3, v5.8.2, v5.8.1, v5.8.0, v5.9.0, v5.8.0rc1, v5.6.3, v5.6.2, v5.6.1, v5.6.0, v5.6.0rc1, v5.7.0, v5.4.3, v5.4.2
# 811c2036 10-Feb-2019 Sascha Wildner <saw@online.de>

makefs(8): DragonFly porting.

Some notes:

* UFS2 support has been disabled for now. It would require more UFS2
related pieces in our UFS kernel headers. I might look at enabling
this in the fut

makefs(8): DragonFly porting.

Some notes:

* UFS2 support has been disabled for now. It would require more UFS2
related pieces in our UFS kernel headers. I might look at enabling
this in the future.

* Our CGSIZE() macro causes issues when used in makefs(8), which is
why I'm using FreeBSD's currently.

* makefs(8) uses a local daddr_t type which is 64 bits wide, since
ours is 32 bits.

* I added cg_blks() and cg_blktot() calls in a few places because
our fsck(8) checks them in pass 5. I'm not sure if the associated
fields are actually needed anymore.

show more ...


# 5978408c 10-Feb-2019 Sascha Wildner <saw@online.de>

Bring in most of makefs(8) from FreeBSD unchanged.

To create filesystem images without kernel involvement. We can use it
to create our initrd without needing vn(4).

Originally from NetBSD.