This is the bug/patch tracker for Rockbox. Click here for more information.
Quick links: Bugs · Patches · Rockbox frontpage
FS#11429 - Improved sector cache / Remove on-stack and in-struct sector buffers / Align storage accesses
Attached to Project:
Rockbox
Opened by Michael Sparmann (TheSeven) - Monday, 21 June 2010, 21:11 GMT+2
Last edited by Michael Sparmann (TheSeven) - Monday, 21 June 2010, 21:14 GMT+2
Opened by Michael Sparmann (TheSeven) - Monday, 21 June 2010, 21:11 GMT+2
Last edited by Michael Sparmann (TheSeven) - Monday, 21 June 2010, 21:14 GMT+2
|
DetailsThis patch adds a sector-based read/write cache between the storage and fat drivers.
It has a static pool of 64 sector buffers which can be locked by the file handling code to replace the sector buffers in the file and dir structs, and serve as cache as long as they aren't used. It can also be used to enforce exclusive access to a sector. If requested using the STORAGE_NEEDS_ALIGN define, all storage accesses will be aligned to cacheline boundaries. |
This task depends upon
If you have multidrive, then multivolume is enabled.
But yeah, the code is quitte different depending on MD or mot, this is a shame.
LD rockbox.elf
/home/michael/Downloads/rockbox/build/apps/main.o: In function `main':
main.c:(.text+0x1c8): undefined reference to `sectorcache_init'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(powermgmt.o): In function `shutdown_hw':
powermgmt.c:(.text+0x2d8): undefined reference to `sectorcache_clean_all'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(rolo.o): In function `rolo_load':
rolo.c:(.text+0x1bc): undefined reference to `sectorcache_clean_all'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(file.o): In function `lseek':
file.c:(.text+0x184): undefined reference to `sectorcache_clean'
file.c:(.text+0x1a8): undefined reference to `sectorcache_unlock'
file.c:(.text+0x20c): undefined reference to `sectorcache_lock'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(file.o): In function `readwrite':
file.c:(.text+0x364): undefined reference to `sectorcache_markdirty'
file.c:(.text+0x39c): undefined reference to `sectorcache_clean'
file.c:(.text+0x3d0): undefined reference to `sectorcache_unlock'
file.c:(.text+0x53c): undefined reference to `sectorcache_lock'
file.c:(.text+0x5ac): undefined reference to `sectorcache_markdirty'
file.c:(.text+0x5fc): undefined reference to `sectorcache_lock'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(file.o): In function `fsync':
file.c:(.text+0xc14): undefined reference to `sectorcache_clean'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(file.o): In function `close':
file.c:(.text+0xd5c): undefined reference to `sectorcache_unlock'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(disk.o): In function `disk_init':
disk.c:(.text+0x5c): undefined reference to `sectorcache_lock'
disk.c:(.text+0x108): undefined reference to `sectorcache_unlock'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(disk.o): In function `disk_mount':
disk.c:(.text+0x13c): undefined reference to `sectorcache_invalidate'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(fat.o): In function `fat_closedir':
fat.c:(.text+0x134): undefined reference to `sectorcache_unlock'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(fat.o): In function `flush_fat_sector':
fat.c:(.text+0x16c): undefined reference to `sectorcache_writethrough'
fat.c:(.text+0x1ac): undefined reference to `sectorcache_writethrough'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(fat.o): In function `cache_fat_sector':
fat.c:(.text+0x288): undefined reference to `sectorcache_readthrough'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(fat.o): In function `fat_getnext':
fat.c:(.text+0x75c): undefined reference to `sectorcache_unlock'
fat.c:(.text+0x784): undefined reference to `sectorcache_lock'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(fat.o): In function `transfer':
fat.c:(.text+0xc84): undefined reference to `sectorcache_writethrough'
fat.c:(.text+0xc9c): undefined reference to `sectorcache_readthrough'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(fat.o): In function `free_direntries':
fat.c:(.text+0xfc8): undefined reference to `sectorcache_lock'
fat.c:(.text+0x1028): undefined reference to `sectorcache_markdirty'
fat.c:(.text+0x1030): undefined reference to `sectorcache_clean'
fat.c:(.text+0x1054): undefined reference to `sectorcache_unlock'
fat.c:(.text+0x1080): undefined reference to `sectorcache_lock'
fat.c:(.text+0x10b4): undefined reference to `sectorcache_markdirty'
fat.c:(.text+0x10bc): undefined reference to `sectorcache_clean'
fat.c:(.text+0x10e0): undefined reference to `sectorcache_unlock'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(fat.o): In function `update_fsinfo':
fat.c:(.text+0x111c): undefined reference to `sectorcache_lock'
fat.c:(.text+0x115c): undefined reference to `sectorcache_markdirty'
fat.c:(.text+0x1164): undefined reference to `sectorcache_clean'
fat.c:(.text+0x1188): undefined reference to `sectorcache_unlock'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(fat.o): In function `fat_mount':
fat.c:(.text+0x1378): undefined reference to `sectorcache_lock'
fat.c:(.text+0x1528): undefined reference to `sectorcache_unlock'
fat.c:(.text+0x1540): undefined reference to `sectorcache_unlock'
fat.c:(.text+0x15ac): undefined reference to `sectorcache_unlock'
fat.c:(.text+0x16a0): undefined reference to `sectorcache_unlock'
fat.c:(.text+0x16dc): undefined reference to `sectorcache_lock'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(fat.o): In function `write_long_name':
fat.c:(.text+0x19b4): undefined reference to `sectorcache_lock'
fat.c:(.text+0x1ab0): undefined reference to `sectorcache_markdirty'
fat.c:(.text+0x1ab8): undefined reference to `sectorcache_clean'
fat.c:(.text+0x1adc): undefined reference to `sectorcache_unlock'
fat.c:(.text+0x1b1c): undefined reference to `sectorcache_lock'
fat.c:(.text+0x1dc0): undefined reference to `sectorcache_markdirty'
fat.c:(.text+0x1dc8): undefined reference to `sectorcache_clean'
fat.c:(.text+0x1dec): undefined reference to `sectorcache_unlock'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(fat.o): In function `add_dir_entry':
fat.c:(.text+0x2100): undefined reference to `sectorcache_unlock'
fat.c:(.text+0x2110): undefined reference to `sectorcache_lock'
fat.c:(.text+0x21f4): undefined reference to `sectorcache_unlock'
fat.c:(.text+0x2240): undefined reference to `sectorcache_lock'
fat.c:(.text+0x2270): undefined reference to `sectorcache_markdirty'
fat.c:(.text+0x2278): undefined reference to `sectorcache_clean'
fat.c:(.text+0x22a0): undefined reference to `sectorcache_unlock'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(fat.o): In function `update_short_entry':
fat.c:(.text+0x2494): undefined reference to `sectorcache_lock'
fat.c:(.text+0x2520): undefined reference to `sectorcache_markdirty'
fat.c:(.text+0x2528): undefined reference to `sectorcache_clean'
fat.c:(.text+0x254c): undefined reference to `sectorcache_unlock'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(fat.o): In function `fat_rename':
fat.c:(.text+0x26c4): undefined reference to `sectorcache_lock'
fat.c:(.text+0x2730): undefined reference to `sectorcache_markdirty'
fat.c:(.text+0x2738): undefined reference to `sectorcache_clean'
fat.c:(.text+0x275c): undefined reference to `sectorcache_unlock'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(fat.o): In function `fat_create_dir':
fat.c:(.text+0x28a8): undefined reference to `sectorcache_lock'
fat.c:(.text+0x28d8): undefined reference to `sectorcache_markdirty'
fat.c:(.text+0x28e0): undefined reference to `sectorcache_clean'
fat.c:(.text+0x2904): undefined reference to `sectorcache_unlock'
/home/michael/Downloads/rockbox/build/firmware/libfirmware.a(usb_storage.o): In function `usb_storage_init_connection':
usb_storage.c:(.text+0x1198): undefined reference to `sectorcache_invalidate'
usb_storage.c:(.text+0x11a8): undefined reference to `sectorcache_lock'
usb_storage.c:(.text+0x11bc): undefined reference to `sectorcache_unlock'
collect2: ld returned 1 exit status
make: *** [/home/michael/Downloads/rockbox/build/rockbox.elf] Error 1
rm /home/michael/Downloads/rockbox/build/apps/bitmaps/native/usblogo.128x37x16.c /home/michael/Downloads/rockbox/build/apps/bitmaps/native/default_icons.6x8x16.c /home/michael/Downloads/rockbox/build/apps/bitmaps/native/rockboxlogo.176x54x16.c