summaryrefslogblamecommitdiffstats
path: root/Documentation/TODO
blob: 278ed4894aac38b24c643eaf3502fc82fe581004 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
 
                                             
 






                                                                           




                                                      



















                                                                                                         

















                                                                                
                                         
                  


                                                                   
                                                    



                                                                           





                                                                                  






                                                                                      




                                                                              






                                                                          

               
                                                                    
                      

                                                                
 

                       
 




                                                                               




                                                                                  
                                    
 








                                                                              



                                                                            






                                                                                   
 
 


     

                                                                                  






                                                                             
 






                                                             
 


            





                                                                              
                                                                                

                                                                                 
 
 

        
 


                                                                            
                                                           
 
                                                         
 

        
 


                                                                          


    
                                             

                                          




               
                                                              






                                                                                

 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.