diff options
author | Steve Dickson <steved@redhat.com> | 2014-06-17 14:01:48 -0400 |
---|---|---|
committer | Steve Dickson <steved@redhat.com> | 2014-06-17 14:03:18 -0400 |
commit | 6091c0a4c442f67edf1237347e1cb0eedc7d6fd9 (patch) | |
tree | 0cb34fd4b6e315403d1310935466a4cff4892807 /utils/gssd/krb5_util.c | |
parent | 3b1457d219ceb1058d44bacc657581f13437ae40 (diff) | |
download | nfs-utils-6091c0a4c442f67edf1237347e1cb0eedc7d6fd9.tar.gz nfs-utils-6091c0a4c442f67edf1237347e1cb0eedc7d6fd9.tar.xz nfs-utils-6091c0a4c442f67edf1237347e1cb0eedc7d6fd9.zip |
mountd: add support for case-insensitive file names
Case insensitive filesystems support textually distinct names for the
same directory. i.e. you can access it with a name other than the
canonical name.
For example if you
mkdir /mnt/export
then add /mnt/EXPORT to /etc/exports, and on a client
mount server:/mnt/EXPORT /import
then the mount will work, but if the kernel on the server needs to
refresh the export information, it will ask about "/mnt/export", which
is not listed in /etc/exports and so will fail.
To fix this we need mountd to perform case-insensitive name
comparisons, but only when the filesystem would, and in exactly the
same way that the filesystem would.
So, when comparing paths for equality first try some simple heuristics
which will not be fooled by case and then ask the kernel if they are
the same.
By preference we use name_to_handle_at() as it reports the mntid which
can distinguish between bind mounts. If that is not available, use
lstat() and compare rdev and ino.
Acked-by: J. Bruce Fields <bfields@fieldses.org>
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Steve Dickson <steved@redhat.com>
Diffstat (limited to 'utils/gssd/krb5_util.c')
0 files changed, 0 insertions, 0 deletions