From: Jeffrey Altman Date: Mon, 16 May 2011 01:56:17 +0000 (-0400) Subject: Windows: lock protected fields must be 32-bit X-Git-Tag: upstream/1.6.0.pre6^2~19 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=07758d536d423d9f6a8b1343e8c96dcd95422d5e;p=packages%2Fo%2Fopenafs.git Windows: lock protected fields must be 32-bit It is not safe to protect two 16-bit fields in a structure with different locks. Switch to using 32-bit fields. Increment the cm-memmap version number since the data structure sizes changed and the cache file must be invalidated. Change-Id: If363654c4d0dd8efd225c9ff19b99bb4f4b7b70e Reviewed-on: http://gerrit.openafs.org/4675 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- diff --git a/src/WINNT/afsd/cm_buf.h b/src/WINNT/afsd/cm_buf.h index 670cb9497..13d2381c4 100644 --- a/src/WINNT/afsd/cm_buf.h +++ b/src/WINNT/afsd/cm_buf.h @@ -62,8 +62,8 @@ typedef struct cm_buf { afs_uint32 dirtyCounter; /* bumped at each dirty->clean transition */ osi_hyper_t offset; /* offset */ cm_fid_t fid; /* file ID */ - afs_uint16 flags; /* flags we're using - mx */ - afs_uint16 qFlags; /* queue/hash state flags - buf_globalLock */ + afs_uint32 flags; /* flags we're using - mx */ + afs_uint32 qFlags; /* queue/hash state flags - buf_globalLock */ char *datap; /* data in this buffer */ afs_uint32 error; /* last error code, if CM_BUF_ERROR is set */ cm_user_t *userp; /* user who wrote to the buffer last */ diff --git a/src/WINNT/afsd/cm_memmap.h b/src/WINNT/afsd/cm_memmap.h index 7df034167..a4b57b2d2 100644 --- a/src/WINNT/afsd/cm_memmap.h +++ b/src/WINNT/afsd/cm_memmap.h @@ -10,7 +10,7 @@ #ifndef CM_MEMMAP_H #define CM_MEMMAP_H 1 -#define CM_CONFIG_DATA_VERSION 14 +#define CM_CONFIG_DATA_VERSION 15 #define CM_CONFIG_DATA_MAGIC ('A' | 'F'<<8 | 'S'<<16 | CM_CONFIG_DATA_VERSION<<24) typedef struct cm_config_data { diff --git a/src/WINNT/afsd/cm_volume.h b/src/WINNT/afsd/cm_volume.h index 9d21ac9ef..6b5a97c5f 100644 --- a/src/WINNT/afsd/cm_volume.h +++ b/src/WINNT/afsd/cm_volume.h @@ -24,8 +24,8 @@ typedef struct cm_vol_state { struct cm_fid dotdotFid; /* parent of volume root */ cm_serverRef_t *serversp; /* by cm_serverLock */ enum volstatus state; /* by rw */ - afs_uint16 flags; /* by rw */ - afs_uint16 qflags; /* by cm_volumeLock */ + afs_uint32 flags; /* by rw */ + afs_uint32 qflags; /* by cm_volumeLock */ } cm_vol_state_t; /* RWVOL, ROVOL, BACKVOL are defined in cm.h */