Re: File Limits

Bryan J Smith <[email protected]>
Newsgroups org.kernel.vger.linux-msdos
Message-ID <[email protected]>
Then it's using the extended functions that legacy DOS Int 21h programs do not 
understand.  They may have merged in some NT/Win32 extensions in late Windows 98 
SE and Me.  They weren't in there for Windows 95, not even OEM 2 (MS-DOS 7.1) 
when I tested them.

-- 
Bryan J  Smith     Professional, Technical Annoyance 
Linked Profile:   http://www.linkedin.com/in/bjsmith 
---------------------------------------------------- 
UCF Basketball:   AP #23, ESPN/USAToday #22, RPI #17
UCF Football:   AP #21, BCS #25, ESPN/USAToday #20



----- Original Message ----
From: Xavier Tarifa <[email protected]>
To: Bryan J Smith <[email protected]>
Cc: "[email protected]" <[email protected]>
Sent: Tue, January 18, 2011 1:10:08 PM
Subject: RE: File Limits

I just created a 3 gb file on a dos 7.10 and it worked (worked as in dir tells 
the correct filesize). I'll have to wait a day or two to test it against our 
database because I'm offsite, then I'll report back the results.

-----Mensaje original-----
De: [email protected] [mailto:[email protected]] 
En nombre de Bryan J Smith
Enviado el: martes, 18 de enero de 2011 18:35
Para: Xavier Tarifa; [email protected]
Asunto: Re: File Limits

All DOS (including DOS 7/Win 4 releases running in 386Enhanced mode -- Windows 
95, 98, Me) only support 2GiB files IIRC.  Even Real86 mode DOS 7 supports 
FAT32, which allows bigger than 2GiB _file_systems_, but still has the 2GiB-1 
(signed 32-bit int) _individual_file_ size limitation IIRC.


In fact, I don't think the 4GiB-1 (unsigned 32-bit int) support is in any 
DOS/Win releases.  I only think it is an option in NT kernels (FAT16 in 3.1, 
3.5, 3.51 and 4.0, FAT16 and FAT32 in 5.0/2000, 5.1/XP-2003, 6.0-Vista and 
6.1/7-2008).  And any program that uses it _must_ know about the NT-only Win32 
function calls that offer this.

I.e., the "Chicago" (Win9x) and NT/Win32 teams used _different_ DOS Int 21h and 
Win32[s] function calls, the former completely ignoring the pre-existing of the 
latter.  "Chicago" _never_ supported the native NT/Win32 calls, hence why they 
likely _never_ supported the extensions for 4GiB-1 support IIRC.[1]

One quick trip to TechNet and you'll note this is an issue in "bare metal" 
DOS/Win and even NT.  The legacy "Chicago" DOS Int 21h file services don't 
handle growing beyond 2GiB-1 proper, _unless_ the NT/Win32 function extensions 
are utilized.  Unfortunately even NT 5.0 (Windows 2000) implements the "Chicago" 

calls bug-for-bug for compatibility reasons.

I.e., your program is likely instigating this, and the OS is just letting it do 
what it wants (and causing the issue).

-- Bryan

NOTES:  
[1] Like many libraries in NT/Win32, things just "didn't work" or "work well" 
under Win9x -- OpenGL being my personal favorite, and the whole "DirectMM -- aka 
Direct [DOS] Memory Map" lineage now known as "DirectX".  It wasn't until NT 5.0 
(Windows 2000) that the NT/Win32 team started also supporting the
"Chicago"/Win32 DOS Int 21h changes.



----- Original Message ----

From: Xavier Tarifa <[email protected]>

So here's my problem: Until now I was using dosemu with ms-dos 6.22 to run an 
old database. A little while ago we had some big changes to the tables and they 
grew a lot.
Yesterday I realized that we have a database file that is about to hit 2 Gb. I 
remembered that some time ago, we hit a bug on our program and it endlessly 
inserted rows on a table until it hit the 2 gb mark. Then the file either 
disappeared or became a 0 bytes file, I don't remember well.
So I started reading and found that ms-dos 6.22 only supports FAT16 and 
apparently it only allows 2 gb volumes, and 2 gb files.
So I thought of using ms-dos 7.10 which supports fat32 and would give us 4 gb 
files. But the same happens. The files disappear as soon as they hit the 2 gb 
mark. And when I execute the dir command, it always reports 2 gb of free disk 
space, which is odd.

I don't know if this is a limitation of dosemu or I'm doing something wrong. 
Right now, I have about 140 users. On each $HOME/.dosemu/drive_c/ of the users 
there are symlinks to each file in /usr/share/dosemu/drive_z/ , where ms-dos is 
located. And I have the database files in /datos/ . I use lredir to make it 
appear as f: to every user.
All of this is in the same ext3 partition.

Any ideas? 
--
To unsubscribe from this list: send the line "unsubscribe linux-msdos" in the 
body of a message to [email protected] More majordomo info at  
http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-msdos" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.