We are linking against vendorcc64dbg Globus 5.0.0 - and we need to set

export OBJECT_MODE=64 CC=xlc CXX=xlC

To set the compiler to xlc and set library search path to /opt/freeware/lib (openssl), edit config/irods.config:

$CC = 'xlc';
$LDRFLAGS = '-L/opt/freeware/lib';

Additional env

PATH=/opt/freeware/bin:$PATH
. globus5.sh

The iRODS build does not create correct ODBC.ini file. Manually create psql/etc/odbc.ini and ~/.odbc.ini and make it READONLY (so that iRODS cannot override it during the build) with (fix with correct PATH and port number):

For special network interfaces, you may need to
modify server/config/irodsHost; see comments within it.
To use the iRODS command-line tools, update your PATH:
For csh users:
set path=(/hpc/projects/packages/local.aix/pkg/irods/iRODS-2.3/clients/icommands/bin $path)
For sh or bash users:
PATH=/hpc/projects/packages/local.aix/pkg/irods/iRODS-2.3/clients/icommands/bin:$PATH
If you wish to set the ports to use, set the environment variable
'svrPortRangeStart' or edit the svrPortRangeStart line in irodsctl.pl.
See the 'Specifying Ports' page on the irods web site for more.
To start and stop the servers, use 'irodsctl':
irodsctl start
irodsctl stop
irodsctl restart
Add '--help' for a list of commands.
Please see the iRODS documentation for additional notes on how
to manage the servers and adjust the configuration.

The quotas are simply based on setting a limit on how much a user can use on a single resource or globally.

There are no per-collection quotas, and the per-user applies over all collections. It is simple just a "sum(r_data_main.data_size)" over all files where the user is the primary owner (r_data_main.data_owner_name)

Thus, each file will count towards the quota of the user who uploaded the file (the primary owner does not change even when the "own" privilege is shifted to a different user).

Of course, items in the trash still count towards the quota.

iRODS keeps the total of files owned by the user - and if a quota is set of the user, compares the total with the quota.

The total is not updated in real time and has to be explicitly re-synchronized with "iadmin cu" (Calculate Usage) (run periodically from a cron job)

An alternative is a periodic iRODS rule invoking the same microservice - see $IRODS_HOME/clients/icommands/bin/runQuota.ir

Quotas can be used in enforcing mode, or can just keep track of how user/group usage.

The enforcing mode can be turned on with a rule (template in core.irb)

When in enforcing mode and the user is over quota (or the single upload would cause the user to go over quota), file uploads fail with -110000 SYS_RESC_QUOTA_EXCEEDED

But, until the total gets updated, it is possible to go over quota by uploading more smaller quotas.

Besides user quotas, there are also Group quotas - which are just limits on total usage of all members of the group.

Is is NOT a limit on total files owned by the group as I had hoped - the primary owner of a file is always a user, not a group).

I'm not sure what would be the proper usage scenario for projects...

Useful commands:

Create a quota for a user (in bytes, 100M in this example):

iadmin suq vladimir.mencl total 100000000

List all quotas (and their overdraft status):

iadmin lq

List all quotas (and their overdraft status - for users):

iquota -a

Update quota statistics (for the above commands to work):

iadmin cu

Display quota usage does NOT work even if the above command is run:

iquota usage

Note: quotas are by default not enforced. Turn them on with the following rule (by default set to off in core.irb:

In irodsctl.pl, status is using getIrodsProcessIds (and getProcessIds(processnaName) while stop is using getOurIrodsServerPids (and tries to read from /usr/tmp/irodsServer.1247)

FIXED: things break if another user (vme28) owns /usr/tmp/irodsServer.1247 (from previous experiments). IRODS server starting as rods then fails to overwrite the file with the new PID and silently ignores the failure. The command irodsctl stop then stops working, ... and changes to irods startup environment stop working .... and chaos takes over.

Deploy some basic iRODS rules used by ARCS (and needed, e.g., to make createUser work or to disable user's seeing each other's home directory)

Create $IRODS_HOME/server/config/reConfigs/bestgrid.irb based on arcs.irb

List this ruleset in $IRODS_HOME/server/config/server.config: add bestgrid to the reRuleSet line:

The version of the Jargon library distributed with Davis 0.9.0 does not fully support the new style of associating certificate Distinguished Names (DNs) with iRODS user accounts (iadmin aua) introduced in iRODS 2.2. Hence, update the Jargon library to version 2.3 (compatible with iRODS 2.3):