util-linux/Documentation/TODO

203 lines
6.8 KiB
Plaintext
Raw Normal View History

Note that items with (!) have high priority.
libsmartcols
------------
- (!) add libscols_column->json_type and scols_column_set_jsontype()
to generate proper JSON output. Now the library uses quotes (= all is
string) for everything. See for example SIZE in "lsblk --json --bytes"
output.
column
------
- add option to NOT ignore empty lines
https://github.com/karelzak/util-linux/issues/593
script
------
- (!) add terminal type ($TERM), columns and lines to the header line, something like:
Script started on 2018-03-05 13:02:08+0100 [term="xterm-256color", lines=53, columns=190]
see https://github.com/karelzak/util-linux/issues/583
- think about optional "event" records in timing file to save information
about non-data changes like signals (SIGWINCH, SIGSTOP, SIGCONT, etc.)
in format:
<time> 0 <name>[: var=data, ...]
for example:
0.001296 256
0.001297 0 SIGWINCH: columns=50, lines=20
0.000010 275
lsblk
-----
The problem is NVMe-multipath driver where in /sys/.../slaves/ are nodes
that should be probably hidden for userspace. Note that kernel developers
promised to fix this issue in kernel *** so hold off from that for now***
[Mar 1, 2018].
Anyway, possible userspace solution is:
- verify that slave/holder nodes points to the real block devices
(/sys/dev/block/<maj:min> for the node exists), otherwise silently ignore
the slave/holder node -- see set_cxt().
- the same verification we necessary for nodes in /sys/block/<name>. It means
verify result from sysfs_devname_to_devno() in set_cxt().
cleanup lib/path.c: [Karel Zak for v2.33]
------------------
- always return rc from all functions
- introduce control struct and use openat() from top-level path
(e.g. top-level is /proc, etc)
- use lib/path.c as low-level API for lib/sysfs.c
- now we duplicate code in functions like {path,sysfs}_read_u32, etc.
- it would be also nice to have a way how to redirect sysfs.c functions
to /sys snapshots (e.g. lsblk regression tests)
lscpu
-----
- read cpuid and uname information from file if --sysroot is specified, then
we can prepare regression tests completely independent on hw and architecture.
lsblk
-----
- currently it does not show mountpoint for all devices in btrfs RAID. It's because
/proc/#/mountinfo contains reference to the one device only. Maybe we can add some
btrfs specific code to provide a better output for FS based stacks. Not sure.
https://bugzilla.redhat.com/show_bug.cgi?id=1084453
nsenter(1)
----------
- read the default UID and GID from the target process.
http://thread.gmane.org/gmane.linux.utilities.util-linux-ng/9553/focus=9585
hwlock
------
- use /var/lib/hwclock/drift to store hw-clock drift numbers.
- use /etc/adjtime as read-only for UTC/LOCAL information only
- the /var/lib/hwclock/drift should be implemented backwardly compatible,
it means use the file only if exists, otherwise follow /etc/adjtime
bash completion
---------------
- Optional argument handling requires user to press backspace to get
argument completion.
- Comma separated value, e.g., --output 'value1,value2', are not
completed for users.
libmount (mount/umount)
-----------------------
- remount all filesystems given their type, for example:
mount -a -t tmpfs -o remount
It should be probably enough to add remount_all() to mount(8) in way we
already have mount_all(). https://github.com/karelzak/util-linux/issues/589
- add --onlyonce to force mount(8) to check if mountpoint is already used. Now
"already mounted" detection is used for --all only. The problem is if you
call "mount <mountpoint>" more than once for in fstab defined tmpfs (or network
filesystem etc.). In this case kernel does not return EBUSY, but a new instance
of the FS is created. https://github.com/karelzak/util-linux/issues/448
(... just idea, maybe wrong idea)
- support CAP_SYS_ADMIN; for mount(2) syscall the CAP_SYS_ADMIN is good
enough. Unfortunately, mount(8) does more things like check for filesystem
type (but it's usually done by udev, so root perms are unnecessary), create
loop devices, write to /run/mount/utab or /etc/mtab, etc.
It would be nice to improve libmount to check for CAP_SYS_ADMIN if suid not
set and allow to use it for simple tasks where no another operation is
necessary.
- allow to execute mount(2) in another namespace, something like:
mount --namespace=/proc/$n/ns/mnt /dev/sda2 /bar
see https://bugzilla.redhat.com/show_bug.cgi?id=1199554 for more details.
- add options to control fstab/mtab mount options usage, something like:
--options-mode={ignore,append,prepend,replace} MNT_OMODE_{IGNORE, ...}
--options-source={fstab,mtab,disable} MNT_OMODE_{FSTAB,MTAB,NOTAB}
--options-source-force MNT_OMODE_FORCE
(all this already supported by libmount)
partx
-----
- support mapping by device-mapper if argv[0] is "kpartx" or --dm option is used.
docs
----
- (!) use something better than gtk-doc for libmount and libblkid (doxyden?)
- (!) add API documentation to libuuid
exit codes
----------
- we need coreutils-like exit codes for failed exec(). See:
https://www.spinics.net/lists/util-linux-ng/msg12776.html
and original attempt:
https://github.com/karelzak/util-linux/pull/311
login-utils:
-----------
- consolidate newgrp(1)
* we have "su --group/--supp-group" to switch between groups, newgrp(1) in
util-linux and shadow-utils (and sg(1) alias in shadow-utils)
* the unique functionality provided by newgpr(1) is support for group
passwords [/etc/gshadow] -- do we really need this functionality?
* maybe we can mark group-passwords as deprecated, and replace sg(1) and
newgpr(1) with su(1) code. The another way is to ask for group password in
su --group too.
* note that shadow-utils newgpr(1) provides support for syslog and audit log.
libblkid
--------
- (!) don't use internally blkid_loff_t, rather use off_t, size_t, ssize_t,
stdint.h types and so on...
- add FSSIZE value -- filesystem size (klibc requirement)
- (!) add support for dasd PT (used for example on s390)
libfdisk
--------
- add support for Apple Partition Map (see libblkid/src/partitions/mac.c)
http://en.wikipedia.org/wiki/Apple_Partition_Map
misc
----
- add mllockall() and SCHED_FIFO to hwclock,
see http://lkml.org/lkml/2008/10/12/132
---------------
exotic requests
---------------
- add SELinux security contexts support to the 'ipcs' utility
http://bugzilla.redhat.com/show_bug.cgi?id=225342
Would be great to list the current system IPC Objects with their respective
security labels (where allowed) with something like 'ipcs -Z' - following the
way other tools reports those.