BTW, see this beautiful NOR support when booting as a second stage boot loader? :)
sid1-noah:/ mount /dev/disk0.0 fat /mnt
block_cache: blk->ops->read returned 0
sid1-noah:/ cp /mnt/coblock_cache: blk->ops->read returned 0
nsole_image.jffs2 /mnt/console_image.jffs2-backup
block_cache: blk->ops->read returned 0
block_cache: blk->ops->read returned 0
block_cache: blk->ops->read returned 0
block_cache: blk->ops->read returned 0
block_cache: blk->ops->read returned 0
block_cache: blk->ops->read returned 0
block_cache: blk->ops->read returned -110
BUG: failure at common/block.c:249/block_put()!
BUG!
[<83f34814>] (unwind_backtrace+0x0/0x8c) from [<83f1bf04>] (panic+0x28/0x3c)
[<83f1bf04>] (panic+0x28/0x3c) from [<83f05900>] (block_put+0x48/0x8c)
[<83f05900>] (block_put+0x48/0x8c) from [<83f059ec>] (block_write+0xa8/0x120)
[<83f059ec>] (block_write+0xa8/0x120) from [<83f2d2e8>] (cdev_write+0x30/0x34)
[<83f2d2e8>] (cdev_write+0x30/0x34) from [<83f307e0>] (disk_write+0x24/0x30)
[<83f307e0>] (disk_write+0x24/0x30) from [<83f2f92c>] (f_write+0x160/0x27c)
[<83f2f92c>] (f_write+0x160/0x27c) from [<83f305a0>] (fat_write+0x18/0x30)
[<83f305a0>] (fat_write+0x18/0x30) from [<83f31090>] (write+0xac/0xd0)
[<83f31090>] (write+0xac/0xd0) from [<83f216d4>] (copy_file+0xec/0x17c)
[<83f216d4>] (copy_file+0xec/0x17c) from [<83f19050>] (do_cp+0x124/0x158)
[<83f19050>] (do_cp+0x124/0x158) from [<83f07bb0>] (execute_command+0x38/0x7c)
[<83f07bb0>] (execute_command+0x38/0x7c) from [<83f03bc8>] (run_list_real+0x8a0/0x998)
[<83f03bc8>] (run_list_real+0x8a0/0x998) from [<83f03e04>] (parse_stream_outer+0x144/0x240)
[<83f03e04>] (parse_stream_outer+0x144/0x240) from [<83f041fc>] (run_shell+0x3c/0x5c)
[<83f041fc>] (run_shell+0x3c/0x5c) from [<83f09640>] (start_barebox+0xd4/0x110)
[<83f09640>] (start_barebox+0xd4/0x110) from [<8010206c>] (0x8010206c)
Those dreaded -110.
Yep, good point.
Let me know if I you need more printf()'s sprinkled over your code.