[Pkg-clamav-commits] [SCM] Debian repository for ClamAV branch, debian/unstable, updated. debian/0.95+dfsg-1-6156-g094ec9b
acab (none)
acab at 1337ness.
Sun Apr 4 01:02:21 UTC 2010
The following commit has been merged in the debian/unstable branch:
commit dd48b9ee8c47268987f63729227c59fb67a79a1c
Author: acab <acab at 1337ness.(none)>
Date: Thu Aug 27 12:08:54 2009 +0200
read ahead test
diff --git a/libclamav/fmap.c b/libclamav/fmap.c
index c8149e3..148b54e 100644
--- a/libclamav/fmap.c
+++ b/libclamav/fmap.c
@@ -48,8 +48,10 @@
*/
/* FIXME: tune this stuff */
-#define UNPAGE_THRSHLD_LO 1*1024*1024
-#define UNPAGE_THRSHLD_HI 4*1024*1024
+#define UNPAGE_THRSHLD_LO 4*1024
+#define UNPAGE_THRSHLD_HI 8*1024
+
+//#define READAHEAD_PAGES 4
struct F_MAP {
int fd;
@@ -116,7 +118,7 @@ struct F_MAP *fmap(int fd, off_t offset, size_t len) {
m->pgsz = pgsz;
m->paged = 0;
memset(m->bitmap, 0, sizeof(uint32_t) * pages);
- cli_errmsg("FMAPDBG: created %p - len %u pages %u hdrsz %u\n", m, len, pages, hdrsz);
+// cli_errmsg("FMAPDBG: created %p - len %u pages %u hdrsz %u\n", m, len, pages, hdrsz);
return m;
}
@@ -246,7 +248,7 @@ static int fmap_readpage(struct F_MAP *m, unsigned int page, int lock) {
static void *fmap_need(struct F_MAP *m, size_t at, size_t len, int lock) {
- unsigned int i, first_page, last_page;
+ unsigned int i, first_page, last_page, rahead_page;
char *ret;
if(!len) {
@@ -263,12 +265,20 @@ static void *fmap_need(struct F_MAP *m, size_t at, size_t len, int lock) {
first_page = fmap_which_page(m, at);
last_page = fmap_which_page(m, at + len - 1);
+#ifdef READAHED_PAGES
+ rahead_page = last_page;
+ last_page += READAHED_PAGES;
+ if(last_page >= m->pages) last_page = m->pages - 1;
+#endif
- cli_errmsg("FMAPDBG: +++ map %p - len %u lock: %d (page %u to %u)\n", m, len, lock, first_page, last_page);
+// cli_errmsg("FMAPDBG: +++ map %p - len %u lock: %d (page %u to %u)\n", m, len, lock, first_page, last_page);
for(i=first_page; i<=last_page; i++) {
if(fmap_readpage(m, i, lock))
return NULL;
+#ifdef READAHED_PAGES
+ if(i==rahead_page) lock = 0;
+#endif
}
ret = (char *)m;
@@ -277,19 +287,19 @@ static void *fmap_need(struct F_MAP *m, size_t at, size_t len, int lock) {
}
void *fmap_need_off(struct F_MAP *m, size_t at, size_t len) {
- cli_errmsg("FMAPDBG: need_off map %p at %u len %u\n", m, at, len);
+// cli_errmsg("FMAPDBG: need_off map %p at %u len %u\n", m, at, len);
return fmap_need(m, at, len, 1);
}
void *fmap_need_off_once(struct F_MAP *m, size_t at, size_t len) {
- cli_errmsg("FMAPDBG: need_off_once map %p at %u len %u\n", m, at, len);
+// cli_errmsg("FMAPDBG: need_off_once map %p at %u len %u\n", m, at, len);
return fmap_need(m, at, len, 0);
}
void *fmap_need_ptr(struct F_MAP *m, void *ptr, size_t len) {
- cli_errmsg("FMAPDBG: need_ptr map %p at %p len %u\n", m, ptr, len);
+// cli_errmsg("FMAPDBG: need_ptr map %p at %p len %u\n", m, ptr, len);
return fmap_need_off(m, (char *)ptr - (char *)m - m->hdrsz, len);
}
void *fmap_need_ptr_once(struct F_MAP *m, void *ptr, size_t len) {
- cli_errmsg("FMAPDBG: need_ptr_once map %p at %p len %u\n", m, ptr, len);
+// cli_errmsg("FMAPDBG: need_ptr_once map %p at %p len %u\n", m, ptr, len);
return fmap_need_off_once(m, (char *)ptr - (char *)m - m->hdrsz, len);
}
@@ -307,7 +317,7 @@ void *fmap_need_str(struct F_MAP *m, void *ptr, size_t len) {
fmap_aging(m);
- cli_errmsg("FMAPDBG: need_str map %p at %p len %u\n", m, ptr, len);
+// cli_errmsg("FMAPDBG: need_str map %p at %p len %u\n", m, ptr, len);
first_page = fmap_which_page(m, at);
last_page = fmap_which_page(m, at + len - 1);
@@ -315,7 +325,7 @@ void *fmap_need_str(struct F_MAP *m, void *ptr, size_t len) {
char *thispage = (char *)m + m->hdrsz + i * m->pgsz;
unsigned int scanat, scansz;
- cli_errmsg("FMAPDBG: +s+ map %p - (page %u)\n", m, i);
+// cli_errmsg("FMAPDBG: +s+ map %p - (page %u)\n", m, i);
if(fmap_readpage(m, i, 1))
return NULL;
@@ -336,7 +346,7 @@ void *fmap_need_str(struct F_MAP *m, void *ptr, size_t len) {
static void fmap_unneed_page(struct F_MAP *m, unsigned int page) {
uint32_t s = m->bitmap[page];
- cli_errmsg("FMAPDBG: --- map %p - page %u status %u count %u\n", m, page, s>>30, s & FM_MASK_COUNT);
+// cli_errmsg("FMAPDBG: --- map %p - page %u status %u count %u\n", m, page, s>>30, s & FM_MASK_COUNT);
if((s & (FM_MASK_PAGED | FM_MASK_LOCKED)) == (FM_MASK_PAGED | FM_MASK_LOCKED)) {
/* page is paged and locked: check lock count */
@@ -365,7 +375,7 @@ void fmap_unneed_off(struct F_MAP *m, size_t at, size_t len) {
return;
}
- cli_errmsg("FMAPDBG: unneed_off map %p at %u len %u\n", m, at, len);
+// cli_errmsg("FMAPDBG: unneed_off map %p at %u len %u\n", m, at, len);
first_page = fmap_which_page(m, at);
last_page = fmap_which_page(m, at + len - 1);
@@ -376,7 +386,7 @@ void fmap_unneed_off(struct F_MAP *m, size_t at, size_t len) {
}
void fmap_unneed_ptr(struct F_MAP *m, void *ptr, size_t len) {
- cli_errmsg("FMAPDBG: unneed_ptr map %p at %p len %u\n", m, ptr, len);
+// cli_errmsg("FMAPDBG: unneed_ptr map %p at %p len %u\n", m, ptr, len);
return fmap_unneed_off(m, (char *)ptr - (char *)m - m->hdrsz, len);
}
--
Debian repository for ClamAV
More information about the Pkg-clamav-commits
mailing list