[PATCH][WIP] query smb3 reparse tags for special files
Aurélien Aptel
aaptel at suse.com
Thu Oct 22 11:37:15 UTC 2020
Steve French <smfrench at gmail.com> writes:
> smbfsctl.h:#define IO_REPARSE_TAG_LX_SYMLINK 0xA000001D
> smbfsctl.h:#define IO_REPARSE_TAG_LX_FIFO 0x80000024
> smbfsctl.h:#define IO_REPARSE_TAG_LX_CHR 0x80000025
> smbfsctl.h:#define IO_REPARSE_TAG_LX_BLK 0x80000026
>
> These also make sense for us to use more broadly because it simplifies readdir
>
> but ... my first attempt at querying this using infolevel 33
> FileReparsePointInformation (see MS-FSCC section 2.4.35) failed ...
> with Windows 10 returning STATUS_NOT_SUPPORTED when querying various
> reparse points (created by WSL indirectly) including fifos, symlinks
> and char devices.
>
> I can switch approaches and try to do the smb3 fsctl to query reparse
> info instead but was hoping that query info would work. Any idea if
> there is another info level that would allow me to query the tag?
According to [MS-FSCC] if the file has the REPARSE_TAG attribute, the
EaSize field must be interpreted as a reparse tag for these info levels:
* FileFullDirectoryInfo
* FileBothDirectoryInfo
* FileIdFullDirectoryInfo
* FileIdBothDirectoryInfo
Otherwise we have code for querying the reparse tag in
smb2_query_symlink():
rc = SMB2_ioctl_init(tcon, server,
&rqst[1], fid.persistent_fid,
fid.volatile_fid, FSCTL_GET_REPARSE_POINT,
true /* is_fctl */, NULL, 0,
CIFSMaxBufSize -
MAX_SMB2_CREATE_RESPONSE_SIZE -
MAX_SMB2_CLOSE_RESPONSE_SIZE);
--
Aurélien Aptel / SUSE Labs Samba Team
GPG: 1839 CB5F 9F5B FB9B AA97 8C99 03C8 A49B 521B D5D3
SUSE Software Solutions Germany GmbH, Maxfeldstr. 5, 90409 Nürnberg, DE
GF: Felix Imendörffer, Mary Higgins, Sri Rasiah HRB 247165 (AG München)
More information about the samba-technical
mailing list