libcrush 1.0.0 published

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

 



Hi,

tl;dr: libcrush first release with API documentation, packaged for Fedora and Debian GNU/Linux

libcrush is a standalone library containing the C files from the Ceph crush directory. We hope it will be useful in contexts other than Ceph and that new ideas and robust code will emerge as a result.

The code in this first version of libcrush[0] is an exact copy of the code in Ceph. The API documentation[1] was added in the files so that it is closer to the code and easier to update when it changes. While writing the documentation with Adam Emerson, Sage Weil & Nathan Cutler, a few minor inconsistencies were discovered[5] but not fixed. The goal was to package and document; fixing bugs at the same time would have delayed the release. Ilya Dryomov reviewed the documentation changes to verify they would not be too much of an inconvenience when copying the files over in the next linux kernel release. Except for the API, the libcrush documentation is in a wiki [9]. Sahid Ferdjaoui helped draft a one-page introduction[9] explaining the purpose of CRUSH which is handy to answer the developer asking: "how can libcrush help me ? what does it do ?". 

The packaging part was made easy thanks to Nathan Cutler for the .spec file[4] and Nicolas Dandrimont for Debian GNU/Linux[3]. To stay close to what Ceph does, cmake was used for compilation and tests with help from Kefu Chai. libcrush also uses the same tool as Ceph for building the release tarball[2]: git-archive-all.sh.

There are no unit tests in Ceph for the C part of crush, although there are many for the C++ wrapper around it. A few were written, using googletests to stay close to Ceph, and they are run on every build by the GitLab CI whenever a merge request is submitted. They are also run when the packages are built, either for Fedora or Debian GNU/Linux. The integration tests are extremely simple for a C library: they consist of an example C program[8] which is compiled and run after the package is installed. They are in the Debian GNU/Linux package because there is CI infrastructure available for that purpose[7].

If you are inclined to help with libcrush, here are a few action items:

* use libcrush in an existing storage project (or non-storage if relevant ?)
* proofreading the API documenation
* improving the wiki[9]
* writing unit tests to get more coverage
* adding coverage reports using lcov

This week-end I'll look into sheepdog to see if libcrush could be useful there and report progress at http://libcrush.org/main/libcrush/issues/16.

Cheers

[0] http://libcrush.org/main/libcrush
[1] API documentation http://doc.libcrush.org/master/group___a_p_i.html
[2] http://download.libcrush.org/libcrush/releases/libcrush-1.0.0.tar.gz
[3] https://tracker.debian.org/pkg/libcrush
[4] https://bugzilla.redhat.com/show_bug.cgi?id=1421245
[5] http://libcrush.org/main/libcrush/issues
[6] https://github.com/meitar/git-archive-all.sh
[7] https://ci.debian.net/
[8] http://libcrush.org/main/libcrush-debian/tree/debian/sid/debian/tests
[9] http://libcrush.org/main/libcrush/wikis/home

-- 
Loïc Dachary, Artisan Logiciel Libre
--
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



[Index of Archives]     [CEPH Users]     [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