From 0becf4d68329ca599f3e34ee97ca3f72d0e9425f Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 2 Sep 2003 04:37:33 +0000 Subject: thanks to ntfsd and some google searches I worked out what the unknown fields in level 261 and level 262 of directory search are, plus the names of the levels the unknown fields are a 64bit unique file id, and match the 64 bit number from the internal_information qfileinfo level (This used to be commit b69f54eb028a24144a2e813f059b08644118ab09) --- source4/ntvfs/ntvfs_generic.c | 3 +-- source4/ntvfs/simple/svfs_util.c | 11 +++++++++++ source4/ntvfs/simple/vfs_simple.c | 3 +-- 3 files changed, 13 insertions(+), 4 deletions(-) (limited to 'source4/ntvfs') diff --git a/source4/ntvfs/ntvfs_generic.c b/source4/ntvfs/ntvfs_generic.c index def448a671..08c8b88d30 100644 --- a/source4/ntvfs/ntvfs_generic.c +++ b/source4/ntvfs/ntvfs_generic.c @@ -453,8 +453,7 @@ NTSTATUS ntvfs_map_fileinfo(struct request_context *req, union smb_fileinfo *inf return NT_STATUS_OK; case RAW_FILEINFO_INTERNAL_INFORMATION: - info->internal_information.out.device = info2->generic.out.device; - info->internal_information.out.inode = info2->generic.out.inode; + info->internal_information.out.file_id = info2->generic.out.file_id; return NT_STATUS_OK; case RAW_FILEINFO_EA_INFO: diff --git a/source4/ntvfs/simple/svfs_util.c b/source4/ntvfs/simple/svfs_util.c index a8a88cfad0..baa6f86d94 100644 --- a/source4/ntvfs/simple/svfs_util.c +++ b/source4/ntvfs/simple/svfs_util.c @@ -160,3 +160,14 @@ uint16 svfs_unix_to_dos_attrib(mode_t mode) if (!(mode & S_IWUSR)) ret |= FILE_ATTRIBUTE_READONLY; return ret; } + +/* + build a file_id from a stat struct +*/ +large_t svfs_file_id(struct stat *st) +{ + large_t ret = st->st_ino; + ret <<= 32; + ret |= st->st_dev; + return ret; +} diff --git a/source4/ntvfs/simple/vfs_simple.c b/source4/ntvfs/simple/vfs_simple.c index 11763c93b5..c08b36fb39 100644 --- a/source4/ntvfs/simple/vfs_simple.c +++ b/source4/ntvfs/simple/vfs_simple.c @@ -136,8 +136,7 @@ static NTSTATUS svfs_map_fileinfo(struct request_context *req, union smb_fileinf info->generic.out.alloc_size = st->st_blksize * st->st_blocks; info->generic.out.nlink = st->st_nlink; info->generic.out.directory = S_ISDIR(st->st_mode) ? 1 : 0; - info->generic.out.device = st->st_dev; - info->generic.out.inode = st->st_ino; + info->generic.out.file_id = svfs_file_id(st); /* REWRITE: TODO stuff in here */ info->generic.out.delete_pending = 0; info->generic.out.ea_size = 0; -- cgit