From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.126.133]) by sourceware.org (Postfix) with ESMTPS id 8D69E385842A for ; Thu, 19 Aug 2021 09:37:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8D69E385842A Received: from calimero.vinschen.de ([24.134.7.25]) by mrelayeu.kundenserver.de (mreue011 [212.227.15.167]) with ESMTPSA (Nemesis) id 1M72Xn-1m8hLK0UqF-008bv2 for ; Thu, 19 Aug 2021 11:37:45 +0200 Received: by calimero.vinschen.de (Postfix, from userid 500) id 126F8A80DDB; Thu, 19 Aug 2021 11:37:44 +0200 (CEST) Date: Thu, 19 Aug 2021 11:37:44 +0200 From: Corinna Vinschen To: cygwin@cygwin.com Subject: Re: Duplicates in /proc/partitions Message-ID: Reply-To: cygwin@cygwin.com Mail-Followup-To: cygwin@cygwin.com References: <9a770c83-62ef-6849-16e7-e6956f4d2fab@SystematicSw.ab.ca> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: X-Provags-ID: V03:K1://2nWYUb9oStrLme7ZiR8wVjQJOo/+D/MtdPd6vKEGZNx7R9uEs rFmudWKBHhA78cBzN2Fx2Y+NA2BY0j3iroWvLH/scf+J3Jc8HOHwslZBYi91OxsQoT8elme C1+Y6iatYfZWMQrifPQwp1PLJSXYw4WaVOLDUQ0iAWRgmlXQOCF/W0Lxao5cCBxvKSoeWBN H4rK3Pjswbs8x1A3GEQJg== X-UI-Out-Filterresults: notjunk:1;V03:K0:bkvC7mwRgX8=:cMfdDhu4kOWCURVTc5GlON 3DhE0uAx82ZGHj6bDAZBNT/r9LR3PGUhm7GiSmF35LiQxT6KGdjmvvPQC5C8LMg027PMY/80R Ibs12cqHQvbUCZobGMRllVRNzLD2kMRJaBr2lUXNzp0rT0C+gRmxS3Ei05PnkVrexJBTB1BeO 32EpiKtOIuUpr1E/6wNXZq4cVeCDo8FIj1H860Q41cicpfgbJT4L85Zah0ewo6k+VchwAFfEj o0Kofm0cxTq8OBCMBmfKHL7rBm3rj+3owOhCndvLKo9xXzyS+sjXEcoKImgVMXdzhorAQBYFC KpDp8s78QPbpqlRKqR3iRAv3BRHryQsLgksP0J3c1PHJFMHmeT7y+Uk1HXixeCdB8NN9AHb52 0bNbxCrmQ6oxdy0oMP7j1jU2jyu0VCSwns3Qdfra3eZp4FSEqvgWgCWNK8UNxRIo4t4llPwVf POOU+u60YQhZu47Bio6p983Omn4ev5l7yeiLlUjlvRKhzQ/aH5AFt6aqS1y4BQMnlxpJuVfKx 8YfxlBicVncsuqnqs5oF/NzlI+zUc7PddSXueTCJZjGAMr0fH7wfG2yHuvUVKvJUNgrf3MDze zMEFboTrYdeya5cYFZaBPYuKgl8lScO8kEawz0FY6Qg6Q7NzcsqcrzGD1d8k9HWzUuAt4cLRH 9dQMbsC7dTD3fRCxbqcQpq06vKv7G9D2dNa/g45N/3FZP4QF10tDFfpWaKJvGa79b7bn8XT0l BjMOEFoUmmoEjndVTd6PXohm3R88X+29MJTCXfjRivGzC9hoCp41oSZU0ArKcHJR1W1X//bdS exAMlvA1qfC6L243z8dllI7jRqZ1MwLNMANF1R+rT600cOb1cd+m4Hr5CzOSOAcrkRC27Hawj Vy/5qw2I5R4dJzLzJxFg== X-Spam-Status: No, score=-99.9 required=5.0 tests=BAYES_00, GOOD_FROM_CORINNA_CYGWIN, JMQ_SPF_NEUTRAL, KAM_DMARC_NONE, KAM_DMARC_STATUS, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NEUTRAL, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: cygwin@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Aug 2021 09:37:48 -0000 On Aug 18 18:18, Lavrentiev, Anton (NIH/NLM/NCBI) [C] via Cygwin wrote: > > printf ("%5d %5d %9llu sd%c (%lu, %ls)\n", > > 8, (dev_name - 'a') * 16, size >> 10, dev_name, > > (unsigned long) context, dbi->ObjectName.Buffer); > > I replaced with this instead (read_bytes added): > > printf ("%5d %5d %9llu sd%c (%lu, %ls, %u)\n", > 8, (dev_name - 'a') * 16, size >> 10, dev_name, > (unsigned long) context, dbi->ObjectName.Buffer, bytes_read); > > and here's the output: > > $ ./proc_partition > major minor #blocks name win-mounts > > 8 0 500107608 sda (282, Harddisk0, 144) > 8 1 102400 sda1 > 8 2 488280064 sda2 C:\ > 8 16 1000204632 sdb (299, Harddisk1, 144) > 8 17 1000202240 sdb1 D:\ > 8 32 1000204632 sdc (300, Harddisk1, 144) > 8 33 1000202240 sdc1 D:\ > 8 48 1000204632 sdd (313, Harddisk2, 144) > 8 49 1000202240 sdd1 G:\ > 8 64 1000204632 sde (314, Harddisk2, 144) > 8 65 1000202240 sde1 G:\ > 8 80 1000204632 sdf (329, Harddisk3, 144) > 8 81 1000202240 sdf1 I:\ > 8 96 1000204632 sdg (330, Harddisk3, 144) > 8 97 1000202240 sdg1 I:\ > 8 112 234431064 sdh (339, Harddisk4, 144) > 8 113 234428416 sdh1 F:\ > 8 128 234431064 sdi (340, Harddisk4, 144) > 8 129 234428416 sdi1 F:\ > DeviceIoControl (Harddisk5\Partition0, IOCTL_DISK_GET_PARTITION_INFO{_EX}) 5 8 144 0 sdj (352, Harddisk5, 624) > > It prints the correct Harddisk names (corresponding to the > duplicates), so it's consistent. > > I was thinking that the "context" value seems to change just by 1 when > there's a duplicate coming out; otherwise, it jumps by more than 10, > when it is really a new drive... No, that just indicates the offset between entries, remember the "continue" in line 77, skipping non-Harddisk entries. NtQueryDirectoryObject returns context values starting at 1, incrementing by 1. > The directory handle is used (indirectly) in NtOpenFile() through the > attributes, and I wonder if that call somehow distorts the internal > position within the handle, and so it restarts from the wrong internal > position in the outer loop. Unlikely. That's core functionality which *must* work. Corinna