Needlessly abject

I am not a teenager. I play one on the Internet.

categories

non-blog

Other Blogs

20071002

'Disk Full' versus 'Error 0x80070052: The directory or file cannot be created.'

posted about a problem copying files to a USB flash drive that a friend of his was seeing in Windows Vista.

Mark quotes from a January 2001 thread on the ntfsd mailing list regarding the cause of the problem:

[the error code] ...indicates that you tried to make a file in the root directory of a FAT12/16 disk, and there were not enough available directory entries. FAT12/16 roots are fixed size, usually formatted to 512 entries (32 bytes per), and files with non-8.3 names take up at least two.

It's been years since I've seen a problem with not having enough root directory entries available. I'll admit, I didn't guess the nature of the problem before Mark explained it, but I feel fairly confident that I'd have diagnosed it properly in the field.

I used to see this fairly frequently when Iomega ZIP drives first became popular, because people were treating them like floppy diskettes, and because the new VFAT extensions in Windows 95 contributed to the use of root directory entries.

Exhausting all of the root directory entries on a 3 1/2" floppy diskette (112-- see http://www.pcguide.com/ref/hdd/file/fatRoot-c.html) wasn't easy with MS-DOS. You'd need an average file size of about 12.71KB to do that, and although I'm sure a significant number of users saw root directory entry exhaustion on floppy diskettes, I'd imagine most floppies had full data areas before they had full root directories.

With the advent of VFAT, and the larger storage capacity of ZIP disks, the conditions for root directory exhaustion became much more favorable. Users weren't familiar with making subdirectories on floppies, and they'd store tons of files in the root directory of their ZIP media. On a 100MB ZIP disk, piling on files of 200KB or less would exhaust the 512 available root directory entries. If you used long filenames, additional root directory entries would be populated with long filename data.

MS-DOS and Windows 9X return a 'Disk Full' error when you run out of root directory entries on a FAT volume. I saw multiple cases where users had purchased additional ZIP media because they erroneously thought their other medias were "full", when in reality they just exhausted all the root directory entries. *smile*

Further down in the ntfsd posting, the author says:

Prior to Whistler, FAT returned STATUS_DISK_FULL but the Win32 ERROR_CANNOT_MAKE had existed since Win9x, and was used there exactly for this case. The new status code was created so we could start using it.

(The 'Whistler' software the poster refers to is none other than Windows XP.)

I find it quite humorous that Windows Vista, the present-day flagship version of the Windows operating system, returns a more arcane and less helpful message to an error condition than more than decade-old Microsoft operating systems. The posting from ntfsd shows that the file-system people were plumbing their side of the house to allow for a descriptive error message, but the UI team dropped the ball!


Valid HTML 4.01 StrictValid CSS!