I suggest we could split this PR into plugindb impl and ceph-disk,init-script things. So I think it will be more easier to be merge ready.
On Thu, Jul 9, 2015 at 4:31 PM, Varada Kari <varada.k...@sandisk.com> wrote: > Hi Sage/Sam/Haomai, > > Sent pull requests for two enhancement for key value store. Can you please > review the changes? > > https://github.com/ceph/ceph/pull/5136 > > Contains changes for short circuiting op_wq and osr in key value store. We > have observed good performance gains with the above pull request. Not sure if > it breaks any assumptions or design constraints. Need your comments on the > approach. > > https://github.com/ceph/ceph/pull/5169 > > Contains changes for adding a generic framework to add any keyvaluedb as a > backend. There are code made for initial proposal on the infernalis > blueprint. Other enhancement proposed are being worked on as loadable object > store using a factory approach. > > Gist of the implementation sent for review: > > 1. A new class is derived from KeyValueDB (Derived from ObjectStore) called > PluggableDBStore, which honors the semantics of KeyvalueStore and KeyValueDB. > This class acts as mediator between CEPH and loadable shim (a shared > library). This class transforms the ceph related bufferlist etc... to const > char pointers for the shim to understand. > 2. Shim layer is assumed to be a shared library. > 3. PluggableDBStore, loads (dlopen) the key value database wrapper/shim > needed for Ceph integration. The loadable shim library location is specified > in ceph.conf. Not added any checks to validate the sanity or compatibility of > shared object as of now. We can impose certain checks to be honored by the > shim layer to be compatible with the ceph version. > 4. Interfaces that needs to be implemented in shim, are added in a new header > called PluggableDBInterfaces.h. This header contains the signatures for the > necessary interfaces like init(), close(), submit_transaction(), get() and > get_iterator(). PluggableDBStore caches these handles in a table during the > initialization time of the backend db. > 5. Similarly for Iterator functionality, PluggableDBIterator.h, contains the > functionality to be implemented by the shim layer. > 6. ceph-disk is modified to make two partitions of the osd disk given, one > for osd metadata and other for the pluggable DB, similar to existing > functionality like journal and osd data partition. Two partitions are created > only when PluggableDBstore is selected as backed for OSD. DB's can work off > a raw partition as well, having a partition can enable to them use it. May be > we can add additional parameters or conf options to have a file system also > on the newly created partition, which can be implemented by ceph-disk. > 7. Partition information and other information needed like osd id etc... are > passed to shim layer at the time of initializing the store. > 8. Additional script modification is get correct stats from the backend. > > Please share your comments on the pull requests. > > Thanks, > Varada > > > > > ________________________________ > > PLEASE NOTE: The information contained in this electronic mail message is > intended only for the use of the designated recipient(s) named above. If the > reader of this message is not the intended recipient, you are hereby notified > that you have received this message in error and that any review, > dissemination, distribution, or copying of this message is strictly > prohibited. If you have received this communication in error, please notify > the sender by telephone or e-mail (as shown above) immediately and destroy > any and all copies of this message in your possession (whether hard copies or > electronically stored copies). > -- Best Regards, Wheat -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html