Changes in 1.8.1 (April 2020)
- correction to Q_XQUOTASYNC update done in 1.8.0: return value inverted
- compile-fixes and enhancements for latest versions of the BSDs:
  - compile fix: FreeBSD lacks define RQUOTA_USRQUOTA in rpcsvc/rquota.h
  - NetBSD: map QUOTA_NOLIMIT to 0 for consistency with other platforms
  - DragonFly support prepared (untested); obsolete BSD/OS removed
  - getmntent(): decode numerical values of fs type and options to strings
  - renamed compile-switch HAVE_STATVFS: too generic (conflict Python.h)
- fixes for group quota support via RPC (i.e. v2 aka extended RPC):
  - removed use of USE_EXT_RQUOTA in include/rquota.h: switch is
    defined only later, thus extended quota was inadvertedly disabled
  - Linux & OpenBSD: switched from rpcsvc/rquota.h to internal rquota.h,
    as sys header lacks definition for extended RPC
  - getnfsquota(): don't use v1 RPC for group quota if v2 fails;
    return error instead
  - adjusted order of elements in ext_getquota_args to match XDR encoding
    (just to avoid confusion; no harm)
- setqlim: raise error in case of truncation of given limits to 32-bit
  - added smoke test: run automatically upon $ENV{AUTOMATED_TESTING}
  - enhanced "forced RPC" test: ask for host:path, allow skipping

Changes in 1.8.0 (April 2020)
- revised "tirpc" change in 1.7.3: use "-ltirpc" only when SUN-RPC is
  NOT included in libc; else we may compile against tirpc but linker
  may resolved against libc; leads to memory corruption in auth_destroy()
- cntd. attempt at fixing Makefile.PL for build on NetBSD release > 6
- Backport of minor fixes & enhancements done while porting to Python
  - extended test scripts (RPC test; read-back&verify limits after setqlim)
  - RPC result handling: removed forced ESRCH error upon 0 limits
    so that behavior matches that of local query (at least on Linux)
  - corrected Quota::strerr() for errors caused in Sun-RPC library funcs
  - updated include/quotaio_xfs.h to latest version in Linux headers
    and use newer (~2004) interface Q_XQUOTASYNC for Quota::sync()

Changes in 1.7.4 (March 2020)
- Build fixes for NetBSD release > 6 and Apple/Darwin
  based on failure reports of automated CPAN testing
- Added support for group quotas in;
  Corrections to documentation of group quota handling

Changes in 1.7.3 (March 2020)
- Added detection for missing header rpc/rpc.h;
  automatically switch to using "tirpc", if present.
  Issue reported by Michael Stauber via CPAN ticket 128302
- Also fixed compiler warnings in ancient RPC code.

Changes in 1.7.2 (May 2015)
- Adapted platform detection for Linux 4.*
  Thanks to C. Affolter for reporting the issue (CPAN ticket 104652)

Changes in 1.7.1 (September 2013)
- "make test" now aborts if STDOUT is not a terminal, same as already
  for STDIN. Suggested by Alexandr Ciornii via CPAN ticket 82564.

Changes in 1.7.0 (August 2013)
- Added support for the new NetBSD 6.0 quota system (libquota)
  Thanks to David Holland and Edgar Fuss
- To support limits and usage >= 2^32 on 32-bit clients, Quota::setqlim
  and Quota::query interfaces were changed to use double (NV) instead
  of integer (IV). This should be transparent to users of the module.

Changes in 1.6.7 (November 2011)
- Added support to detect 3.x Linux kernels
  Thanks to Salvatore Bonaccorso of the Debian Perl Group

Changes in 1.6.6 (June 2011)
- Ignore "rootfs" filesystem in Quota::getqcarg() on Linux, which always
  is a duplicate.  Thanks to "abaturin" for providing this patch.
- Made exit immediately when AUTOMATED_TESTING is set in the
  environment (same as when called not from a tty), as all tests require
  user interaction. Changed on request of TODDR of

Changes in 1.6.5 (January 2011)
- Fixed syntax error and missing init for params to setqlim()
  Thanks to Heinrich Mislik for reporting the bugs

