I'm using LVM2.2.02.106 and thin-provisioning-tools 0.3.2 on Ubuntu 13.10. I found that thin_repair doesn't do size checking on the output device, thus it will crash if the output device is larger than the space map's limitation (i.e., 255*16320*4096 bytes). The bitmap_count calculated by sm_disk::extend() might exceeded 255.
The direct influence is that it cannot collaborate with the LVM2 "lvconvert --repair" command while the thinpool's metadata is exactly 16GiB. The reason is that the size of the pool metadata spare's DM target activated by _lvconvert_thinpool_repair() is 16384MiB, not 16192MiB. LVM2 only adjust the DM target's size to DM_THIN_MAX_METADATA_SIZE(16192MiB) while the metadata or the spare volume are activated within a thinpool.
If this is a bug, I thought that it might be better to add size checking to thin_repair, since that users might use devices larger than 16GiB as the output device. Is that a feasible approach?