On Wed, Sep 23, 2015 at 4:08 PM, Jason Dillaman <dillaman@xxxxxxxxxx> wrote: >> > In this case the commands look a little confusing to me, as from their >> > names I would rather think they enable/disable mirror for existent >> > images too. Also, I don't see a command to check what current >> > behaviour is. And, I suppose it would be useful if we could configure >> > other default features for a pool (exclusive-lock, object-map, ...) >> > Also, I am not sure we should specify <pool-name> this way, as it is >> > not consistent with other rbd commands. By default rbd operates on >> > 'rbd' pool, which can be changed by --pool option. So what do you >> > think if we have something similar to 'rbd feature' commands? >> > >> > rbd [--pool <pool>] default-feature enable <feature> >> > rbd [--pool <pool>] default-feature disable <feature> >> > rbd [--pool <pool>] default-feature show [<feature>] >> > >> > (If <feature> is not specified in the last command, all features are >> > shown). >> >> I haven't read the discussion in full, so feel free to ignore, but I'd >> much rather have rbd create create images with the same set of features >> enabled no matter which pool it's pointed to. >> >> I'm not clear on what exactly a pool policy is. If it's just a set of >> feature bits to enable at create time, I don't think it's worth >> introducing at all. If it's a set feature bits + a set of mirroring >> related options, I think it should just be a set of those options. >> Then, rbd create --enable-mirroring could be a way to create an image >> with mirroring enabled. >> >> My point is a plain old "rbd create foo" shouldn't depend an any new >> pool-level metadata. It's not that hard to remember which features you >> want for which pools and rbd create shortcuts like --enable-object-map >> and --enable-mirroring would hide feature bit dependencies and save >> typing. --enable-mirroring would also serve as a ticket to go look at >> new metadata and pull out any mirroring related defaults. >> > > While I agree that I don't necessarily want to go down the road of specifying per-pool default features, I think there is a definite use-case need to be able to enable mirroring on a per-pool basis by default. Without such an ability, taking OpenStack for example, it would require changes to Glance, Cinder, and Nova in order to support DR configurations -- or you could get it automatically with a little pre-configuration. So a pool policy is just a set of feature bits? I think Cinder at least creates images with rbd_default_features from ceph.conf and adds in layering if it's not set, meaning there is no interface for passing through feature bits (or anything else really, things like striping options, etc). What pool-level default feature bits infrastructure would do is replace a big (cluster-level) hammer with a smaller (pool-level) hammer. You'd have to add librbd APIs for it and someone eventually will try to follow suit and add defaults for other settings. You said you weren't attempting to create a mechanism to specify arbitrary default features for a given pool, but I think it will come up in the future if we introduce this - it's only logical. What we might want to do instead is use this mirroring milestone to add support for a proper key-value interface for passing in features and other settings for individual rbd images to OpenStack. I assume it's all python dicts with OpenStack, so it shouldn't be hard? I know that getting patches into OpenStack can be frustrating at times and I might be underestimating the importance of the use case you have in mind, but patching our OpenStack drivers rather than adding what essentially is a workaround to librbd makes a lot more sense to me. Thanks, Ilya -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html