used when selecting dcache entries for truncation
Insure that afs_TruncateAllSegments() uses the correct [64-bit]
comparison when deciding whether to truncate chunks:
alen - AFS_CHUNKTOBASE(tdc->f.chunk) for a file > 2GB would fail
to be recognised negative with an "afs_int32 newSize", even with
alen = 0 and big tdc->f.chunk.
Change-Id: Id77109fb8238234dae725bd876f70ea0fbd403fc
Change-Id: If0120e21a52316e536d03241c83e8f0d36614c13
Reviewed-on: http://gerrit.openafs.org/1252
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
(cherry picked from commit
3913aa55eed10f9d6316910ef950f5c3242e20d7)
Reviewed-on: http://gerrit.openafs.org/1282
register struct dcache *tdc;
register afs_int32 code;
register afs_int32 index;
- afs_int32 newSize;
+ afs_size_t newSize;
int dcCount, dcPos;
struct dcache **tdcArray;
if (newSize < 0)
newSize = 0;
ObtainSharedLock(&tdc->lock, 672);
- if (newSize < tdc->f.chunkBytes) {
+ if (newSize < tdc->f.chunkBytes && newSize < MAX_AFS_UINT32) {
UpgradeSToWLock(&tdc->lock, 673);
tfile = afs_CFileOpen(tdc->f.inode);
- afs_CFileTruncate(tfile, newSize);
+ afs_CFileTruncate(tfile, (afs_int32)newSize);
afs_CFileClose(tfile);
- afs_AdjustSize(tdc, newSize);
+ afs_AdjustSize(tdc, (afs_int32)newSize);
if (alen < tdc->validPos) {
if (alen < AFS_CHUNKTOBASE(tdc->f.chunk))
tdc->validPos = 0;