2022-06-17 | Paul Boddie | raw annotate files changeset graph | Introduced a region mapper thread alongside the actual program to be run in a new task, with the region mapper being moved from the test files into libexec. The region mapper needs to reside in a different area of memory, with a special Makefile definition being employed to indicate this. Various adjustments to the task and thread initialisation mechanisms were required, along with fixes to the program regions provided to the region mapper thread (these having been erroneously specified using the region mapper's own segments). A more flexible method of allocating capability slots to the threads in the new task was introduced, and the mapped IPC gate capability (used by the region mapper to provide its service to the program) also needed a special control right, necessitating the expansion of the mapped capability structure. For performance, more pages are allocated to the ext2 filesystem server. One troublesome issue arose with regard to the first free capability setting and possible capability slot conflicts, necessitating a special adjustment of this setting so that the region mapper and actual program may start without the apparent loss of capabilities, this having been seen to affect the external pager. | mmap-region-flags |
1 Use get_config on a configured Debian build to get a suitable config.h: 2 3 ./get_config ~/Debian/e2fsprogs-1.46.2 > lib/config.h 4 5 An apparently usable configuration of a Debian build: 6 7 ./configure --disable-debugfs --disable-imager --disable-resizer \ 8 --disable-defrag --disable-uuidd --disable-mmp --disable-tdb \ 9 --disable-bmap-stats --disable-nls --disable-fuse2fs \ 10 --enable-libuuid --enable-libblkid 11 12 To make sure that some files are generated, build the software: 13 14 make 15 16 Source and header files are then copied from the following directories in the 17 e2fsprogs distribution: 18 19 version.h -> lib 20 lib/dirpath.h -> lib 21 22 lib/blkid -> lib/libblkid 23 lib/blkid/blkid.h -> include/libblkid/blkid/blkid.h 24 lib/blkid/blkid_types.h -> include/libblkid/blkid/blkid_types.h 25 26 In blkid, the following files should be excluded: 27 28 tst_types.c 29 30 lib/e2p -> lib/libe2p 31 lib/e2p/e2p.h -> include/libe2p/e2p/e2p.h 32 33 lib/et -> lib/libet 34 lib/et/com_error.h -> include/libet/et/com_error.h 35 36 lib/ext2fs -> lib/libext2fs 37 lib/ext2fs/ext*.h -> include/libext2fs/ext2fs 38 lib/ext2fs/bitops.h -> include/libext2fs/ext2fs 39 lib/ext2fs/hashmap.h -> include/libext2fs/ext2fs 40 lib/ext2fs/kernel-jbd.h -> include/libext2fs/ext2fs 41 42 In ext2fs, the following files should be excluded: 43 44 bmove.c 45 dosio.* 46 icount.c 47 imager.c 48 irel_ma.c 49 nt_io.c 50 qcow2.* 51 sparse_io.c 52 tdb* 53 test_io.c 54 tst_*.c 55 undo_io.c 56 version.c 57 58 Here, version.c is excluded since it generally does not change and any new 59 version will break the include statement in the file. 60 61 lib/support -> lib/libsupport 62 lib/support/quotaio.h -> include/libsupport/support/quotaio.h 63 lib/support/sort_r.h -> include/libsupport/support/sort_r.h 64 65 To generate a configuration: 66 67 tools/make_config .../e2fsprogs-x.y.z/lib/config.h