1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-03 04:22:09 +03:00

Cache the underlying filesystem capabilities at connection time.

This change alters the Samba connection code to cache the filesystem
capabilities when a new client connects. This can be used to enable
filesystem specific optimisations is a general manner.
(This used to be commit de3c5b808a)
This commit is contained in:
James Peach
2007-12-22 14:01:25 -08:00
parent df133758c2
commit 1176e04c76
2 changed files with 19 additions and 0 deletions

View File

@ -658,10 +658,14 @@ typedef struct connection_struct {
int num_files_open;
unsigned int num_smb_operations; /* Count of smb operations on this tree. */
/* Semantics requested by the client or forced by the server config. */
bool case_sensitive;
bool case_preserve;
bool short_case_preserve;
/* Semantics provided by the underlying filesystem. */
int fs_capabilities;
name_compare_entry *hide_list; /* Per-share list of files to return as hidden. */
name_compare_entry *veto_list; /* Per-share list of files to veto (never show). */
name_compare_entry *veto_oplock_list; /* Per-share list of files to refuse oplocks on. */

View File

@ -1165,6 +1165,21 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
}
#endif
/* Figure out the characteristics of the underlying filesystem. This
* assumes that all the filesystem mounted withing a share path have
* the same characteristics, which is likely but not guaranteed.
*/
{
vfs_statvfs_struct svfs;
conn->fs_capabilities =
FILE_CASE_SENSITIVE_SEARCH | FILE_CASE_PRESERVED_NAMES;
if (SMB_VFS_STATVFS(conn, conn->connectpath, &svfs) == 0) {
conn->fs_capabilities = svfs.FsCapabilities;
}
}
/*
* Print out the 'connected as' stuff here as we need
* to know the effective uid and gid we will be using