Date | Commit message (Collapse) |
|
The Linux kernel bugfix should hit mainline and stable kernels,
soon. But there's no reason for us to be caring if errno is
EINTR or not...
cf. https://lore.kernel.org/lkml/20190427093319.sgicqik2oqkez3wk@dcvr/
https://lore.kernel.org/lkml/20190507043954.9020-1-deepa.kernel@gmail.com/
There are also some minor build/test updates since v1.7.0 (2018-12-18):
test/mgmt-usage.rb: fix mismatched indentation warning
add .gitattributes for Ruby files
test/mgmt_auto_adjust.rb: improve diagnostic messages
.gitignore: add extra ignores for gnulib in Debian 9
notify.c: workaround epoll_pwait bug in current Linux 5.0/5.1
doc: remove mailing list subscription info
|
|
|
|
Mail subscriber lists are centralized data which is not commonly
forkable or reproducible. Mail archives are more important.
|
|
The bugfix should hit mainline and stable kernels, soon; but
there's no reason for us to be caring if errno is EINTR, or
not...
https://lore.kernel.org/lkml/20190427093319.sgicqik2oqkez3wk@dcvr/
https://lore.kernel.org/lkml/20190507043954.9020-1-deepa.kernel@gmail.com/
|
|
I usually use gnulib.git, but not everybody does and it's worth
cleaning things up a bit for this common case.
Tested with gnulib 20140202+stable-2+deb9u1 in Debian 9 (stretch).
Further updates may be needed for other common distros which
package gnulib.
|
|
Chasing down a regression in Linux 5.0:
https://lkml.kernel.org/r/20190427093319.sgicqik2oqkez3wk@dcvr
|
|
This hopefully makes our other changes easier-to-read.
|
|
Newer versions of Ruby warn on it
|
|
The big feature in this release is "devNNN/usage" are served
from memory, allowing up-to-date usage information even
unwritable/unreadable filesystems.
This can also be used to reduce spinups and wear on HDDs.
"devNNN/usage" files are still updated on the FS by default for
compatibility with existing HTTP servers, but admins may wish
to disable updates to them by removing all permissions from
the "usage" files:
chmod 0000 $MOG_DOCROOT/dev*/usage
Filesystem errors from the sendfile(2) syscalls are also
logged to syslog. There's also a bugfix for zombies for
libkqueue-on-epoll users, but that doesn't affect native
kqueue users on *BSDs.
And the usual round of gnulib, minor doc and style updates.
18 changes since v1.6.0:
cmogstored.h: remove unused mog_file.mmptr member
doc: documentation for ioq
doc: further comment updates around ioq
build-aux/txt2pre: support '=' in URLs
test/inherit: fix ambiguous parenthese warning
test/inherit: stop testing Ruby itself
doc: update URLs to HTTPS
compat_sendfile: ensure this works without an offset
doc/queues.txt: add key point about only retrieving ONE event
fix trace.h dependency on probes.h
update to gnulib.git 90f289f249a266b1afb9c63e182f5d979d17df5f
http_get.c: log filesystem-level errors from sendfile
serve /dev*/usage requests from memory
doc: URL updates to reduce redirects and favor HTTPS
test/inherit.rb: fix syntax error under Ruby 1.8
update copyrights for 2018 and use SPDX for "GPL-3.0+"
selfwake: enable self-pipe with kqueue
http_parser: workaround parsing OOM in Ragel 6.10
|
|
Noticed in FreeBSD 11.2 where Ragel 6.10 was OOM-ing, this
doesn't affect Ragel 6.9.
TODO: make sure this is fixed upstream in Ragel.
|
|
This was causing my libkqueue build to stall on Linux where
epoll_pwait exists.
We actually favor kqueue in the code for testing purposes,
so we need to enable the self-wake pipe when using libkqueue
if epoll_pwait is detected.
|
|
copyrights updated by "update-copyright" in gnulib:
git ls-files | UPDATE_COPYRIGHT_HOLDER='all contributors' \
UPDATE_COPYRIGHT_USE_INTERVALS=2 \
xargs /path/to/gnulib/build-aux/update-copyright
While we're at it, SPDX seems to be the accepted way to identify
licenses nowadays, so lets use it.
git ls-files | xargs perl -i -p -e \
's,GPLv3 or later.*,GPL-3.0+ <https://www.gnu.org/licenses/gpl-3.0.txt>,g'
|
|
Not sure if it's worth supporting 1.8, anymore, but parts
of the Ruby VM test and benchmark suite still remain
1.8-compatible...
|
|
HTTPS is usually more secure and redirects slow readers down.
|
|
Filesystems may become unwritable and out-of-date "usage" files
will cause trackers to see out-of-date information.
We still write to the filesystem by default for compatibility
with existing HTTP servers. However, giving the "usage" file a
0000 mode will prevent cmogstored from overwriting it. This
allows admins to also reduce wear on storage devices:
chmod 0000 $mogroot/dev*/usage
|
|
Socket errors are too common to log (especially from malicous
clients), but filesystem errors are rare and important.
|
|
|
|
I haven't tested with systemtap, lately; maybe something
bit rotted.
|
|
This had become such second nature to me that I forgot to
document it :x
|
|
While we never call sendfile without an offset, some projects
may copy our code and want to use it without an offset.
|
|
HTTPS seems to be working well for the rest of bogomips.org
with Let's Encrypt, so lets use it and hope it protects some
users from snooping.
|
|
TCPSocket.new raises exceptions on failure.
|
|
Who tests the tests?
|
|
We'll just have everything on r******** soon, I hope :p
|
|
Let's not forget about this queue, it is a useful design.
|
|
It's a queue that looks like a semaphore, so document it
in doc/queues.txt and provide pointers to perhaps-forgotten
documentation.
|
|
This was intended for zero-copy PUT support, but that is
probably not worth it due to checksumming and the general
unpredictability of mmap/munmap performance, especially
on non-Linux systems.
|
|
There are minor robustness fixes on handling errors when
allocating memory or spawn failures on otherwise-hosed systems.
These bugfixes will not affect real users unless the system
is already hosed or in badly overtaxed, so there's no real
need to upgrade.
There are minor portability improvements and I now test under
FreeBSD 10.x.
The iostat test cases are relaxed a bit to account for
virtualized devices (as iostat is less useful with modern
17 changes since 1.5.0 (Nov 2015):
Rakefile: add missing <div> for Atom feed
test/pwrite-wrap: remove unused variable and comment
test/pwrite_wrap: squelch unnecessary output
test/pwrite_wrap: reduce space overhead required
update copyrights for 2016
build-aux/txt2pre: drop CGI.pm requirement
stdin is always redirected to /dev/null
minor vfork/fork safety fixes
process: try to handle OOM gracefully
http_put: gracefully handle path allocation errors
iostat_process: declare environ extern
test/mgmt: relax checks for iostat mapping
gnulib copyright update for 2016
upgrade: avoid syslog call if execve fails
rely on gnulib for environ portability
INSTALL: update latest Debian stable version to 8.x
README: stop mentioning cgit
|
|
I do not expect to run it much longer since it contains CSS
and renders poorly without it.
|
|
Debian 8.x (jessie) was released over a year ago :x
|
|
This avoids warnings on my GNU system while still working on
FreeBSD.
|
|
We cannot safely call syslog on all platforms under vfork;
but we have normal exit handling to tell us of the presence
of execve errors, just not which.
|
|
|
|
In the age of virtualized devices and fast solid-state storage,
iostat information isn't as useful at it was a decade ago and
probably less useful in tests. So relax the tests.
|
|
This is necessary for FreeBSD and probably other non-GNU systems.
|
|
Failing to allocate memory should be a temporary error and be
non-fatal.
|
|
If we fail to register a process, it is not fatal since
a process is already running. However, we may not know
about when to restart it when it dies.
|
|
In case "/bin/sh" or "/dev/null" becomes unavailable during the
lifetime of cmogstored, we will no longer crash when attempting
to (re)start iostat. However, your system is probably hosed
anyways if "/bin/sh" or "/dev/null" become unavailable.
This also fixes a bug where we would leak the iostat pipe if
either fork/vfork fails.
We also close an innocuous race condition where the child
might toggle flags in the parent process and trigger an
extra wakeup.
Finally, we use sigprocmask in the child in case pthread_sigmask
does not not work on some systems after forking. This is likely
only a cosmetic change.
|
|
There is no reason for stdin to ever be connected to a terminal,
ensure we have a consistent stdin for iostat processes and the
like.
|
|
CGI.pm is no longer in the main Perl distro, so depending
on it is not worth the effort for a few lines.
|
|
git ls-files | UPDATE_COPYRIGHT_HOLDER='all contributors' \
UPDATE_COPYRIGHT_USE_INTERVALS=2 \
xargs /path/to/gnulib/build-aux/update-copyright
|
|
It's probably overkill to use 100G of space, even
if its sparse.
|
|
Oops, leftover from development many years ago.
|
|
They were blindly copied and s/search/replace/-ed from epoll-wrap.c
|
|
Apparently this is needed for proper XHTML rendering in iceweasel?
|
|
A bunch of minor changes; most notable is systemd-style socket
activation support. This was easy-to-add since we've always had
socket activation support for nginx-style SIGUSR2 upgrades.
This places no link or runtime dependency on libsystemd, so the
LISTEN_FDS and LISTEN_PID environment variables may be used in other
init systems as well. While I have my own reservations about
systemd itself, I also strongly believe in using socket activation
to prevent downtime. Existing behavior with CMOGSTORED_FD
(used for SIGUSR2 upgrades) is now documented in the manpage and
will always supported.
We've also added vfork support for Linux systems, allowing
faster spawning of iostat if malloc is using too much memory.
Behavior changes:
Bad Range: headers return 416 responses in more cases for invalid
ranges (e.g. miscalculated ranges such as "1--1", while
completely wrong ones (lacking a "bytes=" prefix) are ignored
entirely as in nginx.
Bugfixes:
There are also some cleanups to avoid dying on OOM in more places
on weird systems which trigger OOM. More work on this is ongoing.
Also updates to the latest gnulib.git
commit 71d39c1644762745b94e9449c45bfd716a79a5eb
("autoupdate") along with a change which fixes a memory leak when
people build from cmogstored.git using gnulib
commit c6148bca89e9465fd6ba3a10d273ec4cb58c2dbe
or later ("mountlist: add me_mntroot field on Linux machines").
This memory leak did not affect any released tarballs of cmogstored.
Note, users building from git (as opposed to the tarball) will
need gnulib commit 41d1b6c42641a5b9e21486ca2074198ee7909bd7
("mountlist: add support for deallocating returned list entries")
or later (from July 2013).
There are also various documentation updates and our mailing
list is now readable over NNTP:
nntp://news.public-inbox.org/inbox.comp.file-systems.mogilefs.cmogstored
|
|
gnulib commit 41d1b6c42641a5b9e21486ca2074198ee7909bd7
("mountlist: add support for deallocating returned list entries")
or later (from July 2013) is needed for free_mount_entry support
introduced in our commit 1225f9ce4c32b3bba61ce92a487d99260a001995
("use free_mount_entry from gnulib instead of rolling our own").
|
|
Oops.
|
|
Sometimes people will forget to install the manpage, make sure
it's online in plain-text or HTML format.
|
|
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).
|