Re: vfat file system extreme fragmentation on multiprocessor
From: Harun Scheutzow
Date: Thu Sep 11 2008 - 20:24:52 EST
Why should C library fwrite() split anything? There is no good reason (unless in x86 64 KByte segmented model trying to emulate a flat model - old DOS). The 50 MByte go to write() in a single piece here.
There are only very little "single operation"s in kernel nowadays. In most cases this is a good thing.
Looks like fat/fatent.c fat_alloc_clusters() is limited to allocate only 4 clusters under a single lock.
Found another assumption I do not like: cluster size >= 512. There are old FAT systems on SRAM cards having 128 byte/sector and cluster. But I don't want to have long filenames on them. Hope the 512 does not sit elsewhere, too.
fat/inode.c __fat_get_block() /* TODO: multiple cluster allocation would be desirable */
YES, OF COURSE. Only a single cluster is allocated at a time, no lock here, I can be happy I got still 8 clusters per fragment, might have been only 1.
Harun
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/