• Mike Hibler's avatar
    Implement "plan 1" for dataset sharing: "ephemeral RO snapshots". · 7aefdaa1
    Mike Hibler authored
    You can now simultaneously RW and RO map a dataset because all the RO
    mappings use copies (clones) of a snapshot. Only a single RW mapping
    of course.
    
    When the RW mapping swaps out it automatically creates a new snapshot.
    So there is currently no user control over when a version of the dataset
    is "published", it just happens everytime you swapout an experiment with
    a RW mapping.
    
    A new RW mapping does not affect current RO mappings of course as they
    continue to use whatever snapshot they were created with. New RO mappings
    with get the most recent snapshot, which we currently track in the DB via
    the per-lease attribute "last_snapshot".
    
    You can also now declare a lease to be "exclusive use" by setting the
    "exclusive_use" lease attribute (via modlease). This means that it follows
    the old semantics of only one mapping at a time, whether it be RO or RW.
    This is an alternative to the "simultaneous_ro_datasets" sitevar which
    enforces the old behavior globally. Primarily, I put this attribute in to
    prevent an unexpected failure in the snapshot/clone path from wreaking
    havoc over time. I don't know if there is any value in exposing this to
    the user.
    7aefdaa1
libfreenas.pm 21.3 KB