summaryrefslogtreecommitdiffstats
path: root/utils/gssd/krb5_util.c
diff options
context:
space:
mode:
authorSteve Dickson <steved@redhat.com>2014-06-17 14:01:48 -0400
committerSteve Dickson <steved@redhat.com>2014-06-17 14:03:18 -0400
commit6091c0a4c442f67edf1237347e1cb0eedc7d6fd9 (patch)
tree0cb34fd4b6e315403d1310935466a4cff4892807 /utils/gssd/krb5_util.c
parent3b1457d219ceb1058d44bacc657581f13437ae40 (diff)
downloadnfs-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