This series adds a few more cleanups to libxcmd, but they (and the
ones recently) were really just ground work leading up to addressing
a specific underlying problem, which is done in the last patch (or
maybe the last two).
libxcmd includes code to initialize a table with entries that
represent mount points and project directories that may be subject
to quota enforcement. These are then available as targets of
When adding an entry to the table, various things can go wrong.
For example, a path defined in the projects file might not exist,
a mount point specified might not be accessible to the user, or
a memory allocation could fail.
Currently, if any error occurs when inserting an entry into this
"fs_table", exit() is called so the executing program just quits.
Since this table is simply used to define the available targets
of operations, there is no real need to exit when an error occurs
setting up just one of its entries. In some cases everything else
might be just fine, and normally the entry that causes an error is
not even something the user cares to operate on anyway.
The trouble report that led to fixing this had to do with a
situation in which automount left some sort of artifact in the list
of mounted filesystems, and any attempt to run xfs_growfs was met
with an error that prevented it from being run. The errant entry in
/proc/self/mounts contained something like this in the mnt_fsname
field returned by getmntent(): "/tmp/auto7fGuI5 (deleted)"
This series addresses this by both ignoring errors while
initializing fs_table, and by not exiting when an error occurs.