summaryrefslogblamecommitdiffstats
path: root/TODO
blob: 0a89066f40eb2ba0f208d7df2b6262008562297b (plain) (tree)
1
2
3
4
5
6
7
8
9





                                                           


     

                                                







                                                                            














                                                                               
                                                                

                  
                                                                        


                                                         


     








                                                                                  

                                                      
 














                                                                             
                                                                                 
















                                                                                




                                                                   


            

                                                               










                                                                           
                                    
 
 


                             
                                                                       

                                                                  

        
 


                                                                            

                                                                               
 
                                                           
 
                                                     
 







                                                                            






                                                                             


        



                                                                             


                                                           


                                                                                




                                                                             

                                








                                                                                

                      
                                                



    



                                                                                              








                                                                  
                                               
 
                                            
 


                                             
                                      
 



                              




               


                                                                           
 

                                                        
 





                                                                                   
 
                                                     
 


                                                         
 
                   
 













                                                                                
 













                                                                       
 







                                                                                
dmesg
-----

 - add -f (follow) option
   http://www.spinics.net/lists/util-linux-ng/msg04453.html

mount
-----

 (features for new libmount based implemenation)

 - add support for "x-" namespace for mount options. All options with "x-"
   prefix should be ignored. 

   For example x-systemd=, x-upstart-foo, x-libmount-debug=0xffff, ...  

   It's definitely better to have a generic way how ignore some options than
   use comment= for all things.

 - add --source and --target options to specify device and mountpoint

     fstab:
        /dev/sda1 /foo	auto	defaults 0 0
        /foo      /mnt  auto    bind     0 0
     command line:
	mount -o remount,ro /foo

    ... this command is ambiguous. It would be better to have a way how specify
    target or source:

        mount --target /foo -o remount,ro

    Note that findmnt(8) already supports --target and --source.

 - add ---target-prefix option to specify prefix for mountpoints
   so then you can

	LIBMOUNT_FSTAB=/etc/fstab.foo mount -a --target-prefix=$FOO_ROOT

   to create a new hierarchy of filesystems at $FOO_ROOT.

partx
-----

 - add support loop devices:

	partx -a /path/file.img

	* associate the file with loop device (use lib/loopdev.c)
	* map partitions by BLKPG_ADD_PARTITION

 - support mapping by device-mapper if argv[0] is "kpartx" or --dm option is used.
     
 - add regression tests for partx, addpart and delpart


build-sys
--------

 - we use something like

	AC_ARG_ENABLE(...., enable_foo=check)
	build_foo=yes
	if test "x$enable_foo" = xcheck; then
		if test "x$linux_os" = xno; then
			build_foo=no
		fi
	fi
	AM_CONDITIONAL(BUILD_LIBMOUNT, test "x$build_foo" = xyes)

   for Linux-only utils in configure.ac. It would be nice to set all defaults
   for all "$enable_" variables at the begin of the configure script according to
   $linux_os. Something like:

	if test "x$linux_os" = xno
		enable_mount=no
		enable_libmount=no
		enable_lsblk=no
	fi

   then we can remove all "if test "x$enable_foo" = xcheck;" stuff from the rest
   of the configure script.

 - it would be nice to remove all "if BUILD_LIB{MOUNT,BLKID,UUID}" from the 
   Makefiles (e.g. misc-utils/Makefile.am) and use BUILD_<utilname> only

   The configure.ac has to care about dependence between utils and librares and
   enable BUILD_<utilname>.

lib/tt.c
--------

 - allows to sort columns, for example sort lsblk(8) output by SIZE

login-utils:
-----------

 - use err() and warn() macros rather than fprintf(stderr, ...)

