425fa4c451916a7594930970a3a612f8d79eb72b kent Fri Aug 5 16:54:21 2011 -0700 Adding some verbose logging info to udcCleanup. diff --git src/lib/udc.c src/lib/udc.c index 15420fe..3e3589c 100644 --- src/lib/udc.c +++ src/lib/udc.c @@ -1372,52 +1372,73 @@ } void udcSeek(struct udcFile *file, bits64 offset) /* Seek to a particular position in file. */ { file->offset = offset; mustLseek(file->fdSparse, offset, SEEK_SET); } bits64 udcTell(struct udcFile *file) /* Return current file position. */ { return file->offset; } +static long bitRealDataSize(char *fileName) +/* Return number of real bytes indicated by bitmaps */ +{ +struct udcBitmap *bits = udcBitmapOpen(fileName); +int blockSize = bits->blockSize; +long byteSize = 0; +int blockCount = (bits->fileSize + blockSize - 1)/blockSize; +if (blockCount > 0) + { + int bitmapSize = bitToByteSize(blockCount); + Bits *b = needLargeMem(bitmapSize); + mustReadFd(bits->fd, b, bitmapSize); + int bitsSet = bitCountRange(b, 0, blockCount); + byteSize = (long)bitsSet*blockSize; + freez(&b); + } +udcBitmapClose(&bits); +return byteSize; +} + static bits64 rCleanup(time_t deleteTime, boolean testOnly) /* Delete any bitmap or sparseData files last accessed before deleteTime */ { struct fileInfo *file, *fileList = listDirX(".", "*", FALSE); bits64 results = 0; for (file = fileList; file != NULL; file = file->next) { if (file->isDir) { setCurrentDir(file->name); bits64 oneResult = rCleanup(deleteTime, testOnly); setCurrentDir(".."); if (oneResult > 0) { if (!testOnly) remove(file->name); results += oneResult; results += file->size; } } else if (sameString(file->name, bitmapName)) { + verbose(2, "%ld (%ld) %s/%s\n", bitRealDataSize(file->name), (long)file->size, getCurrentDir(), file->name); if (file->lastAccess < deleteTime) { /* Remove all files when get bitmap, so that can ensure they are deleted in * right order. */ results += file->size; if (!testOnly) { remove(bitmapName); remove(sparseDataName); } } } else if (sameString(file->name, sparseDataName)) { if (results > 0)