Derek Dong

Research Software Engineer

iRODS Consortium

June 29 - July 2, 2026

iRODS User Group Meeting 2026

Barcelona, Spain

A New Logical Quotas System

Overview

  • What is a logical quota?
  • Isn't there already a plugin?
  • How does this work?
  • Demo!
  • Future Plans

What is a logical quota?

It's a quota for logical paths!

 

Can limit bytes or data objects on logical paths.

 

e.g. /tempZone/home/alice can have at most 10,000 bytes and 3 data objects.

Isn't there already a plugin?

Yes, there is a rule engine plugin.

 

This new system aims to fill a different space and has some notable differences!

 

Most notably: this is a passive system, similar to physical quotas.

 

Advantages compared to plugin

  • Passive system means totals are calculated manually
    • Recalculation will not slow down regular operations that need to run through the PEPs
  • Bespoke system with its own code paths and SQL
    • Plugin relies on other systems (rules/PEPs, metadata) so it necessarily traverses more code paths
    • ... so, this should be faster

Advantages compared to plugin

  • TODO: maybe add a slide here that proves my stuff is faster? Could make a really pathological case with a bunch of nested quotas.

Trade-offs compared to plugin

  • Passive system means totals are calculated manually
    • Calculated totals can drift from real totals depending on recalculation frequency

How does it all work?

The system has 3 main operations:

  • Set (or create) a quota
    • API endpoint: (rs/rc)GeneralAdmin
  • Get quotas applied to a collection
    • API endpoint: (rs/rc)_get_logical_quota
  • Recalculate totals
    • API endpoint: (rs/rc)GeneralAdmin

Set and recalculate also have MSIs!

How does it all work? (cont.)

How does enforcement work? Where will it enforce?

  • First, enable enforcement through R_GRID_CONFIGURATION:
    • iadmin set_grid_configuration logical_quotas enabled 1
  • Enforcement happens here:
    • rsDataObjOpen - catches most oprs like icp, iput
    • rsDataObjRename: imv
    • rsRegDataObj: ireg

How does it all work? (cont.)

(if previous slide not enough content?)

(add more details about enforcement, including "smart" checks that can bypass enforcement)

Demo!

Hard to understand how it works?

 

Demo!

Future

  • Automatic recalculation after certain operations?
  • More active enforcement, or preemptive enforcement?
  • Is the plugin still needed?
    • Currently, plans are to discontinue release of the plugin
  • Please use it! We want to know pain points.

Thank you!

Questions?

aa

By fifthpotato

aa

  • 25