* [PATCH] cifs-utils: smbinfo: add gettconinfo command
@ 2024-07-05 20:43 Anthony Nandaa
2024-07-10 19:49 ` Steve French
0 siblings, 1 reply; 2+ messages in thread
From: Anthony Nandaa @ 2024-07-05 20:43 UTC (permalink / raw)
To: linux-cifs, stfrench, sfrench
Cc: samba-technical, Anthony Nandaa, Pavel Shilovsky
As a follow up on the patch on Linux: de4eceab578e
("smb3: allow dumping session and tcon id to improve stats analysis
and debugging") [1]
Add `gettconinfo` command to dump both the TCON Id and Session Id of
a given SMB mount; to help with correlation in cases when multiple
mounts are to the same share.
Example run:
```
./smbinfo gettconinfo /mnt/smb_share
TCON Id: 0x1
Session Id: 0xa40000000001
```
[1] https://github.com/torvalds/linux/commit/de4eceab578ead12a71e5b5588a57e142bbe8ceb
Cc: Pavel Shilovsky <pshilovsky@samba.org>
Cc: Steve French <stfrench@microsoft.com>
Signed-off-by: Anthony Nandaa <profnandaa@gmail.com>
---
smbinfo | 29 +++++++++++++++++++++++++++++
smbinfo.rst | 2 ++
2 files changed, 31 insertions(+)
diff --git a/smbinfo b/smbinfo
index 73c5bb3..3467b0b 100755
--- a/smbinfo
+++ b/smbinfo
@@ -35,6 +35,7 @@ CIFS_QUERY_INFO = 0xc018cf07
CIFS_ENUMERATE_SNAPSHOTS = 0x800ccf06
CIFS_DUMP_KEY = 0xc03acf08
CIFS_DUMP_FULL_KEY = 0xc011cf0a
+CIFS_GET_TCON_INFO = 0x800ccf0c
# large enough input buffer length
INPUT_BUFFER_LENGTH = 16384
@@ -289,6 +290,10 @@ def main():
sap.add_argument("file")
sap.set_defaults(func=cmd_keys)
+ sap = subp.add_parser("gettconinfo", help="Prints TCON Id and Session Id for a cifs file")
+ sap.add_argument("file")
+ sap.set_defaults(func=cmd_gettconinfo)
+
# parse arguments
args = ap.parse_args()
@@ -876,5 +881,29 @@ def cmd_keys(args):
print("ServerIn Key: %s"%bytes_to_hex(kd.server_in_key))
print("ServerOut key: %s"%bytes_to_hex(kd.server_out_key))
+class SmbMntTconInfoStruct:
+ def __init__(self):
+ self.tid = 0
+ self.session_id = 0
+
+ def ioctl(self, fd):
+ buf = bytearray()
+ buf.extend(struct.pack("=IQ", self.tid, self.session_id))
+ fcntl.ioctl(fd, CIFS_GET_TCON_INFO, buf, True)
+ (self.tid, self.session_id) = struct.unpack_from('=IQ', buf, 0)
+
+def cmd_gettconinfo(args):
+ fd = os.open(args.file, os.O_RDONLY)
+ tcon = SmbMntTconInfoStruct()
+
+ try:
+ tcon.ioctl(fd)
+ except Exception as e:
+ print("syscall failed: %s"%e)
+ return False
+
+ print("TCON Id: 0x%x"%tcon.tid)
+ print("Session Id: 0x%x"%tcon.session_id)
+
if __name__ == '__main__':
main()
diff --git a/smbinfo.rst b/smbinfo.rst
index 1acf3c4..17270c5 100644
--- a/smbinfo.rst
+++ b/smbinfo.rst
@@ -96,6 +96,8 @@ COMMAND
the SMB3 traffic of this mount can be decryped e.g. via wireshark
(requires root).
+`gettconinfo`: Prints both the TCON Id and Session Id for a cifs file.
+
*****
NOTES
*****
--
2.34.1
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] cifs-utils: smbinfo: add gettconinfo command
2024-07-05 20:43 [PATCH] cifs-utils: smbinfo: add gettconinfo command Anthony Nandaa
@ 2024-07-10 19:49 ` Steve French
0 siblings, 0 replies; 2+ messages in thread
From: Steve French @ 2024-07-10 19:49 UTC (permalink / raw)
To: Anthony Nandaa
Cc: linux-cifs, stfrench, sfrench, samba-technical, Pavel Shilovsky,
Pavel Shilovsky
Pavel,
looks good - I checked it out and tested it. It can be helpful in
debugging server logs to have this information (about the tree id and
session id for a particular mount)
Can add my Tested-by and or Reviewed-by if you want
On Fri, Jul 5, 2024 at 3:44 PM Anthony Nandaa <profnandaa@gmail.com> wrote:
>
> As a follow up on the patch on Linux: de4eceab578e
> ("smb3: allow dumping session and tcon id to improve stats analysis
> and debugging") [1]
>
> Add `gettconinfo` command to dump both the TCON Id and Session Id of
> a given SMB mount; to help with correlation in cases when multiple
> mounts are to the same share.
>
> Example run:
> ```
> ./smbinfo gettconinfo /mnt/smb_share
> TCON Id: 0x1
> Session Id: 0xa40000000001
> ```
>
> [1] https://github.com/torvalds/linux/commit/de4eceab578ead12a71e5b5588a57e142bbe8ceb
>
> Cc: Pavel Shilovsky <pshilovsky@samba.org>
> Cc: Steve French <stfrench@microsoft.com>
> Signed-off-by: Anthony Nandaa <profnandaa@gmail.com>
> ---
> smbinfo | 29 +++++++++++++++++++++++++++++
> smbinfo.rst | 2 ++
> 2 files changed, 31 insertions(+)
>
> diff --git a/smbinfo b/smbinfo
> index 73c5bb3..3467b0b 100755
> --- a/smbinfo
> +++ b/smbinfo
> @@ -35,6 +35,7 @@ CIFS_QUERY_INFO = 0xc018cf07
> CIFS_ENUMERATE_SNAPSHOTS = 0x800ccf06
> CIFS_DUMP_KEY = 0xc03acf08
> CIFS_DUMP_FULL_KEY = 0xc011cf0a
> +CIFS_GET_TCON_INFO = 0x800ccf0c
>
> # large enough input buffer length
> INPUT_BUFFER_LENGTH = 16384
> @@ -289,6 +290,10 @@ def main():
> sap.add_argument("file")
> sap.set_defaults(func=cmd_keys)
>
> + sap = subp.add_parser("gettconinfo", help="Prints TCON Id and Session Id for a cifs file")
> + sap.add_argument("file")
> + sap.set_defaults(func=cmd_gettconinfo)
> +
> # parse arguments
> args = ap.parse_args()
>
> @@ -876,5 +881,29 @@ def cmd_keys(args):
> print("ServerIn Key: %s"%bytes_to_hex(kd.server_in_key))
> print("ServerOut key: %s"%bytes_to_hex(kd.server_out_key))
>
> +class SmbMntTconInfoStruct:
> + def __init__(self):
> + self.tid = 0
> + self.session_id = 0
> +
> + def ioctl(self, fd):
> + buf = bytearray()
> + buf.extend(struct.pack("=IQ", self.tid, self.session_id))
> + fcntl.ioctl(fd, CIFS_GET_TCON_INFO, buf, True)
> + (self.tid, self.session_id) = struct.unpack_from('=IQ', buf, 0)
> +
> +def cmd_gettconinfo(args):
> + fd = os.open(args.file, os.O_RDONLY)
> + tcon = SmbMntTconInfoStruct()
> +
> + try:
> + tcon.ioctl(fd)
> + except Exception as e:
> + print("syscall failed: %s"%e)
> + return False
> +
> + print("TCON Id: 0x%x"%tcon.tid)
> + print("Session Id: 0x%x"%tcon.session_id)
> +
> if __name__ == '__main__':
> main()
> diff --git a/smbinfo.rst b/smbinfo.rst
> index 1acf3c4..17270c5 100644
> --- a/smbinfo.rst
> +++ b/smbinfo.rst
> @@ -96,6 +96,8 @@ COMMAND
> the SMB3 traffic of this mount can be decryped e.g. via wireshark
> (requires root).
>
> +`gettconinfo`: Prints both the TCON Id and Session Id for a cifs file.
> +
> *****
> NOTES
> *****
> --
> 2.34.1
>
>
--
Thanks,
Steve
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2024-07-10 19:49 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-05 20:43 [PATCH] cifs-utils: smbinfo: add gettconinfo command Anthony Nandaa
2024-07-10 19:49 ` Steve French
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.