about summary refs log tree commit homepage
path: root/Makefile.am
DateCommit message (Collapse)
2020-01-18s/bogomips.org/yhbt.net/, update copyrights for 2020
bogomips.org is due to expire, soon, and I'm not willing to pay extortionist fees to Ethos Capital/PIR/ICANN to keep a .org. So it's at yhbt.net, for now, but it will change again to whatever's affordable... Identity is overrated. Tor users can use .onions and kick ICANN to the curb: torsocks w3m http://cmogstored.ou63pmih66umazou.onion/ torsocks git clone http://ou63pmih66umazou.onion/cmogstored.git/ torsocks w3m http://ou63pmih66umazou.onion/cmogstored-public/
2019-05-12build: add .gitattributes to EXTRA_DIST
2018-06-02fix trace.h dependency on probes.h
I haven't tested with systemtap, lately; maybe something bit rotted.
2015-11-20Makefile.am: distribute txt2pre in tarball
Oops.
2015-11-20add cmogstored manpage to website
Sometimes people will forget to install the manpage, make sure it's online in plain-text or HTML format.
2015-11-20misc doc updates
Generate pre-formatted HTML which gives us a consistent visual style with our mailing list archives and enhance linkability. <a>, <pre>, and <title> are among the few useful HTML tags I'll use :P Drop the AUTHORS file, it's pointless maintenance task and users can just look at git history instead (and honestly, I have zero interest in recognition; I only use my real name to deter GPL violations).
2015-11-11doc: publish examples directory to website
This might improve visibility of these scripts for use with systemd.
2015-11-11fix tmpdir dependency for slow Ruby tests
.slowrb tests have a different suffix and the test dependencies need to be split out separately.
2015-11-11doc: add example systemd config files
Since we'll support systemd, it's not a bad idea to include reasonable example files for users.
2015-03-06Makefile.am: fix publish rule for website
Oops, we cannot have zero-byte gzipped files :x
2014-09-20Makefile.am: gzip README and associated data
Speeds up site loading when combined with things like try_gzip_static in nginx.
2014-02-08Makefile.am: updates for automake 1.14.1
Tested with automake 1:1.14.1-2 on Debian GNU/kFreeBSD
2014-02-08Makefile: do not clobber NOSTD_CFLAGS from configure
This was breaking the Debian kFreeBSD build
2013-09-03Makefile: update for systemtap support files
2013-07-12tests: introduce pwrite-wrap test for slow I/O
pwrite can be a slow, blocking function on an overloaded system, but a slow pwrite requires a wrapper to simulate. This allows us to have coverage of the: if (mog_ioq_contended()) return MOG_NEXT_WAIT_RD; cases in http_put.c
2013-07-10file: embed ioq in the opened mog_file object
This allows us to avoid a redundant hash lookup every time we "activate" an open file for reading or writing.
2013-07-10introduce generic I/O queue functionality
This replaces the fsck_queue internals with a generic ioq implementation which is based on the MogileFS devid, and not the operating system devid.
2013-07-04build: fix LIB_CLOCK_GETTIME linkage on some toolchains
According to the m4/clock_gettime.m4 documentation (from gnulib), the LIB_CLOCK_GETTIME variable should be added to a *LDADD variable and not AM_LDFLAGS. This is also consistent with GNU automake documentation. Thanks to Cody Pisto for reporting this problem under Ubuntu 12.04 ref: http://www.gnu.org/software/automake/manual/html_node/Linking.html
2013-06-25tests: fault-injection test for ENOSPC on epoll_ctl
For difficult-to-trigger errors, fault injection is necessary for testing our error handling. I have confirmed this test fails with "avoid leaks on epoll/kqueue resources exhaustion" reverted.
2013-06-25introduce mog_yield wrapper around sched_yield/pthread_yield
While pthread_yield is non-standard, it is relatively common and preferable for systems where pthreads are _not_ 1:1 mapped to kernel threads. This also provides a stronger yield to weaken the priority of the calling thread wherever we previously used sched_yield.
2013-06-25Makefile.am: fix systemtap probes.h distribution
Our tests over-link (to save developer time :P), so we must link in probes with our tests. Also, we must keep probes.h around for distclean (but not maintainerclean)
2013-06-25shrink mog_packaddr and improve portability
We cannot assume sa_family_t is the first element of "struct sockaddr_in" or "struct sockaddr_in6". FreeBSD has a "sa_len" member as the first element while Linux does not. So only keep the parts of the "struct sockaddr*" we need and use inet_ntop instead of getnameinfo. This also gives us a little more space to add additional fields to "struct mog_http" in the future without increasing memory (or CPU cache) use.
2013-06-25dist: include newly-added files to the tarball
Tarballs were otherwise unusable.
2013-06-25parse out mogilefs devid in mgmt/http requests
This will allow us to do lookups for IO queues/semaphores before we attempt to fstatat/stat a path.
2013-06-25build: get the gnulib version via autogen.sh
This is useful for: a) repeatibly generating the same tarball off git b) diagnosing and tracking down (rare) gnulib bugs c) 3rd parties verifying we do not put malicious code into our tarballs
2013-05-06preliminary systemtap support for tracing
We will key most client events by pid() and file descriptors, as this is least ambiguous. There are some minor refactorings to pass "struct mog_fd *" around as much as possible instead of "struct mog_http *".
2013-04-17save socket address on accept/accept4
getpeername() does not work on unconnected sockets. For error-handling, unconnected sockets is a fairly common occurrence, so we want to get the address early on when we know the address is still valid. For IPv4 addresses, this does not increase memory overhead at all. IPv6 addresses[1] does require an additional heap allocation, but it does not need to be aligned since it is infrequently accessed. If IPv6 becomes common, we may need to expand our per-client storage to 192 bytes (from 128) on 64-bit (or see if we may pack data more carefully). [1] IPv6 addresses are rare with MogileFS, as MogileFS does not currently support them.
2013-04-16wrap getnameinfo for consistency in error logging
This will allow us to more easily handle error reporting for IPv6 addresses and allow for consistent formatting of stringified IP addresses.
2013-03-08build: add check for GCC atomics
Andrey Okunev noted undefined references on the MogileFS mailing list when building cmogstored 1.2.1 on his 32-bit CentOS5 machine.
2013-02-15mnt: inform user of slow mountlist scan
This will inform the user of why cmogstored may be slow to start, since we need the mountlist to be populated at startup. We also throw a pthread_cancel() in there to load libgcc_s under glibc, so we can avoid loading libgcc_s once we're under FD pressure. This makes test/http_idle_expire.rb more reliable.
2013-02-14selfwake: use epoll_pwait on Linux instead of eventfd
This saves us a file descriptor in Linux, which provides epoll_pwait in 2.6.19+ (and ppoll for 2.6.18, the oldest kernel we support).
2013-02-11allow self-wakeup to use eventfd under modern Linux
eventfd uses fewer resources than a pipe, so create less overhead for our users by using eventfd instead of a pipe.
2013-02-07rename fs_usable to mnt_usable
It should be clearer this code is only called from inside mnt.c and not fs.c (the latter is for general filesystem operations, not operations on a mount point).
2013-02-06remove warn module and alias it to error() in gnulib
There is no need to maintain our own code for this.
2013-01-31implement nginx-style binary upgrade via SIGUSR2
USR2 now forks a new cmogstored process which inherits listener file descriptors from the parent. The parent renames its pidfile with a ".oldbin" suffix so the new child can use the new PID file. Clusters may now upgrade to future versions of cmogstored without needing to mark hosts down via mogadm. The behavior of this process should match that of nginx: http://wiki.nginx.org/CommandLine#Upgrading_To_a_New_Binary_On_The_Fly
2013-01-31refactor process management
To support transparent upgrades, we need to be able to reap child processes regardless of what the child process was. So we must do away with the iostat/worker-specifc waitpid() calls and use waitpid(-1) to cast a wide net to reap anything and everything. When we support transparent upgrades, the fork+exec-ed child process may die, so the main process (master if --worker-processes are used) needs to be capable of reaping that new process.
2013-01-31inherit: preliminary FD inheritance over exec()
This lets us inherit listen sockets from the parent process, in the future this will allow transparent upgrades.
2013-01-31move graceful exit functionality into its own file
No need to clutter up the main file with graceful exit functionality.
2013-01-31determine mount point usability via statfs/statvfs
Filesystems with no block size are unusable, so avoid stat()-ing them and potentially having problems with our subsequent stat() stalling when a network connection slows (or goes) down.
2013-01-31split iostat util% tracking from mountlist
This prevents us from losing iostat utilization each time the mount list is rescanned. Additionally, this allows us to read iostat utilization (and write to sidechannel clients) concurrently while the mount list is being refreshed.
2012-12-05reduce deps for manpage when building from dist tarball
This allows users building from the dist tarball to make minor changes to the source without needing "help2man". This change has no effect for developers building from the git repo.
2012-12-04nostd: include generated config.h for setproctitle
Since we rely on gnulib-modified stdio.h/string.h headers, we'll need the generated config.h to make sense of them.
2012-10-30die() using error() from glibc/gnulib
Compared to our previous function, this: * prefixes the message with the program name * can show the strerror() message more consistently * automatically adds a trailing newline for us
2012-07-12build: disable gnulib tests from build
Saves about 10s of build time with "make check" and makes the distribution tarball a little smaller.
2012-07-12remove user-space, SIMPLEQ-based active queue
Epoll/kqueue descriptors are safely usable for this task given the the ability to use one-shot notifications (which is independent of level-triggering, even).
2012-07-09gnulib updates
gnulib now includes tests by default in the "tests/" directory. We'll also avoid importing certain modules that our platforms will never need to save some space in the tarball. Based on gnulib commit 48fe477c9008efadab8cf8c0c3240d824c12a8b9
2012-05-02fix subdir builds failing on help2man
We can only rebuild the manpage if cmogstored is present. When building in subdirectories, our manpage-hack.mk snippet won't work.
2012-04-20tests: use warnings instead of "prove -w" flag
"prove -w" isn't supported on some older systems which we intend to support (e.g. CentOS 5.x).
2012-04-19allow check-valgrind target on a single test case
This is helpful for isolating individual tests under valgrind.
2012-03-25use generic gc module for MD5 from gnulib
This will allow us to add support for SHA1 (and other algorithms) more easily in the future. This also enables building against libgcrypt in case libgcrypt gains optimized ASM routines or if users want a smaller binary.