Re: Looking to understand *_command API calls better

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 9 Apr 2020, John Mulligan wrote:
> Hello ceph-devel,
> 
> I'm one of the members of the team currently maintaining, and hopefully 
> improving, go-ceph (ceph library bindings for Go) [1].
> 
> An issue I keep returning to is the nature of api calls such as:
> - rados_mon_command
> - rados_mgr_command
> - ceph_mds_command
> ... etc
> 
> The argument named cmd for these functions is of type `const char **cmd` and 
> is followed by a `size_t cmdlen`. I'd like to better understand the rationale 
> for array-of-char* strings and how this is intended to be used.

It's purely historical.  The command used to be an array of 
strings/arguments directly from the CLI so that the parsing was done on 
the mon.  Way back when we changed it to JSON, but never cleaned up the 
message strcture.

sage

> 
> When I first saw the function I initially thought it was meant to support 
> multiple "commands" getting issued at once but later started thinking that a 
> single command could be split across multiple strings, and experimentation 
> demonstrated that this does indeed work. I've attempted reading the sources 
> but nothing jumps out at me to explain this approach. Most callers of these 
> functions seem to only use a single "command string". 
> 
> I also tried looking to see how the code makes use of the array (or vector 
> after the transition to C++) but I will admit I'm not very familiar with C++ 
> and get a bit lost in some of the templates and overloading.
> 
> Could someone who is familiar with this better explain how this argument and 
> it's type is meant to be used?
> I want to make sure we're making good use of the apis that ceph provides in 
> the wrapper library, or at the very least I want to make sure we're not mis-
> using the apis. :-)
> 
> Thank you for your time.
> 
> 1 - https://github.com/ceph/go-ceph
> 
> _______________________________________________
> Dev mailing list -- dev@xxxxxxx
> To unsubscribe send an email to dev-leave@xxxxxxx
> 
> 
_______________________________________________
Dev mailing list -- dev@xxxxxxx
To unsubscribe send an email to dev-leave@xxxxxxx



[Index of Archives]     [CEPH Users]     [Ceph Devel]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux