[systemd-devel] how to handle filesystems that do not support d_type in readdirs dirent?
tolzmann at molgen.mpg.de
Thu Mar 3 04:05:45 PST 2011
we are currently using reiserfs on our root-partition..
since reiserfs always sets d_type to DT_UNKNOWN in dirent entries some
tools like systemd-tmpfiles do not work as expected.
in src/util.c:3905 DT_UNKNOWN is already included when checking file for
type DT_REG or DT_LNK.
since there seems to be no special handling for symlinks (e.g. checking
the type of the symlinks destionation) i just fixed scandir_filter to
also accept DT_UNKNOWN.
(other) places where DT_REG checks may fail on reiserfs or other fs that
don't support setting the correct type of file in d_type:
src/tty-ask-password-agent.c:510: if (de->d_type != DT_REG)
src/modules-load.c:45: if (d->d_type != DT_REG &&
src/tmpfiles.c:781: if (d->d_type != DT_REG &&
.. how is this supposed to be handled? if the type of a symlinks
destination isn't checked the whole check could be skipped at all?
More information about the systemd-devel