From 2dbe1316a17716e57013cf41e7b19ec898b94cbf Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Fri, 6 Jul 2012 16:02:38 -0400 Subject: [PATCH] Windows: add cm_IsVolumeReplicated() Given a file id indicates whether the volume it is located on is replicated or not. Change-Id: Icae0a387fc26e2a76b4b6f87fdb5c330da31a96b Reviewed-on: http://gerrit.openafs.org/7758 Tested-by: BuildBot Reviewed-by: Jeffrey Altman --- src/WINNT/afsd/cm_volume.c | 17 +++++++++++++++++ src/WINNT/afsd/cm_volume.h | 2 ++ 2 files changed, 19 insertions(+) diff --git a/src/WINNT/afsd/cm_volume.c b/src/WINNT/afsd/cm_volume.c index 245f4c2f17..66692a4f30 100644 --- a/src/WINNT/afsd/cm_volume.c +++ b/src/WINNT/afsd/cm_volume.c @@ -1973,3 +1973,20 @@ cm_ChecksumVolumeServerList(struct cm_fid *fidp, cm_user_t *userp, cm_req_t *req } return cksum; } + +afs_int32 +cm_IsVolumeReplicated(cm_fid_t *fidp) +{ + afs_int32 replicated = 0; + cm_volume_t *volp; + cm_vol_state_t * volstatep; + + volp = cm_GetVolumeByFID(fidp); + if (volp) { + volstatep = cm_VolumeStateByID(volp, fidp->volume); + replicated = (volstatep->flags & CM_VOL_STATE_FLAG_REPLICATED); + cm_PutVolume(volp); + } + + return replicated; +} diff --git a/src/WINNT/afsd/cm_volume.h b/src/WINNT/afsd/cm_volume.h index d17103be04..8f3072eb11 100644 --- a/src/WINNT/afsd/cm_volume.h +++ b/src/WINNT/afsd/cm_volume.h @@ -166,5 +166,7 @@ extern afs_int32 cm_VolumeType(cm_volume_t *volp, afs_uint32 id); extern long cm_UpdateVolumeLocation(struct cm_cell *cellp, cm_user_t *userp, cm_req_t *reqp, cm_volume_t *volp); +extern afs_int32 cm_IsVolumeReplicated(cm_fid_t *fidp); + extern osi_rwlock_t cm_volumeLock; #endif /* OPENAFS_WINNT_AFSD_CM_VOLUME_H */