cmogstored.git  about / heads / tags
alternative mogstored implementation for MogileFS
$ git log --pretty=format:'%h %s (%cs)%d' v0.3.0 --
3e9075a test/cmogstored-cfg: remove unused variable (2012-03-27)
	(tag: v0.3.0)
3591dad cleanup interrupt disabling/enabling (2012-03-26)
f080032 test/http: skip entire test if missing IO.copy_stream (2012-03-26)
ebe4812 support SHA-1 digests over sidechannel (2012-03-26)
10c75b0 use generic gc module for MD5 from gnulib (2012-03-25)
c454730 fix build on old glibc where _ATFILE_SOURCE is needed (2012-03-19)
	(tag: v0.2.2)
2c39d7e README: add link to the NEWS.atom.xml feed (2012-03-19)
f25b7f5 setproctitle_noop: fix build for Debian GNU/kFreeBSD (2012-03-20)
	(tag: v0.2.1)
31f5391 build: profile-guided optimization targets (2012-03-20)
ef2eec3 digmd5: use size_t for loop counter (2012-03-19)
...

$ git cat-file blob v0.3.0:README
cmogstored - alternative mogstored implementation for MogileFS
--------------------------------------------------------------

cmogstored is an _experimental_, alternative implementation of the
"mogstored" storage component of MogileFS.  Unlike MogileFS itself,
cmogstored is not considered stable nor sane for production use.
cmogstored is implemented in C and does not use Perl at runtime.

Read more about MogileFS here: http://mogilefs.org/
cmogstored is not directly affiliated with the MogileFS project
nor any commercial interests behind MogileFS.


*** WARNING! *** WARNING! *** WARNING! *** WARNING! ***
*** WARNING! *** WARNING! *** WARNING! *** WARNING! ***

cmogstored is a _completely_ new code base and likely contains fatal
bugs.  There are many assertions in the code and you're likely to trip
some.

*** WARNING! *** WARNING! *** WARNING! *** WARNING! ***
*** WARNING! *** WARNING! *** WARNING! *** WARNING! ***

Features
========

* low memory footprint, more memory for file system caches
* multithreaded design keeps queues in rotational disks busy
* epoll/kqueue used to cheaply maintain persistent connections
* supports MD5 checksum extension for mogstored
* easily installable on modern GNU/Linux and FreeBSD without Perl
* supports HTTP/1.1 persistent connections and pipelining
* supports chunked and partial (Content-Range) HTTP/1.1 PUT requests
* supports partial GET requests
* may reject PUTs based on Content-MD5 header/trailer verification
* graceful shutdown via SIGQUIT won't terminate active requests
* extensive test suite, code coverage and Valgrind-tested

Getting Started
===============

See the INSTALL document for installation and runtime requirements.

cmogstored aims to be mostly command-line and configuration-file
compatible with the Perl mogstored.

cmogstored does not support spawning lighttpd/Apache instances like its
Perl counterpart.

In other cases, you can simply replace "mogstored" with "cmogstored"
in your init scripts.


Contact
=======

For any and all questions, bug reports, patches, pull requests,
send plain-text email to: Eric Wong <normalperson@yhbt.net>
We may also piggy-back onto the public MogileFS mailing list:
<mogile@googlegroups.com> for public discussions.

Downloads
=========

Source tarballs suitable for distribution are housed here:

* http://bogomips.org/cmogstored/files/

Source code
===========

* git clone git://bogomips.org/cmogstored.git
* cgit :: http://bogomips.org/cmogstored.git
* gitweb :: http://repo.or.cz/w/cmogstored.git

License
=======

cmogstored is licensed under the GNU General Public License, v3 (or later).
Distribution tarballs include LGPL code from the Gnulib project in lib/.
The bsd/*.h compatibility headers are BSD-licensed.
The nostd/* files are Expat/MIT-licensed from the libnostd project
Contributors retain their copyrights to their respective contributions.

This project is not affiliated with the GNU project nor FSF even though
we use their tools and licenses.

Homepage
========

Eric Wong hates pretty things, so this README file is also the homepage:
http://bogomips.org/cmogstored/README

The latest releases are announced via Atom feed:
http://bogomips.org/cmogstored/NEWS.atom.xml

# heads (aka `branches'):
$ git for-each-ref --sort=-creatordate refs/heads \
	--format='%(HEAD) %(refname:short) %(subject) (%(creatordate:short))'
* master       cmogstored 1.8.1 - use default system stack size (2021-02-13)
  gl-env       rely on gnulib for environ portability (2016-07-18)
  empty-header-values http_common: correctly handle empty header values (2014-09-03)
  khash        dev: minor khash-related cleanups (2014-05-29)
  ccan-list    svc_dev: calling free does not need the lock (2014-05-23)
  valgrind-fixes test: fix valgrind warnings in test-only C code (2013-12-01)
  malloc       default malloc tuning for glibc (2013-11-11)
  st-wip-broken more probes WIP (2013-07-26)
  wip-1.3      avoid leaks on epoll/kqueue resources exhaustion (2013-06-20)
  iosem        per-mog_devid IO channels via semaphores (2013-05-30)
...

# tags:
$ git for-each-ref --sort=-creatordate refs/tags \
	--format='%(refname:short) %(subject) (%(creatordate:short))'
v1.8.1       cmogstored 1.8.1 - use default system stack size (2021-02-13) tar.gz
v1.8.0       cmogstored 1.8.0 (2020-08-13) tar.gz
v1.7.3       cmogstored 1.7.3 (2020-03-22) tar.gz
v1.7.2       cmogstored 1.7.2 (2020-02-19) tar.gz
v1.7.1       cmogstored 1.7.1 - Linux 5.0/5.1 epoll_pwait workaround (2019-05-12) tar.gz
v1.7.0       cmogstored 1.7.0 (2018-12-18) tar.gz
v1.6.0       cmogstored 1.6.0 - minor fixes on allocation errors (2016-08-31) tar.gz
v1.5.0       cmogstored 1.5.0 - vfork, systemd, 416 codes (2015-11-21) tar.gz
v1.5.0rc1    cmogstored 1.5.0rc1 (2015-11-11) tar.gz
v1.4.3       cmogstored 1.4.3 - mostly non-GNU/Linux fixups (2015-03-09) tar.gz
...

# associated public inboxes:
# (number on the left is used for dev purposes)
            https://yhbt.net/cmogstored-public

git clone https://yhbt.net/cmogstored.git