#3003 closed defect (fixed)

FAT does not support clusters bigger than 32K

Reported by: munster Owned by: Sebastian Huber
Priority: normal Milestone: 5.1
Component: fs/fat Version: 5
Severity: normal Keywords: FAT, cluster
Cc: Blocked By:
Blocking:

Description

When used with 64KiB clusters, the FAT driver will loop forever in cpukit/libfs/src/dosfs/fat.c, line 580.
This happens because struct fat_vol_s declares bytes per cluster variable as uint16_t bpc, whereas it can be as big as 256KiB.

Here is a link for Linux FAT driver which doesn't make any assumption about cluster size: http://lxr.free-electrons.com/source/fs/fat/inode.c?v=2.6.24#L1262

Attachments (1)

fat.diff (1.7 KB) - added by munster on 04/21/17 at 09:41:56.

Download all attachments as: .zip

Change History (8)

comment:1 Changed on 04/20/17 at 15:15:38 by Gedare Bloom

Do you have a test case?

Do you have a proposed solution? is it just to increase bpc type size?

Changed on 04/21/17 at 09:41:56 by munster

Attachment: fat.diff added

comment:2 Changed on 04/21/17 at 09:43:32 by munster

I have attached a solution which increases bpc size and removes the limit.

comment:3 Changed on 05/11/17 at 07:31:02 by Sebastian Huber

Milestone: 4.124.12.0

comment:4 Changed on 08/24/17 at 09:56:36 by Sebastian Huber

Owner: changed from chrisj@… to Sebastian Huber
Status: newassigned

comment:5 Changed on 09/06/17 at 08:21:32 by Sebastian Huber <sebastian.huber@…>

Resolution: fixed
Status: assignedclosed

In fae59c9/rtems:

dosfs: Support a cluster size of 64KiB

Close #3003.

comment:6 Changed on 10/10/17 at 06:50:58 by Sebastian Huber

Component: fsfs/fat

comment:7 Changed on 11/09/17 at 06:27:14 by Sebastian Huber

Milestone: 4.12.05.1

Milestone renamed

Note: See TracTickets for help on using tickets.