Hello list,
with dovecot 1.2 on AIX rquota RPC calls fail with
quota-fs: remote ext rquota call failed: RPC: 1832-012 Program/version mismatch
when using a netapp filer.
This is what netapp says:
Bug ID 97288 Title Support requested for rquota version 2 Bug Severity 5 - Suggestion Bug Status Closed Product Data ONTAP Bug Type NFS Description Linux has implemented its own extensions to the rquota protocol as a version 2 of that protocol. ONTAP only supports v1 as that is the only version defined by Sun, the owner of that RPC program number. Workaround - Fixed-In This bug is not scheduled to be fixed, you may opt to Version open a technical support case if you would like to contact Network Appliance regarding the status of this bug. A complete list of releases where this bug is fixed is available here.
So this should be no AIX specific problem.
Using the attached rquota.x fixes the problem. In addition you have to disable group quota checking by adding "user" to your "quota" definition. Otherwise you'll see:
quota-fs: rquota not compiled with group support
Regards, Ralf
--
Dipl.-Inform. (FH) Ralf Becker Rechenzentrum (r/ft) der FH Trier (Network|Mail|Web|Firewall) University of applied sciences Administrator Schneidershof, D-54293 Trier
Mail: beckerr@fh-trier.de Fon: +49 651 8103 499 Web: http://www.fh-trier.de/~beckerr Fax: +49 651 8103 214 PubKey: http://www.fh-trier.de/~beckerr Crypto: GnuPG, S/MIME
Wenn Gott gewollt haette, dass E-Mail in HTML geschrieben wuerden, endeten Gebete traditionell mit </amen>. (Tom Listen)
/*
- COMPONENT_NAME: onchdrs
- FUNCTIONS: none
- ORIGINS: 24,27
- (C) COPYRIGHT International Business Machines Corp. 1988,1993
- All Rights Reserved
- Licensed Materials - Property of IBM
- US Government Users Restricted Rights - Use, duplication or
- disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */
/*
- Copyright (c) 1988 by Sun Microsystems, Inc.
- (#) from SUN 1.4 */
/*
- Remote quota protocol
- Requires unix authentication */
const RQ_PATHLEN = 1024;
struct getquota_args {
string gqa_pathp
/*
- remote quota structure */ struct rquota { int rq_bsize; /* block size for block counts */ bool rq_active; /* indicates whether quota is active */ unsigned int rq_bhardlimit; /* absolute limit on disk blks alloc */ unsigned int rq_bsoftlimit; /* preferred limit on disk blks */ unsigned int rq_curblocks; /* current block count */ unsigned int rq_fhardlimit; /* absolute limit on allocated files */ unsigned int rq_fsoftlimit; /* preferred file limit */ unsigned int rq_curfiles; /* current # allocated files */ unsigned int rq_btimeleft; /* time left for excessive disk use */ unsigned int rq_ftimeleft; /* time left for excessive files */ };
enum gqr_status { Q_OK = 1, /* quota returned */ Q_NOQUOTA = 2, /* noquota for uid */ Q_EPERM = 3 /* no permission to access quota */ };
union getquota_rslt switch (gqr_status status) { case Q_OK: rquota gqr_rquota; /* valid if status == Q_OK */ case Q_NOQUOTA: void; case Q_EPERM: void; };
program RQUOTAPROG { version RQUOTAVERS { /* * Get all quotas */ getquota_rslt RQUOTAPROC_GETQUOTA(getquota_args) = 1;
/*
* Get active quotas only
*/
getquota_rslt
RQUOTAPROC_GETACTIVEQUOTA(getquota_args) = 2;
} = 1;
} = 100011;