summaryrefslogtreecommitdiff
path: root/source3/modules/onefs_system.c
diff options
context:
space:
mode:
authortprouty <tprouty@b72e2a10-2d34-0410-9a71-d3beadf02b57>2009-05-02 00:28:38 +0000
committerTim Prouty <tprouty@samba.org>2009-05-05 16:43:53 -0700
commit69d61453df6019caef4e7960fa78c6a3c51f3d2a (patch)
tree406d028c81bc1bf0f33507c00c5f0da7a83cf984 /source3/modules/onefs_system.c
parente091fdc5658e65be290ebb3b62a1bdf517781a65 (diff)
downloadsamba-69d61453df6019caef4e7960fa78c6a3c51f3d2a.tar.gz
samba-69d61453df6019caef4e7960fa78c6a3c51f3d2a.tar.bz2
samba-69d61453df6019caef4e7960fa78c6a3c51f3d2a.zip
s3: Fix trans2 path to use case-insensitive stat optimization
Often times before creating a file, a client will first query to see if it already exists. Since some systems have a case-insensitive stat that is called from unix_convert, we can definitively return STATUS_NO_SUCH_FILE to the client without scanning the whole directory. This code path is taken from trans2querypathinfo, but trans2findfirst still does a full directory scan even though the get_real_filename (the case-insensitive stat vfs call) can prevent this. This patch adds the get_real_filename call to the trans2find* path, and also changes the vfs_default behavior for SMB_VFS_GET_REAL_FILENAME. Previously, in the absence of a get_real_filename implementation, we would fallback to the full directory scan. The default behavior now returns -1 and sets errno to EOPNOTSUPP. This allows SMB_VFS_GET_REALFILENAME to be called from trans2* and unix_convert.
Diffstat (limited to 'source3/modules/onefs_system.c')
0 files changed, 0 insertions, 0 deletions