Changes in 1.6.4 (January 2010)
- Fixed RPC quota block count truncation to 32bit (CPAN ticket 52813 )
  Thanks to Lloyd Brown for reporting the bug

Changes in 1.6.3 (December 2008)
- Fixed SEG fault for 32-bit Linux clients on top of 64-bit kernels
  Thanks to Jani Ollikainen ( for reporting and debugging this.
  Thanks to Thomas Rzipa for reporting this issue, too.
- Fixed setqlim to allow setting limits exceeding 2^32 blocks or files.
  The current solution will work only for perl executables which support
  64-bit wide integers (e.g. x86-64)

Changes in 1.6.2 (January 2008)
- Fixed memory leak in RPC authentication
  Thanks again to Kostik (koc at

Changes in 1.6.1 (November 2007)
- Adapted hints/bsd.h to use statvfs instead of statfs in NetBSD 3.0
- Added support for extended quota RPC to allow querying group quotas.
  Thanks to Kostik (koc AT for the suggestion.

Changes in 1.6.0 (October 2007)
- Work-around for different getmntent() semantics for linux loop mounts
  Thanks Wouter de Jong ( for reporting this issue.
- (late) version bump due to the interface change in 1.5.2

Changes in 1.5.2 (October 2007)
- Added support for new quotactl() parameters in JFS2 on AIX 5.3.
  Thanks to Joshua Frigerio ( for providing a development
  account.  (Note: also prepared support for JFS2 quota classes; this is
  yet unfinished and untested. See sub-directory contrib/aix_jfs2_class)
- Added support for XFS project quotas on request of
  Sten Spans (; received no feedback it if works.
  Changed the "isgrp" param to Quota::query() and setqlim() from boolean
  into an enum: 0:=user, 1:=group, 2:=project quotas.
- Added a copyright notice to the main module and the manual page on
  request of the Debian maintainer.

Changes in 1.5.1 (July 2005)
- Added new API function rpcauth: use non-default authentication for RPC
  Patch submitted by Karol Lassak
- Makefile fix for Linux: compile linuxapi.c with default CFLAGS
  because for 64-bit systems -fPIC is required.  Patches submitted
  by David Lee and James Olin Oden; used a different solution though.

Changes in 1.5.0 (Nov 2004)
- Added new API function rpcpeer: set port and protocol for RPC queries.
  On request by Sten Spans (

Changes in 1.4.11 (Aug 2004)
- Updated VxFS detection in Makefile.PL for recent Solaris/VxFS versions
  Thanks to Joshua Frigerio for the info and to Keith Clay for verification.
- tiny syntax cleanup in linuxapi.c

Changes in 1.4.10 (Jan 2004)
- Applied patch by Antti Tapaninen (aet at to add support
  for MacOS X (based on BSD config) and NFS3 support for AIX.
- Applied patch by Chris Adams (cmadams at to avoid warning
  in Quota::getqcarg() on systems where getmntent(3) may return invalid
  mount points, e.g. Tru64 UNIX

Changes in 1.4.9 (Aug 2003)
- Applied patch by Changed AFS quota support,
  now based on OpenAFS instead of arla and Kerberos4.

Changes in 1.4.8 (May 2003)
- fixed bug in linuxapi.c, thanks to Shane DeRidder

Changes in 1.4.7 (May 2003)
- adapted for the latest fashion of Linux quota APIs (version 6.5.1)
  Thanks to Jay R. Wren, Shane DeRidder, Roman "romke" and Geoffrey Pan
  for your infos and feedback.
- added quota threshold monitoring script to the contrib directory.
  Thanks to Ziaur Rahman.

Changes in 1.4.6 (August 2002)
- changed the test script to exit if STDIN is not a terminal device.
  This is an interactive script which cannot be run by CPANPLUS.

Changes in 1.4.5 (July 2002)
- replaced use of macro BCOPY with libc function memcpy() because of build
  problems on Solaris 2.8 (bcopy is depreciated now anyways)
  Thanks to Jost Krieger and Paul Sand for reporting this problem.

Changes in 1.4.4 (June 2002)
- bugfix in Quota::getqcarg(): the function failed if the device id returned
  by stat(2) for the queried path was zero (e.g. for the root fs on NetBSD)
  Thanks to Jake Fan ( for reporting this bug.

Changes in 1.4.3 (May 2002)
- updated for new version of Solaris VxFS (Veritas Filesystem)
  by David Lee (

Changes in 1.4.2 (Jan. - Mar. 2002)
- fixed to allow uids with more than 5 digits.
  Thanks to Neil Prockter ( for the fix.
- updated Linux quota version detection with quota-tools 3.04;
  removed compile-time version detection because it caused problems;
  added switch LINUX_API_VERSION to hints/linux.h to allow to hard-wire
  the API in case the automatic version detection fails.

Changes in 1.4.1 (Sep. 2001 - Jan. 2002)
- added support for an older (intermediate?) version of the new Linux Quota
  API which contains a mixture of v1 and v2 command ids (uses the old GETSTAT
  id, however with the new and larger struct as argument). Required for
  RedHat-7.1.  Thanks to Andy Choi ( for pointing this out.
- enabled RPC in hints/bsd.h
  Confirmed to work on FreeBSD by Alex Batko (
- fixed several glitches in the manual page.

Changes in 1.4 (August 2001)
- added support for the Alan Cox (ac) branch of the Linux kernel which uses a
  new and completely backwards incompatible Quota API.  The API version is
  determined dynamically by use of Q_GETSTATS/v2, i.e. the same module
  binary will work on kernels with either API. Since the Linux quota API now
  needs some very special handling, I moved it into a separate file called
  linuxapi.c.  NOTE: internally the module still uses the old (v1) dqblk
  structure, so any advantages the new struct mem_dqblk might have are not
  present here.  Let me know if this is a problem for you.
- commented out #define LINUX_RQUOTAD_BUG in hints/linux.h as this should
  no longer be needed on most systems. Updated INSTALL and README accordingly.
- removed the Linux syscall wrapper in quotactl.c as this is now in libc.
- changed copyright from "none/public domain" to Artistic License (not to
  restrict usage, but simply to include the legal disclaimers)
- fixed bug in Quota::query() and setqlim(): when argument isgrp was present
  but 0, the functions still did work on group quotas instead of user quotas.
  Thanks to Szymon Juraszczyk ( for pointing this out.

Changes in 1.3.4 (May 2001)
- added support for SGI XFS on Linux.  Thanks to Brian Johnson
  ( for providing a development account.

Changes in 1.3.3 (May 2001)
- bugfix Quota::query, branch NO_RPC: forgot to set error flag, arbitrary
  results were returned; Pointed out by Mahlon Smith <>
- fixed declaration of GQR_* macros for RPC in hints/bsd.h
  RPC still untested for BSD though
- fixed OpenBSD2.7 fix from last release: replaced macro OpenBSD2_7 with
  __OpenBSD__ because the former is not defined in 2.8 anymore.
  Reported by Lou Hevly (
- fixed hints/linux.h for RedHat 7.1: use sys/quota.h instead of linux/quota.h
  because the former has an incompatible definition of struct dqblk.
  [NOTE: this change proved to be wrong and was undone in 1.4]
  Reported by Waldemar Krotkiewicz (, Andy Choi (
  and Brian Johnson (

Changes in 1.3.2 (February 2001)
- fixed AFS detection in Makefile.PL for Perl 5.6
  thanks to Wolfgang Friebel <>
- adapted getmntent for incompatible change of struct statfs in OpenBSD 2.7
  thanks to
- adapted getqcarg for for OpenBSD and BSDi: define QCARG_MNTPT for all BSD os
  as reported by and Chee-Wai Yeung <>
- fixed block to kB conversion in Quota::query() for VxFS
  as reported by Rui Monteiro <>
- renamed config.h symlink to myconfig.h to avoid conflict with Perl config

Changes in 1.3.1 (October 2000)
- added support for NetBSD, merged hints for BSD-based systems
  by Jaromir Dolecek <>
- fixed include file name for vxquotactl.h
  changed quota block factors Q_DIV/Q_MUL from 1 to 2 for Veritas fs
  Thanks to David Lee (
- added automatic recognition of HPUX B.11 in Makefile.PL
  by Albert Chin (

Changes in 1.3:  (January 2000)
- bugfix/enhanced support for OSF/1 and Digital Unix:
  getqcarg used wrong path to quotas file and
  NFS file systems were not recognized when in "/path@host" format in mtab
  provided by Victor Mora ( and
  Alessandro Miotto (
- added support for FreeBSD.
  provided by Kurt Jaeger (
  and Jon Schewe (
- added support for Veritas file system (VxFS) on Solaris
  provided by David Lee (,
  Michael Gerdts ( and
  Daniel Hagerty (
  Beta-tested by John Randell Smith (
- added workaround for yet another bug in Linux rpc.rquotad:
  rquotad reports grace times as absolute values instead of relative
  bug found by Seth Vidal (
- fixed grace time output for Y2K in
- fixed bug in group-quota patch as pointed out by
  incorporated the patch into the distribution.
- fixed possible integer overflow in RPC quota block size conversions for
  very large quota limits; pointed out by Peter.Pickford (
- added warning to Makefile.PL if config.h symlink already exists

Changes in 1.2.3:  (April 1999)
- added patch-file "group-quota.patch" that provides optional
  support for group-quotas (on some OS versions and localhost only)
- added auto-detection for AFS by Wolfgang Friebel
- fixed include path for AFS in Quota.xs

Changes in 1.2.2:  (December 1998)
- fixed 2 problems in getqcarg()
  thanks to for pointing those out.

Changes in 1.2:  (November 1998)
- added support for AIX 4.1 (thanks to Wolfgang Friebel (
  for providing a development account)
- added support for AFS (Andrew File System) by arla-0.13
  on the following platforms: AIX, SunOS, Solaris, HP-UX, IRIX 6, Linux
  with much help from Wolfgang Friebel.

Changes in 1.1.2:  (August 1998)
- changed names of tar archive and module directory
- fixed message for getqcarg failure in
- compatibility with sfio (moved fopen and fclose to seperate file)
  suggested by Christoph Lupe ( - yet UNTESTED
- fixed problems with Solaris automounter (ignore lofs mounts in getqcarg)

Changes in 1.1:  (August 1998)
- added support for Linux (thanks to Steve Nolan (
  for providing a development account)
- added OpenBSD 2.2 support, provided by James Shelburne (
- added syntax fixes (2 additional #includes) for IRIX 6.4
  provided by Subhendu Ghosh (
- support for IRIX xfs filesystems (additional to the older efs fs)
  provided by David Lloyd (

Changes in 1.0:
(That's the version that's been released with O'Reillys Perl Resource Books)
- improved documentation, now provided in pod format inside
- finally fixed errno.h problem in
  Thanks to Tobias Oetiker (
- added BSDI port by Jim Hribnak (
  unfortunately without RPC support.
- small fixes for OSF/1
- more hints in hints/none.h
- I've again received requests for Linux ports. However since I don't
  have access to an installation with quota support, I can't do this
  myself. I've included a config file that compiles without warnings
  on our system ("Red Hat for Sparc" or something), but I can't run it.
  If anyone gets it to work with or without RPC, please contact me.

Changes in 0.3a:
- started port for Linux 2.0; still needs some work.
  Compiles correctly, but RPC call fails.
- workarounds for HP-UX/10 bug in test script
  (SYNC without arguments doesn't work)
- some cleanup in
  fixes 0.2a's problems with the autoloader under perl-5.003

Changes in 0.2a:
- need generic getqcarg instead of getdev, because:
- added support for Solaris, OSF/1 (which operate without access to
  the according block device) Required extensive code changes.
- getqcarg recognizes if path points into a NFS file system
- query() may take NFS path as argument (in form host:/path)

  Thanks to David Lee <> for alpha-testing on Solaris
  and suggesting the two latter improvements.