I am attempting to utilise a 250Gb Maxtor external Firewire drive. To obtain maximum portability I would prefer to format it as FAT32 (it comes formatted that way) - that way Windows, Linux and FreeBSD machines can access it. Unfortunately FreeBSD doesn't grok really large FAT32 partitions :( When I attempt to mount it, I get -> mountmsdosfs(): disk too big, sorry The code in question.. if (pmp->pm_HugeSectors > 0xffffffff / (pmp->pm_BytesPerSec / sizeof(struct direntry)) + 1) { /* * We cannot deal currently with this size of disk * due to fileid limitations (see msdosfs_getattr and * msdosfs_readdir) */ error = EINVAL; printf("mountmsdosfs(): disk too big, sorry\n"); goto error_exit; } So, I am guessing that since fileid is only 32 bits wide the macro which generates fileid values for FAT will generate too large a number to be stored. Does anyone have an idea how I can work around or fix this problem? FS internals are not my cup of tea :) I think I will just resort to splitting the disk in two, but it would be useful to be able to use the disk as a big blob. (The wastage wouldn't be too bad as it will almost certainly end up with a few big files on it) Thanks in advance :) --- Daniel O'Connor software and network engineer for Genesis Software - http://www.gsoft.com.au "The nice thing about standards is that there are so many of them to choose from." -- Andrew Tanenbaum
On Sat, Apr 26, 2003, Daniel O'Connor wrote:> I am attempting to utilise a 250Gb Maxtor external Firewire drive. To > obtain maximum portability I would prefer to format it as FAT32 (it comes > formatted that way) - that way Windows, Linux and FreeBSD machines can > access it. > > Unfortunately FreeBSD doesn't grok really large FAT32 partitions :( When I > attempt to mount it, I get -> > mountmsdosfs(): disk too big, sorryMost filesystems have a unique identifier associated with every file, but msdosfs does not. The FreeBSD driver invents inumbers on the fly as the index of the directory entry for the file, assuming that the entire disk is full of directory entries. These numbers are 32 bits and they need to be persistent, so it would not be possible to play any clever tricks with the math. I suggest that you ensure that all of your FAT32 filesystems are smaller than 128GB (2^32 * 32 bytes/direntry). Note that msdosfs performance and reliability generally sucks, so unless you're using the disk merely as a buffer to transfer stuff between operating systems, you probably want to rethink your decision.