From: bobijam Date: Fri, 6 Feb 2009 02:00:43 +0000 (+0000) Subject: Branch b1_6 X-Git-Tag: GIT_EPOCH_B1_6~2^5~204 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=9301a57b8fa716c58343dfdd1cdfc6a7dd46484c;p=fs%2Flustre-release.git Branch b1_6 b=17011 i=tom.wang i=joahnn remove redundant brw_stats on obdfilter. --- diff --git a/lustre/include/lustre_export.h b/lustre/include/lustre_export.h index 4ffd166..47f389f 100644 --- a/lustre/include/lustre_export.h +++ b/lustre/include/lustre_export.h @@ -80,7 +80,6 @@ struct filter_export_data { struct list_head fed_mod_list; /* files being modified */ int fed_mod_count;/* items in fed_writing list */ long fed_pending; /* bytes just being written */ - struct brw_stats fed_brw_stats; }; typedef struct nid_stat_uuid { diff --git a/lustre/obdfilter/filter.c b/lustre/obdfilter/filter.c index e325b6a..c5e1e6e 100644 --- a/lustre/obdfilter/filter.c +++ b/lustre/obdfilter/filter.c @@ -198,13 +198,10 @@ static int filter_export_stats_init(struct obd_device *obd, struct obd_export *exp, void *client_nid) { - struct filter_export_data *fed = &exp->exp_filter_data; struct proc_dir_entry *brw_entry; int rc, newnid = 0; ENTRY; - init_brw_stats(&fed->fed_brw_stats); - if (obd_uuid_equals(&exp->exp_client_uuid, &obd->obd_uuid)) /* Self-export gets no proc entry */ RETURN(0); @@ -3129,7 +3126,7 @@ static int filter_precreate(struct obd_device *obd, struct obdo *oa, cleanup_phase = 3; CDEBUG(D_INODE, "%s: filter_precreate(od->o_gr="LPU64 - ",od->o_id="LPU64")\n", obd->obd_name, group, + ",od->o_id="LPU64")\n", obd->obd_name, group, next_id); /* We mark object SUID+SGID to flag it for accepting UID+GID diff --git a/lustre/obdfilter/filter_io_26.c b/lustre/obdfilter/filter_io_26.c index dbadf75..7e0bc8e 100644 --- a/lustre/obdfilter/filter_io_26.c +++ b/lustre/obdfilter/filter_io_26.c @@ -81,18 +81,32 @@ static void record_start_io(struct filter_iobuf *iobuf, int rw, int size, atomic_inc(&filter->fo_r_in_flight); lprocfs_oh_tally(&filter->fo_filter_stats.hist[BRW_R_RPC_HIST], atomic_read(&filter->fo_r_in_flight)); - lprocfs_oh_tally_log2(&filter->fo_filter_stats.hist[BRW_R_DISK_IOSIZE], size); - lprocfs_oh_tally(&exp->exp_filter_data.fed_brw_stats.hist[BRW_R_RPC_HIST], - atomic_read(&filter->fo_r_in_flight)); - lprocfs_oh_tally_log2(&exp->exp_filter_data.fed_brw_stats.hist[BRW_R_DISK_IOSIZE], size); + lprocfs_oh_tally_log2(&filter-> + fo_filter_stats.hist[BRW_R_DISK_IOSIZE], + size); + if (exp->exp_nid_stats && exp->exp_nid_stats->nid_brw_stats) { + lprocfs_oh_tally(&exp->exp_nid_stats->nid_brw_stats-> + hist[BRW_R_RPC_HIST], + atomic_read(&filter->fo_r_in_flight)); + lprocfs_oh_tally_log2(&exp->exp_nid_stats-> + nid_brw_stats->hist[BRW_R_DISK_IOSIZE], + size); + } } else { atomic_inc(&filter->fo_w_in_flight); lprocfs_oh_tally(&filter->fo_filter_stats.hist[BRW_W_RPC_HIST], atomic_read(&filter->fo_w_in_flight)); - lprocfs_oh_tally_log2(&filter->fo_filter_stats.hist[BRW_W_DISK_IOSIZE], size); - lprocfs_oh_tally(&exp->exp_filter_data.fed_brw_stats.hist[BRW_W_RPC_HIST], - atomic_read(&filter->fo_w_in_flight)); - lprocfs_oh_tally_log2(&exp->exp_filter_data.fed_brw_stats.hist[BRW_W_DISK_IOSIZE], size); + lprocfs_oh_tally_log2(&filter-> + fo_filter_stats.hist[BRW_W_DISK_IOSIZE], + size); + if (exp->exp_nid_stats && exp->exp_nid_stats->nid_brw_stats) { + lprocfs_oh_tally(&exp->exp_nid_stats->nid_brw_stats-> + hist[BRW_W_RPC_HIST], + atomic_read(&filter->fo_r_in_flight)); + lprocfs_oh_tally_log2(&exp->exp_nid_stats-> + nid_brw_stats->hist[BRW_W_DISK_IOSIZE], + size); + } } } @@ -100,7 +114,7 @@ static void record_finish_io(struct filter_iobuf *iobuf, int rw, int rc) { struct filter_obd *filter = iobuf->dr_filter; - /* CAVEAT EMPTOR: possibly in IRQ context + /* CAVEAT EMPTOR: possibly in IRQ context * DO NOT record procfs stats here!!! */ if (rw == OBD_BRW_READ) @@ -122,7 +136,7 @@ static int dio_complete_routine(struct bio *bio, unsigned int done, int error) int i; #endif - /* CAVEAT EMPTOR: possibly in IRQ context + /* CAVEAT EMPTOR: possibly in IRQ context * DO NOT record procfs stats here!!! */ if (bio->bi_size) /* Not complete */ @@ -321,13 +335,13 @@ int filter_do_bio(struct obd_export *exp, struct inode *inode, nblocks++; #ifdef HAVE_PAGE_CONSTANT - /* I only set the page to be constant only if it - * is mapped to a contiguous underlying disk block(s). - * It will then make sure the corresponding device - * cache of raid5 will be overwritten by this page. + /* I only set the page to be constant only if it + * is mapped to a contiguous underlying disk block(s). + * It will then make sure the corresponding device + * cache of raid5 will be overwritten by this page. * - jay */ - if ((rw == OBD_BRW_WRITE) && - (nblocks == blocks_per_page) && + if ((rw == OBD_BRW_WRITE) && + (nblocks == blocks_per_page) && mapping_cap_page_constant_write(inode->i_mapping)) SetPageConstant(page); #endif @@ -401,31 +415,32 @@ int filter_do_bio(struct obd_export *exp, struct inode *inode, wait_event(iobuf->dr_wait, atomic_read(&iobuf->dr_numreqs) == 0); if (rw == OBD_BRW_READ) { - lprocfs_oh_tally(&obd->u.filter.fo_filter_stats.hist[BRW_R_DIO_FRAGS], frags); - lprocfs_oh_tally(&exp->exp_filter_data.fed_brw_stats.hist[BRW_R_DIO_FRAGS], + lprocfs_oh_tally(&obd->u.filter.fo_filter_stats. + hist[BRW_R_DIO_FRAGS], frags); - lprocfs_oh_tally_log2(&obd->u.filter.fo_filter_stats.hist[BRW_R_IO_TIME], + lprocfs_oh_tally_log2(&obd->u.filter. + fo_filter_stats.hist[BRW_R_IO_TIME], jiffies - start_time); - lprocfs_oh_tally_log2(&exp->exp_filter_data.fed_brw_stats.hist[BRW_R_IO_TIME], - jiffies - start_time); if (exp->exp_nid_stats && exp->exp_nid_stats->nid_brw_stats) { - lprocfs_oh_tally(&exp->exp_nid_stats->nid_brw_stats->hist[BRW_R_DIO_FRAGS], + lprocfs_oh_tally(&exp->exp_nid_stats->nid_brw_stats-> + hist[BRW_R_DIO_FRAGS], frags); - lprocfs_oh_tally_log2(&exp->exp_nid_stats->nid_brw_stats->hist[BRW_R_IO_TIME], + lprocfs_oh_tally_log2(&exp->exp_nid_stats-> + nid_brw_stats->hist[BRW_R_IO_TIME], jiffies - start_time); } } else { - lprocfs_oh_tally(&obd->u.filter.fo_filter_stats.hist[BRW_W_DIO_FRAGS], frags); - lprocfs_oh_tally(&exp->exp_filter_data.fed_brw_stats.hist[BRW_W_DIO_FRAGS], - frags); - lprocfs_oh_tally_log2(&obd->u.filter.fo_filter_stats.hist[BRW_W_IO_TIME], + lprocfs_oh_tally(&obd->u.filter.fo_filter_stats. + hist[BRW_W_DIO_FRAGS], frags); + lprocfs_oh_tally_log2(&obd->u.filter.fo_filter_stats. + hist[BRW_W_IO_TIME], jiffies - start_time); - lprocfs_oh_tally_log2(&exp->exp_filter_data.fed_brw_stats.hist[BRW_W_IO_TIME], - jiffies - start_time); if (exp->exp_nid_stats && exp->exp_nid_stats->nid_brw_stats) { - lprocfs_oh_tally(&exp->exp_nid_stats->nid_brw_stats->hist[BRW_W_DIO_FRAGS], + lprocfs_oh_tally(&exp->exp_nid_stats->nid_brw_stats-> + hist[BRW_W_DIO_FRAGS], frags); - lprocfs_oh_tally_log2(&exp->exp_nid_stats->nid_brw_stats->hist[BRW_W_IO_TIME], + lprocfs_oh_tally_log2(&exp->exp_nid_stats-> + nid_brw_stats->hist[BRW_W_IO_TIME], jiffies - start_time); } } @@ -769,7 +784,7 @@ int filter_commitrw_write(struct obd_export *exp, struct obdo *oa, save = iattr.ia_valid; iattr.ia_valid &= (ATTR_UID | ATTR_GID); rc = fsfilt_setattr(obd, res->dentry, oti->oti_handle, &iattr, 0); - CDEBUG(D_QUOTA, "set uid(%u)/gid(%u) to ino(%lu). rc(%d)\n", + CDEBUG(D_QUOTA, "set uid(%u)/gid(%u) to ino(%lu). rc(%d)\n", iattr.ia_uid, iattr.ia_gid, inode->i_ino, rc); iattr.ia_valid = save & ~(ATTR_UID | ATTR_GID); } diff --git a/lustre/obdfilter/lproc_obdfilter.c b/lustre/obdfilter/lproc_obdfilter.c index 7a17bc1..2258758 100644 --- a/lustre/obdfilter/lproc_obdfilter.c +++ b/lustre/obdfilter/lproc_obdfilter.c @@ -274,7 +274,6 @@ void filter_tally(struct obd_export *exp, struct page **pages, int nr_pages, unsigned long *blocks, int blocks_per_page, int wr) { struct filter_obd *filter = &exp->exp_obd->u.filter; - struct filter_export_data *fed = &exp->exp_filter_data; struct page *last_page = NULL; unsigned long *last_block = NULL; unsigned long discont_pages = 0; @@ -286,8 +285,6 @@ void filter_tally(struct obd_export *exp, struct page **pages, int nr_pages, lprocfs_oh_tally_log2(&filter->fo_filter_stats.hist[BRW_R_PAGES + wr], nr_pages); - lprocfs_oh_tally_log2(&fed->fed_brw_stats.hist[BRW_R_PAGES + wr], - nr_pages); if (exp->exp_nid_stats && exp->exp_nid_stats->nid_brw_stats) lprocfs_oh_tally_log2(&exp->exp_nid_stats->nid_brw_stats-> hist[BRW_R_PAGES + wr], nr_pages); @@ -306,12 +303,8 @@ void filter_tally(struct obd_export *exp, struct page **pages, int nr_pages, lprocfs_oh_tally(&filter->fo_filter_stats.hist[BRW_R_DISCONT_PAGES +wr], discont_pages); - lprocfs_oh_tally(&fed->fed_brw_stats.hist[BRW_R_DISCONT_PAGES + wr], - discont_pages); lprocfs_oh_tally(&filter->fo_filter_stats.hist[BRW_R_DISCONT_BLOCKS+wr], discont_blocks); - lprocfs_oh_tally(&fed->fed_brw_stats.hist[BRW_R_DISCONT_BLOCKS + wr], - discont_blocks); if (exp->exp_nid_stats && exp->exp_nid_stats->nid_brw_stats) { lprocfs_oh_tally_log2(&exp->exp_nid_stats->nid_brw_stats-> @@ -439,30 +432,6 @@ int lproc_filter_attach_seqstat(struct obd_device *dev) &filter_brw_stats_fops, dev); } -static int filter_per_export_stats_seq_show(struct seq_file *seq, void *v) -{ - struct filter_export_data *fed = seq->private; - - brw_stats_show(seq, &fed->fed_brw_stats); - - return 0; -} - -static ssize_t filter_per_export_stats_seq_write(struct file *file, - const char *buf, size_t len, loff_t *off) -{ - struct seq_file *seq = file->private_data; - struct filter_export_data *fed = seq->private; - int i; - - for (i = 0; i < BRW_LAST; i++) - lprocfs_oh_clear(&fed->fed_brw_stats.hist[i]); - - return len; -} - -LPROC_SEQ_FOPS(filter_per_export_stats); - void lprocfs_filter_init_vars(struct lprocfs_static_vars *lvars) { lvars->module_vars = lprocfs_filter_module_vars; @@ -471,10 +440,10 @@ void lprocfs_filter_init_vars(struct lprocfs_static_vars *lvars) static int filter_per_nid_stats_seq_show(struct seq_file *seq, void *v) { - nid_stat_t *tmp = seq->private; + nid_stat_t * stat = seq->private; - if (tmp->nid_brw_stats) - brw_stats_show(seq, tmp->nid_brw_stats); + if (stat->nid_brw_stats) + brw_stats_show(seq, stat->nid_brw_stats); return 0; } @@ -483,13 +452,13 @@ static ssize_t filter_per_nid_stats_seq_write(struct file *file, const char *buf, size_t len, loff_t *off) { - struct seq_file *seq = file->private_data; - nid_stat_t *tmp = seq->private; + struct seq_file *seq = file->private_data; + nid_stat_t *stat = seq->private; int i; - if (tmp->nid_brw_stats) + if (stat->nid_brw_stats) for (i = 0; i < BRW_LAST; i++) - lprocfs_oh_clear(&tmp->nid_brw_stats->hist[i]); + lprocfs_oh_clear(&stat->nid_brw_stats->hist[i]); return len; }