[FEBOOTSTRAP] Ensure atomic creation of a cached appliance
Cached appliances are discovered by their predictable path. Previously we were creating a cached appliance directly in this predictable path. This had at least 2 undesirable effects: * Interrupting appliance creation would leave a corrupt appliance * 2 processes could simultaneously attempt to create the same appliance, causing corruption. This patch causes the cached appliance to be created in a temporary directory, and then renamed to the predictable path. As rename is an atomic operation, this makes the whole creation atomic. This patch also changes the predictable path to have a prefix of 'guestfs.'. This will make it simpler for system administrators to clean up old cached appliances. --- regressions/test-launch-race.pl | 60 ++++++++++++++++++++++ src/appliance.c | 105 ++++++++++++++++++++++++++++++++++----- 2 files changed, 152 insertions(+), 13 deletions(-) create mode 100755 regressions/test-launch-race.pl
On 05/10/10 10:24, Matthew Booth wrote:
Cached appliances are discovered by their predictable path. Previously we were creating a cached appliance directly in this predictable path. This had at least 2 undesirable effects:
* Interrupting appliance creation would leave a corrupt appliance * 2 processes could simultaneously attempt to create the same appliance, causing corruption.
This patch causes the cached appliance to be created in a temporary directory, and then renamed to the predictable path. As rename is an atomic operation, this makes the whole creation atomic.
This patch also changes the predictable path to have a prefix of 'guestfs.'. This will make it simpler for system administrators to clean up old cached appliances.
I meant to add: This patch resolves RHBZ#639405 I've added this locally. Matt -- Matthew Booth, RHCA, RHCSS Red Hat Engineering, Virtualisation Team GPG ID: D33C3490 GPG FPR: 3733 612D 2D05 5458 8A8A 1600 3441 EA19 D33C 3490
Cached appliances are discovered by their predictable path. Previously we were creating a cached appliance directly in this predictable path. This had at least 2 undesirable effects: * Interrupting appliance creation would leave a corrupt appliance * 2 processes could simultaneously attempt to create the same appliance, causing corruption. This patch causes the cached appliance to be created in a temporary directory, and then renamed to the predictable path. As rename is an atomic operation, this makes the whole creation atomic. This patch also changes the predictable path to have a prefix of 'guestfs.'. This will make it simpler for system administrators to clean up old cached appliances. This patch resolves RHBZ#639405 --- po/POTFILES.in | 1 + regressions/test-launch-race.pl | 60 ++++++++++++++++++++++ src/appliance.c | 105 ++++++++++++++++++++++++++++++++++----- 3 files changed, 153 insertions(+), 13 deletions(-) create mode 100755 regressions/test-launch-race.pl
participants (1)
-
Matthew Booth