diff --git a/AUTHORS b/AUTHORS deleted file mode 100644 index 3814c956..00000000 --- a/AUTHORS +++ /dev/null @@ -1,23 +0,0 @@ -Contributors - -(Including those who have played a significant role in design and test, -and those who authored open source code that was pulled in here.) - -Hafeez Bana -Brian Behlendorf -Trent D'Hooge -Chris Dunlap -Sheila Faulkner -Lionel Fourquaux -Jim Garlick -Maya Gokhale -Mark Grondona -Eric Hensbergen -Latchesar Ionkov -Felix Janda -Rob Landley -Dominique Martinet -Ron Minnich -Eugeniy Meshcheryakov -Jim Silva -Tom Tucker diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index 63b3b14f..00000000 --- a/ChangeLog +++ /dev/null @@ -1 +0,0 @@ -See git commit log on github: https://github.com/chaos/diod diff --git a/INSTALL b/INSTALL deleted file mode 100644 index 23e5f25d..00000000 --- a/INSTALL +++ /dev/null @@ -1,236 +0,0 @@ -Installation Instructions -************************* - -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free -Software Foundation, Inc. - -This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - -These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is -disabled by default to prevent problems with accidental use of stale -cache files.) - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - -Some systems require unusual options for compilation or linking that the -`configure' script does not know about. Run `./configure --help' for -details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - -You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. - -Installation Names -================== - -By default, `make install' installs the package's commands under -`/usr/local/bin', include files under `/usr/local/include', etc. You -can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -pass the option `--exec-prefix=PREFIX' to `configure', the package uses -PREFIX as the prefix for installing programs and libraries. -Documentation and other data files still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - -Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - -There may be some features `configure' cannot figure out automatically, -but needs to determine by the type of machine the package will run on. -Usually, assuming the package is built to be run on the _same_ -architectures, `configure' can figure that out, but if it prints a -message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the option `--target=TYPE' to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - -If you want to set default values for `configure' scripts to share, you -can create a site shell script called `config.site' that gives default -values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - -Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -causes the specified `gcc' to be used as the C compiler (unless it is -overridden in the site shell script). Here is a another example: - - /bin/bash ./configure CONFIG_SHELL=/bin/bash - -Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent -configuration-related scripts to be executed by `/bin/bash'. - -`configure' Invocation -====================== - -`configure' recognizes the following options to control how it operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/Makefile.am b/Makefile.am index 808cd182..98f7a5a2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,6 +4,9 @@ SUBDIRS = \ etc \ t +EXTRA_DIST = \ + NEWS.md + export DEB_BUILD_OPTIONS ?= nocheck terse deb: debian scripts/debbuild.sh +@$(top_srcdir)/scripts/debbuild.sh $(abs_top_srcdir) diff --git a/NEWS b/NEWS deleted file mode 100644 index 6dab9422..00000000 --- a/NEWS +++ /dev/null @@ -1,629 +0,0 @@ -========================================================================= -Release Notes for DIOD version 1.0.24 31 Mar 2015 -========================================================================= - -* Replace sysv-init script with systemd unit file - -* Move fully to github (including docs) - -* Misc. minor updates, mostly tests and build environment, for rhel7 - -========================================================================= -Release Notes for DIOD version 1.0.23 26 Aug 2014 -========================================================================= - -* Add dist tag to release (TOSS-2662) - -* Minor autotools forward-portability (issue 124) - -* Doc: AUTHORS, README, license headers updated - -* Stop tracking additional autotools build products. - -========================================================================= -Release Notes for DIOD version 1.0.22 19 Aug 2014 -========================================================================= - -* Stop tracking autotools build products in git. - -* Fix assertion failure at srv.c:754 (issue 122) - -* Portability fixes for musl libc (Felix Janda) - -* Change default rdma port to 5640 to match kernel - -* rdmatrans: only register the used buffer to the network - adapter (Dominique Martinet) - -* fix configure --with-tcmalloc logic - -* libnpfs: fids cloned in xattrwalk should inherit flags - -* rdmatrans: compilation error - -========================================================================= -Release Notes for DIOD version 1.0.21 31 May 2013 -========================================================================= - -* Require that "ctl" be explicitly exported. This allows export options - such as "ro", "noauth", and "privport" to apply to the ctl synthetic - file system. - -* The "auth_required_ctl" config option introduced in 1.0.15 is now - deprecated. - -* Add test coverage for trusted.* and security.* xattr namespaces. - -* Add more mmap test coverage. - -========================================================================= -Release Notes for DIOD version 1.0.20 17 May 2013 -========================================================================= - -* Fix diodshowmount segfault on exit with 'noauth'. - -* Add diodls --privport option. - -* Additional test coverage (atomic create test, pathwalk test) - -========================================================================= -Release Notes for DIOD version 1.0.19 07 May 2013 -========================================================================= - -* Additional test coverage for xattrs: - - Verify that setxattr flags XATTR_CREATE, XATTR_REPLACE work. - - Verify that that removal of a nonexistent user xattr returns ENODATA - -* Fix failure of tests/user/t17 when SELinux is enabled (bug in the test) - -========================================================================= -Release Notes for DIOD version 1.0.18 06 May 2013 -========================================================================= - -* Man page update. - -========================================================================= -Release Notes for DIOD version 1.0.17 06 May 2013 -========================================================================= - -* RPM: add missing BuildRequires for 'libattr-devel'. - -========================================================================= -Release Notes for DIOD version 1.0.15 03 May 2013 -========================================================================= - -* Add xattr support (issue 95) - -* Support for dracut bootstrap of 9nbd network block device: - - New 'dioddate' utility to synchronize system time with server's, - and 'auth_required_ctl' config option which allows MUNGE - authentication to be disabled for the ctl synthetic file system. - - Add 'noauth' and 'privport' export options which disable MUNGE auth, - and require attaches to originate from a privileged port (512-1024) - for a specific export. - -========================================================================= -Release Notes for DIOD version 1.0.14 12 Jul 2012 -========================================================================= - -* Add mount.diod --attach and --detach options to support 9nbd - (9P network block device). - -* Allow non-directories to be exported (issue 113) - -* Return Rlerror(ENOENT) in response to Tauth if auth not required - instead of Rlerror(0), which confused kernel 9P code. - -========================================================================= -Release Notes for DIOD version 1.0.13 22 May 2012 -========================================================================= - -* Allow DIOD_MOUNTOPTS in /etc/sysconfig/auto.diod - - Normalize -s,--server NAME option in diodcat, diodload, diodls, - and diodshowmount utilities, where NAME can be IP[:PORT], HOST[:PORT], - or /path/to/socket. - -* Add diodshowmount utility (issue 111) - -* Add diodls utility - -* Debugging/cleanup for issue 108 - - refactor and clarify error paths in ioctx open/close functions - - normalize error messages when ioctx state is not as expected - -========================================================================= -Release Notes for DIOD version 1.0.12 15 May 2012 -========================================================================= - -* Rework fdtrans somewhat for clarity (issue 109) - -* Test improvements: - - misc/t15: don't use munge auth or usleep (caused hang on build farm) - - misc/t15: update valgrind suppressions for 32b Ubuntu tests - -========================================================================= -Release Notes for DIOD version 1.0.11 14 May 2012 -========================================================================= - -* Return EINVAL when a file is opened with O_DIRECT flag (issue 110). - -* Drop unused maxmmap feature. - -* Fix possible race on dumpable flag (issue 105) - -* Allow connections on UNIX domain sockets - -* Additional test coverage - - kern/t40: scrub a file (split off from kern/t35) - - misc/t15: run full server under valgrind - -========================================================================= -Release Notes for DIOD version 1.0.10 30 Mar 2012 -========================================================================= - -* Fix statfs_passthru option which had no effect - -* Improve unit tests: - - add tests/kern/t12 to verify creat modes - - eliminate a false failure in tests/misc/t10 - -* Update RPM BuildRequires for tcmalloc's package rename in EPEL. - -========================================================================= -Release Notes for DIOD version 1.0.9 12 Mar 2012 -========================================================================= - -* Additional changes to ensure cores and asserts are logged (issue 105) - -========================================================================= -Release Notes for DIOD version 1.0.8 09 Mar 2012 -========================================================================= - -* Enable core dumps for diod (issue 105) - Add new assert macro that ensures assertions are captured in logs. - -* Interpret 9P2000.L open flags (issue 101) - -* Avoid asserting in ppool_fini on SIGTERM (issue 99) - -* Don't close ioctx if already open in diod_lopen. - -========================================================================= -Release Notes for DIOD version 1.0.7 07 Mar 2012 -========================================================================= - -* Change statfs to return f_type == V9FS_MAGIC by default, and add - statfs_passthru = 1 config to get old behavior (issue 80) - -* Relax kern/t14 to work around 32 bit f_fsid issue (high byte -1) - and allow f_type to be V9FS_MAGIC (issue 54) - -* Allow DAC_OVERRIDE to work in --no-auth mode, which - was causing kern/t31 to intermittently fail (issue 94) - -* Build with -g so debuginfo package contains symbols (issue 96) - -* Fix problem writing to files with mode g+w (issue 98) - -* Expanded valgrind test coverage. - -* Fix 'make dist' to include all source materials. - -========================================================================= -Release Notes for DIOD version 1.0.6 02 Mar 2012 -========================================================================= - -* Set maxmmap=0 by default as no performance benefit has been - demonstrated and it increases our VM footprint. - -* Don't try to mmap zero length files (generates log noise). - -* Do not return clunk error in the event of munmap failure. - -========================================================================= -Release Notes for DIOD version 1.0.5 29 Feb 2012 -========================================================================= - -* Add 'maxmmap' tunable which will mmap the first 'maxmmap' bytes of - a shared file as a performance optimization for parallel reads - (default 4194304). This option only affects file systems exported - with the 'sharefd' attribute. - -========================================================================= -Release Notes for DIOD version 1.0.4 28 Feb 2012 -========================================================================= - -* Fix locking problem in new ioctx code (issue 97) - This was causing the server to assert occasionally under load. - -========================================================================= -Release Notes for DIOD version 1.0.3 24 Feb 2012 -========================================================================= - -* Fix bug in 'exportopts' parsing. - -* Add diod option to override exportopts in config file: - -o,--export-opts opt[,opt] - -========================================================================= -Release Notes for DIOD version 1.0.2 24 Feb 2012 -========================================================================= - -* Add 'exportopts' diod.conf config option. This allows the new - 'sharefd' option to be enabled globally in conjunction with exportall=1. - -========================================================================= -Release Notes for DIOD version 1.0.1 24 Feb 2012 -========================================================================= - -* Add 'sharefd' export option which enables limited server-side - sharing of file descriptors for files opened read-only. The default - is (still) for every client open to trigger a server open. - -========================================================================= -Release Notes for DIOD version 1.0.0 17 Feb 2012 -========================================================================= - -* Disable verbose fidpool and flush debugging - -* Drop ctl:requests synthetic file - -* Don't cache request structs. - -========================================================================= -Pre-release Notes -========================================================================= - -1.0-pre64: - Set rwdepth=1 mount option until v9fs null deref is resolved. - Avoid allocating memory in error response path - Change the way a late flush is handled: don't suppress successful req - -1.0-pre63: - Avoid double close introduced in pre62 (issue 92) - Add 'loosefid' flag to work around buggy client (issue 81) - Fix fid accounting on flushed Tclunk/Tremove/Twalk (issue 81) - -1.0-pre62: - Don't leak file descriptor if clunk is flushed. - Really close down clunk/walk race on server (issue 81) - Better fix to server deadlock (issue 90) - -1.0-pre61: - Drop srv->lock before calling np_req_unref (issue 90) - -1.0-pre60: - Build with tcmalloc (google-perftools). - -1.0-pre59: - Enable keepalives and tune aggressively (issue 88) - [dtop] Server aname count should not count tpools with 0 active fids - -1.0-pre58: - Parameterize timestamps in protocol debug. - -1.0-pre57: - Set rwdepth=32 mount option (issue 86) - Turn off Nagle algorithm for streaming write performance. - Add timestamps to protocol debug. - -1.0-pre56: - Destroy fids if clunk or remove is flushed (issue 81) - Include path in fidpool debug message (issue 81) - Add flush debugging flag, on by default (temporarily) - Disable worker thread flush signaling (temporarily) - -1.0-pre55: - Include op in fidpool debug message (issue 81) - -1.0-pre54: - Fix race that caused server to segfault (issue 83) - Improve fidpool debugging messages (issue 81) - -1.0-pre53: - Rework fidpool code and add debugging for issue 81 - Fidpool debugging is on by default (temporarily) - Dtop shows time missing server was last seen. - Add experimental suppoort for building with tcmalloc - -1.0-pre52: - Fix broken runtime test for supplementary group creds (issue 53) - Change dtop to show file system (aname) view by default. - Fix automake issue seen on debian [E. Meshcheryakov] - Update 'make dist' target to include some missing files. - -1.0-pre51: - Switch to new lock type defintions. - NOTE: This will break regression tests on some non-x86_64 - architectures until they catch up with upstream kernel fs/9p. - Return fid to pool before sending rename/clunk reply (issue 81) - -1.0-pre50: - Fix dtop help window and rwsize counts. - Various coverity fixes. - -1.0-pre49: - Fix histogram binning in dtop rwsize view. - Add help command to dtop. - Lay some groundwork for renameat/unlinkat support. - -1.0-pre48: - Add request age and status to ctl:requests synthetic file. - Decode new lock/getlock type values (issue 69). - Add dtop screen for monitoring I/O read/write sizes. - Add fsstress and fsx to internal test suite. - -1.0-pre47: - Don't mask close errors (issue 71) - Implement diod --rfdno,wfdno options to match v9fs (issue 68) - Fix transport read/write error logging. - Change transport internal interface to message-oriented. - Don't hardwire .L lock/getlock bits in test (issue 69) - Make setgroups() system call directly to kernel (issue 53). - Misc. llvm fixes [E. Meshcheryakov] - Make unit tests work in fakeroot environment [E. Meshcheryakov] - Prep for Infiniband RDMA transport work. - Misc. coverity fixes. - -1.0-pre46: - Support hostlist:aname mount syntax (issue 66) - Fix transport abstraction to handle whole messages (issue 67) - Don't call setgroups if it affects entire process (issue 53) - Unmount servers on dtop shutdown (issue 63) - Drop an extra stat in setattr implementation and avoid potential race. - -1.0-pre45: - Call setgroups to get supplemental groups in cred (issue 64) - Make mount points appear empty (issue 62) - Eliminate extra seekdir/telldir in readdir handler - Don't get fsid from statvfs (issue 54) - Misc. cosmetic coverity fixes and other cleanup. - -1.0-pre44: - Add "suppress" export option to filter exportall list (issue 59) - Add -p,--port option to dtop (former -p,--poll-period renamed to -P). - Suppress Ubuntu FORTIFY for postmark compilation (issue 56) - Fix kern/t30 to not need nobody group (issue 55) - Handle host[:port] in DIOD_SERVERS (issue 40) - Handle multiple DIOD_SERVERS entries (issue 48,57,58) - Skip capability regression test if libcap not installed - -1.0-pre43: - Disable server DAC check and don't setgroups before handling requests. - -1.0-pre42: - Fix null deref on server conn create failure. - -1.0-pre41: - Add diodload utility for testing. - Reduce number of read requests needed to handle synthetic file get. - Careful which thread destroys conn (issue 52) - Better test coverage. - Improved logging of source of EIO errors. - -1.0-pre40: - Handle flush expitiously on working requests (issue 49) - Parse new TRENAMEAT and TUNLINKAT ops. - Set O_NONBLOCK on fd passed to kernel client. - Show additional information in dtop and fix dtop reconnect logic. - Add ctl:zero, ctl:null synthetic files for testing. - -1.0-pre39: - Fix a null pointer deref regression introduced in 1.0-pre37. - -1.0-pre38: - Fix a compiler warning that prevented RPM from building. - -1.0-pre37: - Drop per-threadpool locks and support for flushing working requests. - Fix numerous small coverity problems. - -1.0-pre36: - Undo workaround for issue 47. - Fix numerous small coverity problems. - -1.0-pre35: - Never destroy tpools (temporary workaround for issue 47). - lcreate and lopen return iounit = 0 instead of st_blksize. - Fix flush test kern/t35 (issue 45) - -1.0-pre34: - Fix a missing Buildrequires for tcp_wrappers-devel in the spec file. - -1.0-pre33: - Add dtop monitoring tool. - Fix deadlock when handling a P9_TFLUSH (issue 44). - -1.0-pre32: - Fix two places where thread pool lock could be taken twice. - Rework 'tpools' synthetic file content. - Test cleanup. - -1.0-pre31: - Remove 'threadmode' option and make threadmode=aname the default. - Fix ignored open flags in create case (issue 43). - Fix fsync returning EBADF on directory (issue 42). - Override squashuser when euid != 0 (issue 41). - Add --squashuser command line option. - Improve test coverage. - -1.0-pre30: - Implement per-aname thread pools --threadmode=aname (issue 26). - Provide diodcat defaults for host, aname, and file. - Fix diodcat segfault when file does not exist. - Normalize logged errors in diod operation handlers. - Export more performance data via ctl interface. - Cleanup. - -1.0-pre29: - Fix uninitialized aname in diodmount (regression from pre28). - Clunk afid if diodmount attach fails - Mount synthetic file system as 'ctl' rather than nil aname (issue 38). - Implement ctl/exports file and have auto.diod script use it. - On SIGHUP config reload, reset before reading config file value. - -1.0-pre28: - Rewrite npfile code and added some synthetic files for monitoring. - Don't setfsgid to gid outside of user's sg set. - Allow stand-alone ctime update in setattr, found by fstest (issue 37) - Add --no-userdb option to allow fstest to use random uids (issue 37) - Drop usercache on receipt of SIGHUP. - Cleanup. - -1.0-pre27: - Updating from pre26: - - Chkconfig diod on. Service is now called 'diod' not 'diodctl'. - - In diod.conf, rename 'diodctllisten' to 'listen' and use port 564. - - Now the changes: - Serialize password/group lookups, log all errors, and use big buffers. - Minimize password/group lookups by briefly caching lookup results. - Perform a late term abortion on diodctl. Now we just start diod. - Added diodcat utility and updated auto.diod to use it not diodctl - Reworked the libnpclient library and used it to improve test coverage. - Add better error handling for setfsuid/getfsuid. - Fix a regression in 1.0-pre25 in the gid was never being reset. - -1.0-pre26: - Reopen logs after daemonization. - -1.0-pre25: - Fix the allsquash option and add 'squashuser' config option. - Avoid unneded calls to setgroups/setfsuid/setfsgid. - Improved logging for authentication and user handling. - Cleanup. - -1.0-pre24: - Fix fid refcounting bug in remove handler (issue 29) - Add more verbose logging in auth path (issue 28) - Drop diod trans plugin and use fdtrans. - Fix test suite deadlock in Ubuntu 2.6.35 kernel. - Drop -Werror from default CFLAGS - Provide more sophisticated lua configure glue (issue 21) - Fix double-free with diod -c and !HAVE_LUA_H - Fix various memory issues. - Drop upool module and integrate UNIX user handling into libnpfs. - -1.0-pre23: - Make -s,--stdin option explicit in diod and diodctl. - Have diod listen by default on the well known 9pfs port 564. - Don't require explicit confirmation if munge isn't found (issue 23) - Terminate diod children when diodctl is terminated with SIGTERM. - Reconfigure diod children when diodctl is reconfiged with SIGHUP. - Implement orderly shutdown on SIGTERM in both servers and libnpfs. - Don't error on missing config file if built without lua (issue 24). - Remove vestiges of atomic IO extensions. - Get rid of superfluous connect errors from diodctl as it starts diod. - Fix some small memory leaks/problems. - Remove diod -s,--stats IO stats option. - Drop DEBUG_9P_ERRORS debug bit. - Prep libnpfs for extended attributes. - Cleanup. - -1.0-pre22: - Fixed initialization problem in diodctl introduced in pre21. - Properly handle msize negotiation. - Improved cleanup during shutdown. - -1.0-pre21: (do not use) - Fix minor memory problems uncovered by valgrind. - Improved test coverage. - Cleanup. - -1.0-pre20: - Add 'allsquash' config option to remap all users to nobody. - Improve portability to RHEL 5 (glibc-2.5) based systems. - -1.0-pre19: - Build liblsd with thread-safety enabled (issue #18). - Allow /d/ROOT as alias for exported root fs (/). - -1.0-pre18: - Allow file systems to be exported read-only with new export format. - Add 'exportall' diod.conf option to export everything in /proc/mounts. - Add diod -E,--export-all and diodctl -E,--export-all options. - -1.0-pre17: - Fix (another) typo in diodexp output that broke automounter. - Optimize np_gets () to avoid duplicate P9_READ calls. - Fix bug inheriting -n and -c options from diodctl to diod. - -1.0-pre16: - Service diodctl reload works now (without killing diodctl). - Make it possible to set syslog level in config file. - Cleanup. - -1.0-pre15: - Fix typo in diodexp output that broke automounter. - -1.0-pre14: - Chkconfig --add diodctl upon RPM installation. - Fix 60s idle (disconnected) timeout on diod server spawned by diodctl. - Config file renamed to /etc/diod.conf and install example (noreplace). - Don't allow 'debuglevel', 'foreground', or 'diodpath' in config file. - Set listen port with 'diodlisten' and 'diodctllisten' in config file. - Allow diod to be run in the background again. - diodexp: if hostlist, compute intersection of results. - diodexp: allow 'foo-bar', 'foo.bar', and 'bar' as keys for /foo/bar. - Misc. code cleanup and man page improvement. - -1.0-pre13: - Fix error handling in diod_sock_connect(). - Rework automounter integration. - -1.0-pre12: - Rework mount helper options. - -1.0-pre11: - Resync with upstream 9P2000.L and rhel6. Require 9P2000.L (2.6.38+). - Re-integrate MUNGE using proper 9p authentication. - Integrate diodctl and autofs (new tool: diodexp for program maps). - Dumb down diodmount and turn it into /sbin/mount.diod mount helper. - Restructure test framework to use socketpair client-server setups. - Get libnpclient working and use it for auth and diodctl. - Temporarily drop aread/awrite support. - -1.0-pre10: - Revert gcc-4.4 changes which were incorrect. - -1.0-pre9: - Fix warnings that prevented compilation with gcc-4.4 - -1.0-pre8: - Fix wstat bug that broke chgrp. - -1.0-pre7: - Fix -L parsing bug that prevented diodctl from starting diod when - not in debug mode. - Drop diodmount -U option. - Improved fcntl/flock testing in 'make check'. - -1.0-pre6: - Add diod -s filename option to capture I/O stats. - Log any I/O errors to syslog, other minor logging changes. - Incremental improvements to test suite. - Add -L option to diod and diodctl. - Fix bugs in diodctl init script and diodctl that broke restart. - Set proctitle in diod instances to reflect usage. - Add -j to diodmount and support per-job server instances. - Add -A option to diod. - -1.0-pre5: - Diod is always started by diodctl. - Simplify options on all commands. - Fix some silly bugs. - -1.0-pre4: - Diodmount should always mount with debug=1 (show errors) - Diodmount should drop datacheck option (it is implied now) - Diodmount should mount 9p2000.L not .H - Add advisory locking implementation to diod. - Fold 9p2000.H changes into 9p2000.L. - -1.0-pre3: - Add diodmount --verbose option, mount with -o datacheck. - Drop readahead option - -1.0-pre2: - Fix some silly bugs in 1.0-pre1. diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 00000000..5a15d1da --- /dev/null +++ b/NEWS.md @@ -0,0 +1,690 @@ +diod version 1.1.0 - 2025-11-02 +------------------------------- + +This release represents changes over more than a decade. +Some important changes since the last release to take note of: + + * Configure options have changed. See ./configure --help for details. + * A few 9P client tools were consolidated into a new one called `diodcli` + * The `diod` server no longer daemonizes or logs to syslog. + * Running `make check` as root is no longer necessary nor will it work. + Enable passwordless sudo if you want tests that require root to run. + +## New Features + +#### 2024-2025 + + * change the default access mode to `client` and add SECURITY section to + diod(8) (#157) + * Implement Trenameat and Tunlinkat (#135) + * enable systemctl reload diod + minor logging improvements (#132) + +#### 2015-2023 + + * Use privport with ipv6 (#94) + * Increase server msize up to 1M which is becoming standard and default + for 9p tcp buffers as of kernels 5.15-rc1 (#67) + * Add option to disable hostname lookups (#66) + * Support IPv6 addresses (#64) + * Implement access=user on FreeBSD using nfs-ganesha-kmod (#55, #58) + * FreeBSD port (#27) + +## Deprecations + +#### 2024-2025 + + * drop TCP Wrappers support + misc. build system cleanup (#128) + * diod: do not daemonize, do not syslog (#130, #134) + * diodcli: replace diodcat, diodls, dioddate, diodshowmount, and + deprecate diodload (#154, #155) + * diodmount: drop --9nbd-attach, --9nbd-detach opts (#120) + * jettison auto.diod, empty diod.conf, and RPM spec file (#152) + +## Fixes + +#### 2024-2025 + + * mount helper: relax checks on 9p mount options (#151) + * fix incorrect assertion and malformed log message (#150) + * libnpfs: Fix assert failure when receiving R-type messages (#137) + * diod: Fix uint32 overflow when Tread/Twrite count > `UINT32_MAX-IOHDRSZ` + (#136) + * improve setgroups error message and inline documentation (#129) + * fix incorrect fsid in 9P2000.L statfs response (#119) + * fix 9P2000.L protocol incompatibility with kernel Tfsync (#118) + * handle some malformed 9P requests gracefully (#110) + * Handle various `time_t` sizes in printf and scanf (#100) + * auto.diod.in: remove bashisms (#96) + +#### 2015-2024 + + * allow open+walk to get diod working with linux v9fs again (#81) + * fix couple issues found when compiling on 32-bit OS (#83) + * fix/suppress gcc9 compiler warnings (#78) + * Silence warnings when compiling with clang (#69) + * Fix some compilation issues on FreeBSD (#57) + * diod/ops.c: add header file for makedev (#45) + * exporting through symlinks/stat vs lstat in `diod_walk()` (#17) + * don't try to update /etc/mtab unless it is a regular file. (#16) + +## Cleanup + +#### 2024-2025 + + * tighten up diod configuration and initialization (#133) + * tidy up experimental RDMA feature (#131) + * libnpfs: replace kernel 9p.h header (#125) + * misc test cleanup and move diod to the src/cmd directory (#123) + * move source to src/ and man pages to man/ (#114) + * configure: minor cleanup (#113) + * Shutdown cleanup (#98) + +#### 2015-2023 + + * switch to abbreviated SPDX license headers (#80) + * Remove empty README (#65) + * cleanup: remove files that should not have been committed (#41) + * misc cleanup (#40) + +## Build/CI/Testsuite/Documentation + +#### 2024-2025 + + * testsuite: complete sharness framework conversion (#158) + * testsuite: fix POSIX ACL test and convert to sharness (#156) + * add self-hosting test (#153) + * testsuite: convert some v9fs tests to sharness (#149) + * testsuite: convert test/misc and test/user to sharness framework (#147) + * Fix non-optional LUAJIT support macro in autoconf-archive > 2023.02.20 + (#143) + * testsuite: improve locking tests (#127) + * get parallel build/test working (#122) + * testsuite: convert unit tests to TAP (#121) + * build: add make deb target for debian package (#116) + * run the kernel tests in CI (#112) + * test fixes (#108) + * add mergify support (#111) + * Build fixes (#97) + +#### 2015-2023 + + * github: extend build matrix to include ubuntu18 (#82) + * build: fix lua detection (#74) + * add clang to CI, fix warning cflags for clang (#79) + * ci: add basic github workflow (#77) + * move main.yml into the correct directory (#76) + * add stubbed github workflow (#75) + * Allow pkg-config to obtain needed libs for linking with ncurses (#68) + * Fix systemd build with diod.spec, suggestion to split package in + diod{,-utils} (#63) + * Travis-ci: added support for ppc64le (#62) + * Use autoconf rather than platform specific defines (#60) + * Update protocol.md (#56) + * Misc. build/packaging fixes (#54) + * travis-ci: add simple travis build, fix make distcheck (#29) + * protocol.md: fix typos (#36) + * README.md: trivial fixes (#37) + * Build fixing patches (#24) + +diod version 1.0.24 - 2015-03-31 +-------------------------------- + + * Replace sysv-init script with systemd unit file (#12) + * Move fully to github (including docs) + * Misc. minor updates, mostly tests and build environment, for rhel7 + +diod version 1.0.23 - 2014-08-26 +-------------------------------- + + * Add dist tag to release (TOSS-2662) + * Minor autotools forward-portability (gcode-124) + * Doc: AUTHORS, README, license headers updated + * Stop tracking additional autotools build products. + +diod version 1.0.22 - 2014-08-19 +-------------------------------- + + * Stop tracking autotools build products in git. + * Fix assertion failure at srv.c:754 (gcode-122) + * Portability fixes for musl libc (Felix Janda) + * Change default rdma port to 5640 to match kernel + * rdmatrans: only register the used buffer to the network + adapter (Dominique Martinet) + * fix configure --with-tcmalloc logic + * libnpfs: fids cloned in xattrwalk should inherit flags + * rdmatrans: compilation error + +diod version 1.0.21 - 2013-05-31 +-------------------------------- + + * Require that "ctl" be explicitly exported. This allows export options + such as "ro", "noauth", and "privport" to apply to the ctl synthetic + file system. + * The `auth_required_ctl` config option introduced in 1.0.15 is now + deprecated. + * Add test coverage for `trusted.*` and `security.*` xattr namespaces. + * Add more mmap test coverage. + +diod version 1.0.20 - 2013-05-17 +-------------------------------- + + * Fix diodshowmount segfault on exit with `noauth`. + * Add diodls `--privport` option. + * Additional test coverage (atomic create test, pathwalk test) + +diod version 1.0.19 - 2013-05-07 +-------------------------------- + + * Additional test coverage for xattrs: 1) Verify that setxattr flags + `XATTR_CREATE`, `XATTR_REPLACE` work. 2) Verify that that removal of + a nonexistent user xattr returns ENODATA + * Fix failure of tests/user/t17 when SELinux is enabled (bug in the test) + +diod version 1.0.18 - 2013-05-16 +-------------------------------- + + * Man page update. + +diod version 1.0.17 - 2013-05-06 +-------------------------------- + + * RPM: add missing BuildRequires for 'libattr-devel'. + +diod version 1.0.16 - 2013-05-03 +-------------------------------- + + * NEWS: fix typo + +diod version 1.0.15 - 2013-05-03 +-------------------------------- + +Add support for dracut bootstrap of 9nbd network block device. + + * Add xattr support (gcode-95) + * New `dioddate` utility to synchronize system time with server's, + and `auth_required_ctl` config option which allows MUNGE + authentication to be disabled for the ctl synthetic file system. + * Add `noauth` and `privport` export options which disable MUNGE auth, + and require attaches to originate from a privileged port (512-1024) + for a specific export. + +diod version 1.0.14 - 2012-07-12 +-------------------------------- + + * Add mount.diod `--attach` and `--detach` options to support 9nbd + (9P network block device). + * Allow non-directories to be exported (gcode-113) + * Return Rlerror(ENOENT) in response to Tauth if auth not required + instead of Rlerror(0), which confused kernel 9P code. + +diod version 1.0.13 - 2012-05-22 +-------------------------------- + + * Allow `DIOD_MOUNTOPTS` in /etc/sysconfig/auto.diod + * Normalize `-s,--server NAME` option in diodcat, diodload, diodls, + and diodshowmount utilities, where NAME can be `IP[:PORT]`, `HOST[:PORT]`, + or `/path/to/socket`. + * Add diodshowmount utility (gcode-111) + * Add diodls utility + * refactor and clarify error paths in ioctx open/close functions (gcode-108) + * normalize error messages when ioctx state is not as expected (gcode-108) + +diod version 1.0.12 - 2012-05-15 +-------------------------------- + + * Rework fdtrans somewhat for clarity (gcode-109) + * Improve misc/t15: don't use munge auth or usleep (caused hang on build farm) + * Improve misc/t15: update valgrind suppressions for 32b Ubuntu tests + +diod version 1.0.11 - 2012-05-14 +-------------------------------- + + * Return EINVAL when a file is opened with `O_DIRECT` flag (gcode-110). + * Drop unused maxmmap feature. + * Fix possible race on dumpable flag (gcode-105) + * Allow connections on UNIX domain sockets + * Add test kern/t40: scrub a file (split off from kern/t35) + * Add test misc/t15: run full server under valgrind + +diod version 1.0.10 - 2012-03-30 +-------------------------------- + + * Fix `statfs_passthru` option which had no effect + * Add tests/kern/t12 to verify creat modes + * eliminate a false failure in tests/misc/t10 + * Update RPM BuildRequires for tcmalloc's package rename in EPEL. + +diod version 1.0.9 - 2012-03-12 +------------------------------- + +* Additional changes to ensure cores and asserts are logged (gcode-105) + +diod version 1.0.8 - 2012-03-09 +------------------------------- + + * Enable core dumps for diod (gcode-105) + * Add new assert macro that ensures assertions are captured in logs. + * Interpret 9P2000.L open flags (gcode-101) + * Avoid asserting in `ppool_fini` on SIGTERM (gcode-99) + * Don't close ioctx if already open in `diod_lopen()`. + +diod version 1.0.7 - 2012-03-07 +------------------------------- + + * Change statfs to return `f_type == V9FS_MAGIC` by default, and add + `statfs_passthru = 1` config to get old behavior (gcode-80) + * Relax kern/t14 to work around 32 bit `f_fsid issue` (high byte -1) + and allow `f_type` to be `V9FS_MAGIC` (gcode-54) + * Allow `DAC_OVERRIDE` to work in --no-auth mode, which + was causing kern/t31 to intermittently fail (gcode-94) + * Build with -g so debuginfo package contains symbols (gcode-96) + * Fix problem writing to files with mode g+w (gcode-98) + * Expanded valgrind test coverage. + * Fix `make dist` to include all source materials. + +diod version 1.0.6 - 2012-03-02 +------------------------------- + + * Set `maxmmap=0` by default as no performance benefit has been + demonstrated and it increases our VM footprint. + * Don't try to mmap zero length files (generates log noise). + * Do not return clunk error in the event of munmap failure. + +diod version 1.0.5 - 2012-02-29 +------------------------------- + + * Add `maxmmap` tunable which will mmap the first `maxmmap` bytes of + a shared file as a performance optimization for parallel reads + (default 4194304). This option only affects file systems exported + with the `sharefd` attribute. + +diod version 1.0.4 - 2012-02-28 +------------------------------- + + * Fix locking problem in new ioctx code (gcode-97) + This was causing the server to assert occasionally under load. + +diod version 1.0.3 - 2012-02-24 +------------------------------- + + * Fix bug in `exportopts` parsing. + * Add diod option to override exportopts in config file: + `-o,--export-opts opt[,opt]` + +diod version 1.0.2 - 2012-02-24 +------------------------------- + + * Add `exportopts` diod.conf config option. This allows the new + `sharefd` option to be enabled globally in conjunction with `exportall=1`. + +diod version 1.0.1 - 2012-02-24 +------------------------------- + + * Add `sharefd` export option which enables limited server-side + sharing of file descriptors for files opened read-only. The default + is (still) for every client open to trigger a server open. + +diod version 1.0.0 - 2012-02-17 +------------------------------- + + * Disable verbose fidpool and flush debugging + * Drop ctl:requests synthetic file + * Don't cache request structs. + +Pre-release Notes +----------------- + +``` +1.0-pre64: + Set rwdepth=1 mount option until v9fs null deref is resolved. + Avoid allocating memory in error response path + Change the way a late flush is handled: don't suppress successful req + +1.0-pre63: + Avoid double close introduced in pre62 (gcode-92) + Add 'loosefid' flag to work around buggy client (gcode-81) + Fix fid accounting on flushed Tclunk/Tremove/Twalk (gcode-81) + +1.0-pre62: + Don't leak file descriptor if clunk is flushed. + Really close down clunk/walk race on server (gcode-81) + Better fix to server deadlock (gcode-90) + +1.0-pre61: + Drop srv->lock before calling np_req_unref (gcode-90) + +1.0-pre60: + Build with tcmalloc (google-perftools). + +1.0-pre59: + Enable keepalives and tune aggressively (gcode-88) + [dtop] Server aname count should not count tpools with 0 active fids + +1.0-pre58: + Parameterize timestamps in protocol debug. + +1.0-pre57: + Set rwdepth=32 mount option (gcode-86) + Turn off Nagle algorithm for streaming write performance. + Add timestamps to protocol debug. + +1.0-pre56: + Destroy fids if clunk or remove is flushed (gcode-81) + Include path in fidpool debug message (gcode-81) + Add flush debugging flag, on by default (temporarily) + Disable worker thread flush signaling (temporarily) + +1.0-pre55: + Include op in fidpool debug message (gcode-81) + +1.0-pre54: + Fix race that caused server to segfault (gcode-83) + Improve fidpool debugging messages (gcode-81) + +1.0-pre53: + Rework fidpool code and add debugging for gcode-81 + Fidpool debugging is on by default (temporarily) + Dtop shows time missing server was last seen. + Add experimental suppoort for building with tcmalloc + +1.0-pre52: + Fix broken runtime test for supplementary group creds (gcode-53) + Change dtop to show file system (aname) view by default. + Fix automake gcode-seen on debian [E. Meshcheryakov] + Update 'make dist' target to include some missing files. + +1.0-pre51: + Switch to new lock type defintions. + NOTE: This will break regression tests on some non-x86_64 + architectures until they catch up with upstream kernel fs/9p. + Return fid to pool before sending rename/clunk reply (gcode-81) + +1.0-pre50: + Fix dtop help window and rwsize counts. + Various coverity fixes. + +1.0-pre49: + Fix histogram binning in dtop rwsize view. + Add help command to dtop. + Lay some groundwork for renameat/unlinkat support. + +1.0-pre48: + Add request age and status to ctl:requests synthetic file. + Decode new lock/getlock type values (gcode-69). + Add dtop screen for monitoring I/O read/write sizes. + Add fsstress and fsx to internal test suite. + +1.0-pre47: + Don't mask close errors (gcode-71) + Implement diod --rfdno,wfdno options to match v9fs (gcode-68) + Fix transport read/write error logging. + Change transport internal interface to message-oriented. + Don't hardwire .L lock/getlock bits in test (gcode-69) + Make setgroups() system call directly to kernel (gcode-53). + Misc. llvm fixes [E. Meshcheryakov] + Make unit tests work in fakeroot environment [E. Meshcheryakov] + Prep for Infiniband RDMA transport work. + Misc. coverity fixes. + +1.0-pre46: + Support hostlist:aname mount syntax (gcode-66) + Fix transport abstraction to handle whole messages (gcode-67) + Don't call setgroups if it affects entire process (gcode-53) + Unmount servers on dtop shutdown (gcode-63) + Drop an extra stat in setattr implementation and avoid potential race. + +1.0-pre45: + Call setgroups to get supplemental groups in cred (gcode-64) + Make mount points appear empty (gcode-62) + Eliminate extra seekdir/telldir in readdir handler + Don't get fsid from statvfs (gcode-54) + Misc. cosmetic coverity fixes and other cleanup. + +1.0-pre44: + Add "suppress" export option to filter exportall list (gcode-59) + Add -p,--port option to dtop (former -p,--poll-period renamed to -P). + Suppress Ubuntu FORTIFY for postmark compilation (gcode-56) + Fix kern/t30 to not need nobody group (gcode-55) + Handle host[:port] in DIOD_SERVERS (gcode-40) + Handle multiple DIOD_SERVERS entries (gcode-48,57,58) + Skip capability regression test if libcap not installed + +1.0-pre43: + Disable server DAC check and don't setgroups before handling requests. + +1.0-pre42: + Fix null deref on server conn create failure. + +1.0-pre41: + Add diodload utility for testing. + Reduce number of read requests needed to handle synthetic file get. + Careful which thread destroys conn (gcode-52) + Better test coverage. + Improved logging of source of EIO errors. + +1.0-pre40: + Handle flush expitiously on working requests (gcode-49) + Parse new TRENAMEAT and TUNLINKAT ops. + Set O_NONBLOCK on fd passed to kernel client. + Show additional information in dtop and fix dtop reconnect logic. + Add ctl:zero, ctl:null synthetic files for testing. + +1.0-pre39: + Fix a null pointer deref regression introduced in 1.0-pre37. + +1.0-pre38: + Fix a compiler warning that prevented RPM from building. + +1.0-pre37: + Drop per-threadpool locks and support for flushing working requests. + Fix numerous small coverity problems. + +1.0-pre36: + Undo workaround for gcode-47. + Fix numerous small coverity problems. + +1.0-pre35: + Never destroy tpools (temporary workaround for gcode-47). + lcreate and lopen return iounit = 0 instead of st_blksize. + Fix flush test kern/t35 (gcode-45) + +1.0-pre34: + Fix a missing Buildrequires for tcp_wrappers-devel in the spec file. + +1.0-pre33: + Add dtop monitoring tool. + Fix deadlock when handling a P9_TFLUSH (gcode-44). + +1.0-pre32: + Fix two places where thread pool lock could be taken twice. + Rework 'tpools' synthetic file content. + Test cleanup. + +1.0-pre31: + Remove 'threadmode' option and make threadmode=aname the default. + Fix ignored open flags in create case (gcode-43). + Fix fsync returning EBADF on directory (gcode-42). + Override squashuser when euid != 0 (gcode-41). + Add --squashuser command line option. + Improve test coverage. + +1.0-pre30: + Implement per-aname thread pools --threadmode=aname (gcode-26). + Provide diodcat defaults for host, aname, and file. + Fix diodcat segfault when file does not exist. + Normalize logged errors in diod operation handlers. + Export more performance data via ctl interface. + Cleanup. + +1.0-pre29: + Fix uninitialized aname in diodmount (regression from pre28). + Clunk afid if diodmount attach fails + Mount synthetic file system as 'ctl' rather than nil aname (gcode-38). + Implement ctl/exports file and have auto.diod script use it. + On SIGHUP config reload, reset before reading config file value. + +1.0-pre28: + Rewrite npfile code and added some synthetic files for monitoring. + Don't setfsgid to gid outside of user's sg set. + Allow stand-alone ctime update in setattr, found by fstest (gcode-37) + Add --no-userdb option to allow fstest to use random uids (gcode-37) + Drop usercache on receipt of SIGHUP. + Cleanup. + +1.0-pre27: + Updating from pre26: + - Chkconfig diod on. Service is now called 'diod' not 'diodctl'. + - In diod.conf, rename 'diodctllisten' to 'listen' and use port 564. + + Now the changes: + Serialize password/group lookups, log all errors, and use big buffers. + Minimize password/group lookups by briefly caching lookup results. + Perform a late term abortion on diodctl. Now we just start diod. + Added diodcat utility and updated auto.diod to use it not diodctl + Reworked the libnpclient library and used it to improve test coverage. + Add better error handling for setfsuid/getfsuid. + Fix a regression in 1.0-pre25 in the gid was never being reset. + +1.0-pre26: + Reopen logs after daemonization. + +1.0-pre25: + Fix the allsquash option and add 'squashuser' config option. + Avoid unneded calls to setgroups/setfsuid/setfsgid. + Improved logging for authentication and user handling. + Cleanup. + +1.0-pre24: + Fix fid refcounting bug in remove handler (gcode-29) + Add more verbose logging in auth path (gcode-28) + Drop diod trans plugin and use fdtrans. + Fix test suite deadlock in Ubuntu 2.6.35 kernel. + Drop -Werror from default CFLAGS + Provide more sophisticated lua configure glue (gcode-21) + Fix double-free with diod -c and !HAVE_LUA_H + Fix various memory issues. + Drop upool module and integrate UNIX user handling into libnpfs. + +1.0-pre23: + Make -s,--stdin option explicit in diod and diodctl. + Have diod listen by default on the well known 9pfs port 564. + Don't require explicit confirmation if munge isn't found (gcode-23) + Terminate diod children when diodctl is terminated with SIGTERM. + Reconfigure diod children when diodctl is reconfiged with SIGHUP. + Implement orderly shutdown on SIGTERM in both servers and libnpfs. + Don't error on missing config file if built without lua (gcode-24). + Remove vestiges of atomic IO extensions. + Get rid of superfluous connect errors from diodctl as it starts diod. + Fix some small memory leaks/problems. + Remove diod -s,--stats IO stats option. + Drop DEBUG_9P_ERRORS debug bit. + Prep libnpfs for extended attributes. + Cleanup. + +1.0-pre22: + Fixed initialization problem in diodctl introduced in pre21. + Properly handle msize negotiation. + Improved cleanup during shutdown. + +1.0-pre21: (do not use) + Fix minor memory problems uncovered by valgrind. + Improved test coverage. + Cleanup. + +1.0-pre20: + Add 'allsquash' config option to remap all users to nobody. + Improve portability to RHEL 5 (glibc-2.5) based systems. + +1.0-pre19: + Build liblsd with thread-safety enabled (gcode-18). + Allow /d/ROOT as alias for exported root fs (/). + +1.0-pre18: + Allow file systems to be exported read-only with new export format. + Add 'exportall' diod.conf option to export everything in /proc/mounts. + Add diod -E,--export-all and diodctl -E,--export-all options. + +1.0-pre17: + Fix (another) typo in diodexp output that broke automounter. + Optimize np_gets () to avoid duplicate P9_READ calls. + Fix bug inheriting -n and -c options from diodctl to diod. + +1.0-pre16: + Service diodctl reload works now (without killing diodctl). + Make it possible to set syslog level in config file. + Cleanup. + +1.0-pre15: + Fix typo in diodexp output that broke automounter. + +1.0-pre14: + Chkconfig --add diodctl upon RPM installation. + Fix 60s idle (disconnected) timeout on diod server spawned by diodctl. + Config file renamed to /etc/diod.conf and install example (noreplace). + Don't allow 'debuglevel', 'foreground', or 'diodpath' in config file. + Set listen port with 'diodlisten' and 'diodctllisten' in config file. + Allow diod to be run in the background again. + diodexp: if hostlist, compute intersection of results. + diodexp: allow 'foo-bar', 'foo.bar', and 'bar' as keys for /foo/bar. + Misc. code cleanup and man page improvement. + +1.0-pre13: + Fix error handling in diod_sock_connect(). + Rework automounter integration. + +1.0-pre12: + Rework mount helper options. + +1.0-pre11: + Resync with upstream 9P2000.L and rhel6. Require 9P2000.L (2.6.38+). + Re-integrate MUNGE using proper 9p authentication. + Integrate diodctl and autofs (new tool: diodexp for program maps). + Dumb down diodmount and turn it into /sbin/mount.diod mount helper. + Restructure test framework to use socketpair client-server setups. + Get libnpclient working and use it for auth and diodctl. + Temporarily drop aread/awrite support. + +1.0-pre10: + Revert gcc-4.4 changes which were incorrect. + +1.0-pre9: + Fix warnings that prevented compilation with gcc-4.4 + +1.0-pre8: + Fix wstat bug that broke chgrp. + +1.0-pre7: + Fix -L parsing bug that prevented diodctl from starting diod when + not in debug mode. + Drop diodmount -U option. + Improved fcntl/flock testing in 'make check'. + +1.0-pre6: + Add diod -s filename option to capture I/O stats. + Log any I/O errors to syslog, other minor logging changes. + Incremental improvements to test suite. + Add -L option to diod and diodctl. + Fix bugs in diodctl init script and diodctl that broke restart. + Set proctitle in diod instances to reflect usage. + Add -j to diodmount and support per-job server instances. + Add -A option to diod. + +1.0-pre5: + Diod is always started by diodctl. + Simplify options on all commands. + Fix some silly bugs. + +1.0-pre4: + Diodmount should always mount with debug=1 (show errors) + Diodmount should drop datacheck option (it is implied now) + Diodmount should mount 9p2000.L not .H + Add advisory locking implementation to diod. + Fold 9p2000.H changes into 9p2000.L. + +1.0-pre3: + Add diodmount --verbose option, mount with -o datacheck. + Drop readahead option + +1.0-pre2: + Fix some silly bugs in 1.0-pre1. +``` diff --git a/README.md b/README.md index 91f4813c..0f8b4fa5 100644 --- a/README.md +++ b/README.md @@ -1,131 +1,99 @@ ### diod -`diod` is a multi-threaded, user space file server that speaks -[9P2000.L protocol](protocol.md). +`diod` is a file server that speaks [9P2000.L protocol](protocol.md). -### Building +### Building and Installing -#### On Debian +The basic installation instructions are: ``` -sudo apt-get install build-essential ncurses-dev automake autoconf git pkgconf -sudo apt-get install lua5.1 liblua5.1-dev libmunge-dev libcap-dev libattr1-dev -./autogen.sh -./configure -make -make check +$ ./configure +$ make +$ make check +$ sudo make install ``` -#### On Red Hat - +Or for the minimalists: ``` -sudo yum install epel-release gperftools-devel ncurses-devel automake autoconf libattr-devel -sudo yum install lua lua-devel munge-devel libcap-devel pkgconf -./autogen.sh -./configure -make -make check +$ ./configure --disable-diodmount --disable-config \ + --disable-auth --disable-multiuser ``` -#### On FreeBSD - +To build from the git tree, first do: ``` -portmaster security/munge -portmaster lang/lua53 -./autogen.sh -./configure -make +$ git clone https://github.com/chaos/diod.git +$ cd diod +$ ./autogen.sh ``` -See also the remarks below if you want a server that supports impersonation -(access=user in v9fs). - -### Kernel Client - -The kernel 9P client, sometimes referred to as "v9fs", consists -of the `9p.ko` file system module, and its network transport module, -`9pnet.ko`. - -Although the kernel client supports several 9P variants, diod only supports -9P2000.L, and only in its feature-complete form, as it appeared in 2.6.38. - -Earlier versions of the kernel that do not support 9P2000.L will fail -at mount time when version negotiation fails. Some pre-2.6.38 versions -of the kernel that have 9P2000.L but still send some 9P2000.u ops may -fail in less obvious ways. Use a 2.6.38 or later kernel. - -### Quick Start - -Start the diod server in foreground, with protocol debugging to stderr, -no authentication, and one export: +To build and install a test deb package (debian-based systems only): ``` -sudo ./diod -f -d 1 -n -e /tmp/9 +$ sudo scripts/install-deps-deb.sh deb test +$ ./configure +$ make deb +$ cd debbuild +$ sudo dpkg -i *deb ``` -Mount it using the raw mount command: -``` -sudo mount -t 9p -n 127.0.0.1 /mnt \ - -oaname=/tmp/9,version=9p2000.L,uname=root,access=user -``` +NOTE: Don't run `make check` as root. Tests that require root will +attempt to use passwordless sudo. If that is unavailable, those tests +are simply skipped. + +### Quick Start: single-user -Or (simpler), mount it using diodmount: +start the server: ``` -sudo ./diodmount -n localhost:/tmp/9 /mnt +$ diod --listen=127.0.0.1:9000 --no-auth --export=/home/bob +Listening on 127.0.0.1:9000 +Only bob can attach and access files as bob +No authentication is required ``` -Or (even simpler) if diodmount is installed as `/sbin/mount.diod`: + +mount the file system: ``` -sudo mount -t diod -n localhost:/tmp/9 /mnt +$ sudo mount -t 9p -n -o version=9p2000.L,trans=tcp \ + -o aname=/home/bob,uname=bob,access=1001,port=9000 127.0.0.1 /mnt/bob ``` -### I/O forwarding on clusters: +### Quick Start: multi-user -On I/O node, set up `/etc/diod.conf` according to diod.conf(5), then: +start the server: ``` -chkconfig diod on -service diod start +$ sudo diod --no-auth --export=/home +Listening on 0.0.0.0:564 +Anyone can attach and access files as themselves +No authentication is required ``` -On compute node, if I/O node is `fritz42`, add entries like this to -`/etc/fstab`: +mount the file system: ``` -fritz42:/g/g0 /g/g0 diod default 0 0 +$ sudo mount.diod localhost:/home /mnt/home ``` - -Alternatively, use "zero-config" automounter method: -* set `DIOD_SERVERS="fritz42"` in `/etc/sysconfig/auto.diod1` -* add `/d /etc/auto.diod` to `/etc/auto.master` -Then: +or equivalently ``` -mkdir /d -chkconfig autofs on -service autofs start -ln -s /d/g.g0 /g/g0 +$ sudo mount -t 9p -n -o version=9p2000.L,trans=tcp \ + -o aname=/home,uname=root,access=client 127.0.0.1 /mnt/home ``` -Note that at this point diod is only being tested with NFS file systems. -Use it with Lustre or GPFS at your own peril - but if you do, please -report issues! - -### Impersonation on FreeBSD - -FreeBSD does not support per-thread credentials. If you want a diod server -that supports v9fs' access=user, you can: - * build diod with `--enable-impersonation` (disabled by default on FreeBSD) - * install `net/nfs-ganesha-kmod` from ports (or at least the modules - `setthreadgid`, `setthreadgroups` and `setthreaduid`) or from - [source](https://github.com/nfs-ganesha/nfs-ganesha) - * before stating diod, load the modules providing additional syscalls: -``` -kldload /path/to/nfs-ganesha-kmod/setthreaduid/setthreaduid.ko -kldload /path/to/nfs-ganesha-kmod/setthreadgid/setthreadgid.ko -kldload /path/to/nfs-ganesha-kmod/setthreadgroups/setthreadgroups.ko -``` +### Should I use 9P instead of NFS? -Please read nfs-ganesha-kmod's README first, and use at your own risk. +If you are asking this here, you must mean `diod` with the Linux +[v9fs kernel client](https://docs.kernel.org/filesystems/9p.html). +Roughly speaking, `diod` in multi-user mode coupled with v9fs +`access=client,uname=root` approximates NFS, but be aware of +the following caveats: -# Support + * If the server restarts or the client loses its connection, the + client will need to be remounted. There is no automatic recovery. + * By default, there is no caching so interactive performance is poor. + Several v9fs client caching options are available, with different + trade-offs, however there is no mechanism in 9P to allow the server + to invalidate a cached object. + * Even when securely authenticated with MUNGE, connections are not + protected against eavesdropping or other attacks. + * File locking may not work as expected (test your use case!) -Use GitHub! +9P is compelling for its simplicity. -### Release +### License SPDX-License-Identifier: GPL-2.0-or-later diff --git a/configure.ac b/configure.ac index 13840fa5..b687b4d0 100644 --- a/configure.ac +++ b/configure.ac @@ -5,7 +5,7 @@ AC_INIT([diod], m4_esyscmd([git describe --always | awk '/.*/ {sub(/^v/, ""); printf "%s",$1; exit}'])) AC_CONFIG_AUX_DIR([config]) AC_CONFIG_MACRO_DIR([config]) -AC_CONFIG_SRCDIR([NEWS]) +AC_CONFIG_SRCDIR([NEWS.md]) AC_CANONICAL_HOST AC_REQUIRE_AUX_FILE([tap-driver.sh]) X_AC_EXPAND_INSTALL_DIRS diff --git a/protocol.md b/protocol.md index bcced899..2ec02c8b 100644 --- a/protocol.md +++ b/protocol.md @@ -550,16 +550,16 @@ P9_RCLUNK tag 1 ``` ### References -VirtFS -- A virtualization aware File System pass-through, Jujjuri et al, 2010. +[VirtFS -- A virtualization aware File System pass-through](https://www.kernel.org/doc/ols/2010/ols2010-pages-109-120.pdf), Jujjuri et al, 2010. -v9fs linux/Documentation/filesystems/9p.txt +[v9fs: Plan 9 Resource Sharing for Linux](https://docs.kernel.org/filesystems/9p.html) -Plan 9 Remote Resource Protocol Unix Extension experimental-draft-9P2000-unix-extension, Van Hensbergen, 2009. +[Plan 9 Remote Resource Protocol Unix Extension experimental-draft-9P2000-unix-extension](https://ericvh.github.io/9p-rfc/rfc9p2000.u.html), Van Hensbergen, 2009. -Grave Robbers from Outer Space: Using 9P2000 Under Linux, Van Hensbergen et al, 2005. +[Grave Robbers from Outer Space: Using 9P2000 Under Linux](https://www.usenix.org/legacy/publications/library/proceedings/usenix05/tech/freenix/full_papers/hensbergen/hensbergen.pdf), Van Hensbergen et al, 2005. -Plan 9 Remote Resource Protocol 9p2000, Van Hensbergen, 2005. +[Plan 9 Remote Resource Protocol 9p2000](https://ericvh.github.io/9p-rfc/rfc9p2000.html), Van Hensbergen, 2005. -Plan 9 from Bell Labs - Section 5 - Plan 9 File Protocol, 9P, Plan 9 Manual, 4nd edition, 2002. +[Plan 9 from Bell Labs - Section 5 - Plan 9 File Protocol](https://9p.io/magic/man2html/5/0intro), 9P, Plan 9 Manual, 4nd edition, 2002. -The Use of Name Spaces in Plan 9 Pike et al, 1993. +[The Use of Name Spaces in Plan 9](https://9p.io/sys/doc/names.pdf), Pike et al, 1993. diff --git a/scripts/install-deps-deb.sh b/scripts/install-deps-deb.sh index 4eb7ccbd..5c32cf56 100755 --- a/scripts/install-deps-deb.sh +++ b/scripts/install-deps-deb.sh @@ -27,4 +27,6 @@ apt install \ libcap2-dev \ lua5.1 \ liblua5.1-dev \ + munge \ + libmunge-dev \ $EXTRA_PKGS diff --git a/scripts/relnotes.sh b/scripts/relnotes.sh new file mode 100755 index 00000000..3b934dd9 --- /dev/null +++ b/scripts/relnotes.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +LASTTAG=$(git describe --tags --abbrev=0) + +# Uncomment URL here if you want Markdown encoded URL to PRs in output: +# URL=https://github.com/chaos/diod/pull + +pr() { + if test -n "$URL"; then + echo "([#$1]($URL/$1))" + else + echo "(#$1)" + fi +} + +echo Changes since $LASTTAG: +git log --pretty='%H' --merges $LASTTAG..HEAD | while read commit; do + pr=$(git log --pretty=%s -n1 $commit | \ + sed -e 's/Merge pull request #//' -e 's/ from .*//') + body=$(git log --pretty=%b -n1 $commit) + + echo "${body} $(pr $pr)" | fmt -s \ + | sed -e '1s/^/ * /' `: # Add bullet for first line` \ + -e '2,$s/^/ /' `: # Indent all other lines 3 spaces` \ + -e '/^\s*$/d' `: # Remove empty lines` +done + +# vi:tabstop=4 shiftwidth=4 expandtab diff --git a/t/t0023-rsync.t b/t/t0023-rsync.t index f4845036..c7bea400 100755 --- a/t/t0023-rsync.t +++ b/t/t0023-rsync.t @@ -50,7 +50,7 @@ test_expect_success 'rsync /etc to mnt/etc' ' mkdir -p mnt/etc && $SUDO $PATH_RSYNC -av /etc mnt/etc/ 2>&1 >rsync.out ' -test_expect_success 'rsync /etc to mut/etc again should be silent' ' +test_expect_success 'rsync /etc to mnt/etc again should be silent' ' $SUDO $PATH_RSYNC -avc /etc mnt/etc/ 2>&1 >rsync2.out && test_must_fail grep etc/ rsync2.out '