losetup
-------

 - don't use ioclts if sysfs supports loop attributes (since 2.6.37,
   block/loopN/loop/* files)

    - don't open loopdev in looplist_next(), check if /sys/block/loopN/loop
      exists and returns ll.name rather than file descriptor

    - add sysfs based version of show_loop() and use it for non-root users

 - move all loopdev code to libmount


shlib (libblkd and libmount):
----------------------------

 - use __attribute__((notnull)) and __attribute__((warn_unused_result))
   Note that the code has to be usefull for non-gcc compilers too.

libblkid
--------

 - remove strerrr() from debug messages (use %m) to make BLKID_DEBUG= output
   thread-safe

 - add -<BE|LE> suffix to test images for native-endian filesystems (e.g. swap)
   and add support for such functionality to tests/ts/blkid/low-probe

 - add FSSIZE value  -- filesystem size (klibc requirement)

 - add support for dasd PT (used for example on s390)

 - support PARTUUID= tag

   * the partitions probing is already supported by low-level part of the
     library, but it's necessary add support for this tag also to high-level
     (blkid_cache) API.

   * add blkid -P <PARTUUID>

wipefs
------

 - some filesystem (namely FAT) contains more magic strings, so if you erase
   one magic string the FS is still detectable by libblkid. We have to inform
   users that there is more valid magic string for the same FS.

fdisk(s)
--------

 * add "move end" command to move end of the last primary/extended partition.
   This feature seems very attractive to users who resizing their disks 
   (for example in virtual machines).

 * sfdisk has to use rpmatch() for answers to y/n questions
   (e.g. "Are you satisfied with this? [ynq]")

 * sfdisk rounds to cylinders is -uM (megabyte units) is specified, this is
   pretty stupid feature. It has to round to sectors if -uS or -uM is specified.

 * Sun label support is completely useless for large disks, it uses number of
   cylinders from on-disk-label where the geometry is stored by int16 values.
   It seems better to completely ignore this stuff from the label and always
   use geometry + BLKGETSIZE64 from kernel.

 * use off_t instead "long long"

 * catch SIGINT (Ctrl-C) and return to main menu.
   From Red Hat bugzilla #545488:

   While using fdisk normally, if you accidentally pressed the wrong button (to
   start a sequence of questions for some operation, e.g. 'c' to create
   partition).  The tool tries too hard to keep asking you for valid input.  You
   can't provide a blank or invalid input to get it to break out of the current
   dialog sequence and get back to the main menu.

 * fdisk/* refactoring

 * add GPT support (probably implement libfdisk)

misc
----

 * switch_root:
     - move all mountpoints to the newroot (there are hardcoded /proc /sys and /dev paths now)
     - add --dont-move[=<list of dirs>] options

 * use ngettext() for strings with plurals, for example

    /* include/nls.h */
    #define P_(id, id_plural, n)	ngettext(id, id_plural, n)

    printf(P_("%d used sector",
              "%d used sectors", sectors),
              sectors);

 * use something better than gtk-doc (doxyden?)

 * use TZ=UTC and LANG=en_US.UTF-8 for tests

 * add mllockall() and SCHED_FIFO to hwclock,
   see http://lkml.org/lkml/2008/10/12/132
 
 * use rpmatch() for all Y/N questions

 * umount by label:
	# mount LABEL=mylabel
	# umount LABEL=mylabel


---------------
exotic requests
---------------

 * mount -a -- reorder fstab entries by paths before mount (just idea only)

 * mount -a  (just idea only)

        Date:   Sun, 3 Jun 2007 18:04:24 +0300 (MET DST)
        From: Szabolcs Szakacsits <szaka@sienet.hu>

	In the past the right record order could be figured out easily by just
	checking out fstab (if one knew what to look for) but considering the
	fastly increasing number of user space file systems and their usage, with
	their path, library, etc dependencies, it's getting trickier and is a black
	magic for most users because they simply expect drives to be mounted
	independently of their order in fstab.

	One typical, wrongly edited fstab example is:

	  /dev/hda2 /             ext3      defaults  1 1
	  /dev/hda1 /mnt/windows  ntfs-3g   defaults  0 0
	  /dev/hda3 /usr          ext3      defaults  0 0

	The events:

	  mount  ->  /sbin/mount.ntfs-3g  ->
		 ->  resolves to <path1>/ntfs-3g via a symlink ->
		 ->  ntfs-3g requires at least <path2>/libfuse*

	There are many potential solutions. For example installing everything on
	the root file system which may be needed for successful mount. But this
	is not always feasible or practical since we could end up putting almost
	everything on the root file system in the end.

	Another idea is an improved mount strategy:

	  do {
		try to mount all unmounted entries
	  } while (not all mounted && at least one new was successfully mounted)

 * rewrite ipcs to use /proc/sys/kernel rather than unreliable syscalls
   (there are problems with 32bit userspace on 64bit kernel)

 * minix v3

	From: Matthias Koenig <mkoenig@suse.de>
	Date:   Tue, 25 Sep 2007 12:00:01 +0200

	It seems that the kernel has support for minix fs v3
	(though I have not tried it, just inspected some code when
	trying to find a mkfs.minix issue).
	It might be worth a thought implementing v3 support
	(though I am not really sure how much people us minix fs ;-)
	This might require some major code cleanup in mkfs.minix.

 * 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.