Add script to approve a lease and add some locking in other scripts.
approvelease is the place where storage actually gets allocated for a lease. It uses bscontrol to contact an appropriate freeNAS storage server and allocate a ZFS volume. deletelease is the place where storage is deallocated. Note that once a lease has been approved and storage allocated, it cannot be returned to the unapproved state. The only way to free storage is to delete the lease. Both approve and delete use an intermediate state, "initializing", to signal that the lease is in the middle of a potentially time-consuming allocation/deallocation procedure. I probably should have just used the lease locking mechanism instead. Approve, delete, and mod all DO use the locking mechanism when examining and manipulating the state of a lease. Nonetheless, I am sure that are still plenty of races.
Showing with 268 additions and 4 deletions