Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.13.7.
  1/*
  2 * Copyright (c) 2000-2003 Silicon Graphics, Inc.
  3 * All Rights Reserved.
  4 *
  5 * This program is free software; you can redistribute it and/or
  6 * modify it under the terms of the GNU General Public License as
  7 * published by the Free Software Foundation.
  8 *
  9 * This program is distributed in the hope that it would be useful,
 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 12 * GNU General Public License for more details.
 13 *
 14 * You should have received a copy of the GNU General Public License
 15 * along with this program; if not, write the Free Software Foundation,
 16 * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 17 */
 18#include "xfs.h"
 19#include "xfs_fs.h"
 20#include "xfs_bit.h"
 21#include "xfs_log.h"
 22#include "xfs_inum.h"
 23#include "xfs_trans.h"
 24#include "xfs_sb.h"
 25#include "xfs_ag.h"
 26#include "xfs_alloc.h"
 27#include "xfs_quota.h"
 28#include "xfs_mount.h"
 29#include "xfs_bmap_btree.h"
 30#include "xfs_inode.h"
 31#include "xfs_itable.h"
 32#include "xfs_bmap.h"
 33#include "xfs_rtalloc.h"
 34#include "xfs_error.h"
 35#include "xfs_attr.h"
 36#include "xfs_buf_item.h"
 37#include "xfs_qm.h"
 38
 39struct xqmstats xqmstats;
 40
 41static int xqm_proc_show(struct seq_file *m, void *v)
 42{
 43	/* maximum; incore; ratio free to inuse; freelist */
 44	seq_printf(m, "%d\t%d\t%d\t%u\n",
 45			ndquot,
 46			xfs_Gqm? atomic_read(&xfs_Gqm->qm_totaldquots) : 0,
 47			xfs_Gqm? xfs_Gqm->qm_dqfree_ratio : 0,
 48			xfs_Gqm? xfs_Gqm->qm_dqfrlist_cnt : 0);
 49	return 0;
 50}
 51
 52static int xqm_proc_open(struct inode *inode, struct file *file)
 53{
 54	return single_open(file, xqm_proc_show, NULL);
 55}
 56
 57static const struct file_operations xqm_proc_fops = {
 58	.owner		= THIS_MODULE,
 59	.open		= xqm_proc_open,
 60	.read		= seq_read,
 61	.llseek		= seq_lseek,
 62	.release	= single_release,
 63};
 64
 65static int xqmstat_proc_show(struct seq_file *m, void *v)
 66{
 67	/* quota performance statistics */
 68	seq_printf(m, "qm %u %u %u %u %u %u %u %u\n",
 69			xqmstats.xs_qm_dqreclaims,
 70			xqmstats.xs_qm_dqreclaim_misses,
 71			xqmstats.xs_qm_dquot_dups,
 72			xqmstats.xs_qm_dqcachemisses,
 73			xqmstats.xs_qm_dqcachehits,
 74			xqmstats.xs_qm_dqwants,
 75			xqmstats.xs_qm_dqshake_reclaims,
 76			xqmstats.xs_qm_dqinact_reclaims);
 77	return 0;
 78}
 79
 80static int xqmstat_proc_open(struct inode *inode, struct file *file)
 81{
 82	return single_open(file, xqmstat_proc_show, NULL);
 83}
 84
 85static const struct file_operations xqmstat_proc_fops = {
 86	.owner		= THIS_MODULE,
 87	.open		= xqmstat_proc_open,
 88	.read		= seq_read,
 89	.llseek		= seq_lseek,
 90	.release	= single_release,
 91};
 92
 93void
 94xfs_qm_init_procfs(void)
 95{
 96	proc_create("fs/xfs/xqmstat", 0, NULL, &xqmstat_proc_fops);
 97	proc_create("fs/xfs/xqm", 0, NULL, &xqm_proc_fops);
 98}
 99
100void
101xfs_qm_cleanup_procfs(void)
102{
103	remove_proc_entry("fs/xfs/xqm", NULL);
104	remove_proc_entry("fs/xfs/xqmstat", NULL);
105}