I don't have a C3100 so I can't help with the details. But I do have a suggestion.
On my 6000 I have a 1gb SD card. It's formatted FAT32, for compatibility, but then I created a 512mb file and formatted it ext3. It's mounted via loopback at /usr/local.
It could help with your "not enough partitions" problem, since you can mount up to 8 loopback devices.
Also, why do insist on a swap partition? I've always found swap files work very well. The trick is to create the files right after formatting the partition, that way you don't get any fragmentation. (once the files are created, they don't move or fragment later)