The VFS lock patch is limited to sync'ing one filesystem at a time. This means that only one snapshot can be created during a single commit. This fix prevents the snapshot engine plugin from trying to activate a new snapshot when one is already waiting to be activated. Index: Plugins/snapshot/snapshot.c =================================================================== RCS file: /chillywilly/CVS_Root/evms-1.2.0-cvs-root/engine/Plugins/snapshot/snapshot.c,v retrieving revision 1.87 retrieving revision 1.88 diff -u -r1.87 -r1.88 --- Plugins/snapshot/snapshot.c 2002/09/10 14:00:35 1.87 +++ Plugins/snapshot/snapshot.c 2002/12/03 17:32:26 1.88 @@ -50,6 +50,7 @@ static engine_mode_t engine_mode; static engine_functions_t *EngFncs=NULL; +static int pending_volume=FALSE; /* Macro: SET_POWER2_LIST */ @@ -482,6 +483,9 @@ if (volume->snapshot_org == NULL) { // either this is an original with an active snapshot, or a bad object rc = 1; + } else if (pending_volume) { + // there is already a new snapshot volume waiting to be committed. + rc = 1; } else { get_snap_state(volume); if (volume->meta_data.flags & EVMS_SNAPSHOT_ROLLBACK) { @@ -559,6 +563,7 @@ } } EngFncs->rediscover_volume(original_object->volume, TRUE); // make the Engine delete and rediscover the original volume in the kernel + pending_volume = TRUE; } else { // unset // if we are the first and only snapshot in the list. if (snapshot_volume->snapshot_org->snapshot_next == snapshot_volume && @@ -1084,6 +1089,8 @@ // turn off the dirty flag object->flags &= ~SOFLAG_DIRTY; + + pending_volume = FALSE; } else { // rollback int handle;