mirror of
https://github.com/samba-team/samba.git
synced 2025-08-04 08:22:08 +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:
@ -658,10 +658,14 @@ typedef struct connection_struct {
|
|||||||
int num_files_open;
|
int num_files_open;
|
||||||
unsigned int num_smb_operations; /* Count of smb operations on this tree. */
|
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_sensitive;
|
||||||
bool case_preserve;
|
bool case_preserve;
|
||||||
bool short_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 *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_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. */
|
name_compare_entry *veto_oplock_list; /* Per-share list of files to refuse oplocks on. */
|
||||||
|
@ -1165,6 +1165,21 @@ static connection_struct *make_connection_snum(int snum, user_struct *vuser,
|
|||||||
}
|
}
|
||||||
#endif
|
#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
|
* Print out the 'connected as' stuff here as we need
|
||||||
* to know the effective uid and gid we will be using
|
* to know the effective uid and gid we will be using
|
||||||
|
Reference in New Issue
Block a user