Message-ID: <000b01c174a3$9ff1cdc0$0100a8c0@pentiumii> From: "Dennis Louie" To: "Eli Zaretskii" Cc: References: <000801c173e3$de003310$0100a8c0 AT pentiumii> <1438-Fri23Nov2001103147+0200-eliz AT is DOT elta DOT co DOT il> Subject: Re: statfs not returning correct cluster size Date: Fri, 23 Nov 2001 20:44:19 -0800 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-Mimeole: Produced By Microsoft MimeOLE V6.00.2600.0000 Reply-To: djgpp-workers AT delorie DOT com Eli, Is this is the info you wanted? The DOS system call is Int 21h, Function 36h, called via __dpmi_int(0x21, ®s). AX appears to be returning the wrong number of sectors per cluster. I determined experimentally and via PartitionMagic that the cluster size for my C: drive is 1K, so I expect AX to be 2 and CX to be 512, but AX is set to 64. free*bsize gives a number that's close to the free space, but blocks is about half what it should be (assuming bsize is correct - which it isn't). My libc.a is: DJGPP libc built Nov 5 2001 22:01:02 by gcc 2.95.3 20010315/djgpp (release) $ Thanks, Dennis (gdb) s statfs (path=0x1e01 "c:/", buf=0x93304) at statfs.c:146 146 if( 7 <= _osmajor && _osmajor < 10 ) /* Are INT21 AX=7303 and/or (gdb) s 243 if( ! cdrom_calls_used ) (gdb) s 245 if( use_AH0x36( drive_number, &blocks, &free, &bsize ) == -1 ) (gdb) s use_AH0x36 (drive_number=2, blocks=0x93274, free=0x93270, bsize=0x9326c) at statfs.c:104 104 regs.h.ah = 0x36; /* DOS Get Free Disk Space call */ (gdb) s 105 regs.h.dl = drive_number + 1; (gdb) s 106 __dpmi_int(0x21, ®s); (gdb) s 109 if ((regs.x.ax & 0xffff) == 0xffff) (gdb) s 114 *bsize = regs.x.cx * regs.x.ax; (gdb) s 115 *free = regs.x.bx; (gdb) s 116 *blocks = regs.x.dx; (gdb) s 118 return 0; (gdb) p regs.x.cx $2 = 512 (gdb) p regs.x.ax $3 = 64 (gdb) p bsize $4 = (long *) 0x9326c (gdb) p *bsize $5 = 32768 (gdb) where #0 use_AH0x36 (drive_number=2, blocks=0x93274, free=0x93270, bsize=0x9326c) at statfs.c:118 #1 0x26aa in statfs (path=0x1e01 "c:/", buf=0x93304) at statfs.c:245 #2 0x1ecf in main (argc=1, argv=0x93c44) at statfsdbg.c:16 #3 0x416f in __crt1_startup () ----- Original Message ----- From: "Eli Zaretskii" To: "Dennis Louie" Cc: Sent: Friday, November 23, 2001 12:31 AM Subject: Re: statfs not returning correct cluster size > > From: "Dennis Louie" > > Date: Thu, 22 Nov 2001 21:58:24 -0800 > > > > Has anyone encountered a problem with statfs not returning the correct > > info in DJGPP 2.04 for Win2K/XP? I'm running XP Pro. > > > > I have partitions with 1K and 4K cluster sizes, but statfs returns 32K > > for both. It also appears to be returning incorrect values for > > f_blocks, even for disk sizes under 2GB. I seem to be getting the > > correct info for a 1.4MB floppy disk. > > Thanks for reporting this. > > Please step with a debugger into statfs, and see which system call > returns the incorrect info. Then post the results here. >