Just as there is the cls mechanism for extending objects, we need an extensibility mechanisms for managing sets of objects. The most established concept of managing sets of objects is files. The MDS is already extensible thanks to Michael and Noah's work (Malacology, Mantle, Cudele, Tintenfish) of which some if it is already merged upstream (I think mostly Mantle, so load-balancing things). The connection point of RADOS and MDS is the CephFS client which exists as kernel module and as library (libcephfs). I think libcephfs is a great starting point for an extensibility mechanism that allows the definition of new types of files and directories, install them in the MDS, and allow CephFS clients to dynamically link to libraries similar to what OSDs do for cls extensions. There needs to be also a software package system that allows CephFS and OSD extensions to be bundled since they depend on each other. SkyhookDM for tables might be one of those packages. SkyhookDM for arrays another.
Just as there is the cls mechanism for extending objects, we need an extensibility mechanisms for managing sets of objects. The most established concept of managing sets of objects is files. The MDS is already extensible thanks to Michael and Noah's work (Malacology, Mantle, Cudele, Tintenfish) of which some if it is already merged upstream (I think mostly Mantle, so load-balancing things). The connection point of RADOS and MDS is the CephFS client which exists as kernel module and as library (libcephfs). I think libcephfs is a great starting point for an extensibility mechanism that allows the definition of new types of files and directories, install them in the MDS, and allow CephFS clients to dynamically link to libraries similar to what OSDs do for cls extensions. There needs to be also a software package system that allows CephFS and OSD extensions to be bundled since they depend on each other. SkyhookDM for tables might be one of those packages. SkyhookDM for arrays another.