X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fosd-ldiskfs%2Fosd_io.c;h=a2e6fef64ac7041a10a2599516e83c95815c3ba4;hp=bbdf111e6e829708c497a5d179d8c95a6f27fe29;hb=4df63615669a69b51c752cc4e416f705f8a56197;hpb=669a3520af853a65164d220dd0ada9e6fad6bf9d
diff --git a/lustre/osd-ldiskfs/osd_io.c b/lustre/osd-ldiskfs/osd_io.c
index bbdf111..a2e6fef 100644
--- a/lustre/osd-ldiskfs/osd_io.c
+++ b/lustre/osd-ldiskfs/osd_io.c
@@ -158,7 +158,7 @@ static void dio_complete_routine(struct bio *bio, int error)
CERROR("***** bio->bi_private is NULL! This should never "
"happen. Normally, I would crash here, but instead I "
"will dump the bio contents to the console. Please "
- "report this to , along "
+ "report this to , along "
"with any interesting messages leading up to this point "
"(like SCSI errors, perhaps). Because bi_private is "
"NULL, I can't wake up the thread that initiated this "
@@ -1148,7 +1148,7 @@ static int osd_read_prep(const struct lu_env *env, struct dt_object *dt,
struct osd_device *osd = osd_obj2dev(osd_dt_obj(dt));
struct timeval start, end;
unsigned long timediff;
- int rc = 0, i, m = 0, cache = 0;
+ int rc = 0, i, m = 0, cache = 0, cache_hits = 0, cache_misses = 0;
LASSERT(inode);
@@ -1176,15 +1176,13 @@ static int osd_read_prep(const struct lu_env *env, struct dt_object *dt,
lnb[i].rc = lnb[i].len;
m += lnb[i].len;
- lprocfs_counter_add(osd->od_stats, LPROC_OSD_CACHE_ACCESS, 1);
- if (PageUptodate(lnb[i].page)) {
- lprocfs_counter_add(osd->od_stats,
- LPROC_OSD_CACHE_HIT, 1);
- } else {
- lprocfs_counter_add(osd->od_stats,
- LPROC_OSD_CACHE_MISS, 1);
- osd_iobuf_add_page(iobuf, lnb[i].page);
- }
+ if (PageUptodate(lnb[i].page)) {
+ cache_hits++;
+ } else {
+ cache_misses++;
+ osd_iobuf_add_page(iobuf, lnb[i].page);
+ }
+
if (cache == 0)
generic_error_remove_page(inode->i_mapping,lnb[i].page);
}
@@ -1192,6 +1190,16 @@ static int osd_read_prep(const struct lu_env *env, struct dt_object *dt,
timediff = cfs_timeval_sub(&end, &start, NULL);
lprocfs_counter_add(osd->od_stats, LPROC_OSD_GET_PAGE, timediff);
+ if (cache_hits != 0)
+ lprocfs_counter_add(osd->od_stats, LPROC_OSD_CACHE_HIT,
+ cache_hits);
+ if (cache_misses != 0)
+ lprocfs_counter_add(osd->od_stats, LPROC_OSD_CACHE_MISS,
+ cache_misses);
+ if (cache_hits + cache_misses != 0)
+ lprocfs_counter_add(osd->od_stats, LPROC_OSD_CACHE_ACCESS,
+ cache_hits + cache_misses);
+
if (iobuf->dr_npages) {
rc = osd_ldiskfs_map_inode_pages(inode, iobuf->dr_pages,
iobuf->dr_npages,
@@ -1501,9 +1509,9 @@ int osd_ldiskfs_write_record(struct inode *inode, void *buf, int bufsize,
err);
break;
}
- LASSERTF(boffs + size <= bh->b_size,
- "boffs %d size %d bh->b_size %lu",
- boffs, size, (unsigned long)bh->b_size);
+ LASSERTF(boffs + size <= bh->b_size,
+ "boffs %d size %d bh->b_size %lu\n",
+ boffs, size, (unsigned long)bh->b_size);
memcpy(bh->b_data + boffs, buf, size);
err = ldiskfs_journal_dirty_metadata(handle, bh);
if (err)