volser: allow clonevol purge id to be new id

effectively the same functionality that reclone already uses, but
for some reason we artificially limit it out of clone despite
the interface being there for it. it used to be there. put it back.

Reviewed-on: http://gerrit.openafs.org/6250
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Alistair Ferguson <alistair.ferguson@mac.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
(cherry picked from commit 641c674736)

Change-Id: I31df948a21639bd93c573c77207f0f6c9e43deed
Reviewed-on: http://gerrit.openafs.org/6761
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Alistair Ferguson <alistair.ferguson@mac.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
This commit is contained in:
Derrick Brashear 2011-12-13 11:24:16 -05:00
parent 6b66b3b705
commit 2766185772

View File

@ -772,13 +772,17 @@ VolClone(struct rx_call *acid, afs_int32 atrans, afs_uint32 purgeId,
salv_vp = originalvp;
#endif
newvp =
VCreateVolume(&error, originalvp->partition->name, newId,
V_parentId(originalvp));
if (error) {
Log("1 Volser: Clone: Couldn't create new volume; clone aborted\n");
newvp = (Volume *) 0;
goto fail;
if (purgeId == newId) {
newvp = purgevp;
} else {
newvp =
VCreateVolume(&error, originalvp->partition->name, newId,
V_parentId(originalvp));
if (error) {
Log("1 Volser: Clone: Couldn't create new volume; clone aborted\n");
newvp = (Volume *) 0;
goto fail;
}
}
if (newType == readonlyVolume)
V_cloneId(originalvp) = newId;