Flash Media block driver problem!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi All,

We are developing a block device driver (2.4.x kernel) for Flash Media devices over one of our storage 
media controllers. This is a non-IDE driver like one of the drivers in driver/block/*.c.

We are facing a peculiar problem.

Scenario: 1> [FAIL CONDITION]
A brand new SM or SD cards come pre-formatted with a FAT12/FAT16 file system, which includes a Master Boot Sector 
and one Partition Boot Sector for one single partition. This disk works pretty well with Windows. 
Linux (our driver) however does not recognize this partitioned card with just one active partition.

Scenario: 2> [SUCCCESS CONDITION]
If we format the card under Linux just once with FAT, then it will continue to work for Windows and Linux.

We have been able to figure out why the problem actually occurs. The reason is that Linux (our driver) does 
not recognize several partitions in a single FAT12/FAT16 Flash Media card. According to the FAT12/FAT16 
file system, the card should have a valid Master Boot Sector in the first logical sector. This master boot 
sector indicates how many partitions are in the disk and the start and end addresses along with their respective 
size. FAT12/FAT16 disks must also have a Partition Boot Sector. The partition boot sector contains the parameters 
of each partition.

Windows does not have a problem reading cards without a Master Boot Sector as long as they have a valid Partition 
Boot Sector. That is why once you format a card with 'mkfs -t msdos /dev/ourdev' or similar command under Linux, 
the card will continue to work under Windows and Linux as well.

We are *NOT* doing a "register_disk()" and "struct gendisk" (NO partition support) structure in our driver right 
now. This is a Flash Media device which should not be partitioned. Is a register_disk() call still mandatory? Are 
we missing out something in the driver?

Thanks,
-Jinu

--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux