No, it is everything but useless. It is not needed during device creation, but that is something that the GENHD_FL_UP check should catch. You should probably audit the device mapper code why it sets the initial capacity when the gendisk is up already, as that can cause all kinds of problems. If the setting of the initial capacity after add_disk is indeed intentional you can switch to set_capacity(), but you should probably document the rationale in a detailed comment.