diff options
author | Jeremy Allison <jra@samba.org> | 2010-05-20 11:36:47 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2010-05-20 11:36:47 -0700 |
commit | a8a4fe0605e6149efb5f9051181d794572edbf27 (patch) | |
tree | 15bcb3771d87fefcd91ae26fbf713c790cbf763e /source3/include | |
parent | a7cab4ea36eb21d7b72efa80a77c702bb92bec62 (diff) | |
download | samba-a8a4fe0605e6149efb5f9051181d794572edbf27.tar.gz samba-a8a4fe0605e6149efb5f9051181d794572edbf27.tar.bz2 samba-a8a4fe0605e6149efb5f9051181d794572edbf27.zip |
Fix bug #7410 - samba sends "raw" inode number as uniqueid with unix extensions.
Move to a consistent get_FileIndex() function for all inode returns,
that checks if st_dev on the file is identical to the top directory
dev_t of the exported share, and if so uses the raw 64-bit inode
number. If it isn't (we've traversed a mount point) - return what
we used to do for Windows which is the concatination of the bottom
32-bits of the inode with the 32-bit device number. We can get more
creative with this over time (hashing?) if we want as now all inode returns go
through this single function.
Jeremy.
Diffstat (limited to 'source3/include')
-rw-r--r-- | source3/include/proto.h | 1 | ||||
-rw-r--r-- | source3/include/smb.h | 3 |
2 files changed, 4 insertions, 0 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h index bd188b1bf1..1586592290 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -6351,6 +6351,7 @@ int sys_statvfs(const char *path, vfs_statvfs_struct *statbuf); /* The following definitions come from smbd/trans2.c */ uint64_t smb_roundup(connection_struct *conn, uint64_t val); +uint64_t get_FileIndex(connection_struct *conn, const SMB_STRUCT_STAT *psbuf); NTSTATUS get_ea_value(TALLOC_CTX *mem_ctx, connection_struct *conn, files_struct *fsp, const char *fname, const char *ea_name, struct ea_struct *pea); diff --git a/source3/include/smb.h b/source3/include/smb.h index e1ec21f22c..e2721700e5 100644 --- a/source3/include/smb.h +++ b/source3/include/smb.h @@ -588,6 +588,9 @@ typedef struct connection_struct { /* Semantics provided by the underlying filesystem. */ int fs_capabilities; + /* Device number of the directory of the share mount. + Used to ensure unique FileIndex returns. */ + SMB_DEV_T base_share_dev; 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). */ |