Exemple #1
0
int ldlm_namespace_proc_register(struct ldlm_namespace *ns)
{
	struct lprocfs_vars lock_vars[2];
	char lock_name[MAX_STRING_SIZE + 1];
	proc_dir_entry_t *ns_pde;

	LASSERT(ns != NULL);
	LASSERT(ns->ns_rs_hash != NULL);

	if (ns->ns_proc_dir_entry != NULL) {
		ns_pde = ns->ns_proc_dir_entry;
	} else {
		ns_pde = proc_mkdir(ldlm_ns_name(ns), ldlm_ns_proc_dir);
		if (ns_pde == NULL)
			return -ENOMEM;
		ns->ns_proc_dir_entry = ns_pde;
	}

	ns->ns_stats = lprocfs_alloc_stats(LDLM_NSS_LAST, 0);
	if (ns->ns_stats == NULL)
		return -ENOMEM;

	lprocfs_counter_init(ns->ns_stats, LDLM_NSS_LOCKS,
			     LPROCFS_CNTR_AVGMINMAX, "locks", "locks");

	lock_name[MAX_STRING_SIZE] = '\0';

	memset(lock_vars, 0, sizeof(lock_vars));
	lock_vars[0].name = lock_name;

	LDLM_NS_ADD_VAR("resource_count", ns, &lprocfs_ns_resources_fops);
	LDLM_NS_ADD_VAR("lock_count", ns, &lprocfs_ns_locks_fops);

	if (ns_is_client(ns)) {
		LDLM_NS_ADD_VAR("lock_unused_count", &ns->ns_nr_unused,
				&ldlm_uint_fops);
		LDLM_NS_ADD_VAR("lru_size", ns, &lprocfs_lru_size_fops);
		LDLM_NS_ADD_VAR("lru_max_age", &ns->ns_max_age,
				&ldlm_rw_uint_fops);
		LDLM_NS_ADD_VAR("early_lock_cancel", ns, &lprocfs_elc_fops);
	} else {
		LDLM_NS_ADD_VAR("ctime_age_limit", &ns->ns_ctime_age_limit,
				&ldlm_rw_uint_fops);
		LDLM_NS_ADD_VAR("lock_timeouts", &ns->ns_timeouts,
				&ldlm_uint_fops);
		LDLM_NS_ADD_VAR("max_nolock_bytes", &ns->ns_max_nolock_size,
				&ldlm_rw_uint_fops);
		LDLM_NS_ADD_VAR("contention_seconds", &ns->ns_contention_time,
				&ldlm_rw_uint_fops);
		LDLM_NS_ADD_VAR("contended_locks", &ns->ns_contended_locks,
				&ldlm_rw_uint_fops);
		LDLM_NS_ADD_VAR("max_parallel_ast", &ns->ns_max_parallel_ast,
				&ldlm_rw_uint_fops);
	}
	return 0;
}
int ldlm_namespace_proc_register(struct ldlm_namespace *ns)
{
        struct lprocfs_vars lock_vars[2];
        char lock_name[MAX_STRING_SIZE + 1];

        LASSERT(ns != NULL);
        LASSERT(ns->ns_rs_hash != NULL);

        ns->ns_stats = lprocfs_alloc_stats(LDLM_NSS_LAST, 0);
        if (ns->ns_stats == NULL)
                return -ENOMEM;

        lprocfs_counter_init(ns->ns_stats, LDLM_NSS_LOCKS,
                             LPROCFS_CNTR_AVGMINMAX, "locks", "locks");

        lock_name[MAX_STRING_SIZE] = '\0';

        memset(lock_vars, 0, sizeof(lock_vars));
        lock_vars[0].name = lock_name;

        snprintf(lock_name, MAX_STRING_SIZE, "%s/resource_count",
                 ldlm_ns_name(ns));
        lock_vars[0].data = ns;
        lock_vars[0].read_fptr = lprocfs_rd_ns_resources;
        lprocfs_add_vars(ldlm_ns_proc_dir, lock_vars, 0);

        snprintf(lock_name, MAX_STRING_SIZE, "%s/lock_count",
                 ldlm_ns_name(ns));
        lock_vars[0].data = ns;
        lock_vars[0].read_fptr = lprocfs_rd_ns_locks;
        lprocfs_add_vars(ldlm_ns_proc_dir, lock_vars, 0);

        if (ns_is_client(ns)) {
                snprintf(lock_name, MAX_STRING_SIZE, "%s/lock_unused_count",
                         ldlm_ns_name(ns));
                lock_vars[0].data = &ns->ns_nr_unused;
                lock_vars[0].read_fptr = lprocfs_rd_uint;
                lprocfs_add_vars(ldlm_ns_proc_dir, lock_vars, 0);

                snprintf(lock_name, MAX_STRING_SIZE, "%s/lru_size",
                         ldlm_ns_name(ns));
                lock_vars[0].data = ns;
                lock_vars[0].read_fptr = lprocfs_rd_lru_size;
                lock_vars[0].write_fptr = lprocfs_wr_lru_size;
                lprocfs_add_vars(ldlm_ns_proc_dir, lock_vars, 0);

                snprintf(lock_name, MAX_STRING_SIZE, "%s/lru_max_age",
                         ldlm_ns_name(ns));
                lock_vars[0].data = &ns->ns_max_age;
                lock_vars[0].read_fptr = lprocfs_rd_uint;
                lock_vars[0].write_fptr = lprocfs_wr_uint;
                lprocfs_add_vars(ldlm_ns_proc_dir, lock_vars, 0);

		snprintf(lock_name, MAX_STRING_SIZE, "%s/early_lock_cancel",
			 ldlm_ns_name(ns));
		lock_vars[0].data = ns;
		lock_vars[0].read_fptr = lprocfs_rd_elc;
		lock_vars[0].write_fptr = lprocfs_wr_elc;
		lprocfs_add_vars(ldlm_ns_proc_dir, lock_vars, 0);
        } else {
                snprintf(lock_name, MAX_STRING_SIZE, "%s/ctime_age_limit",
                         ldlm_ns_name(ns));
                lock_vars[0].data = &ns->ns_ctime_age_limit;
                lock_vars[0].read_fptr = lprocfs_rd_uint;
                lock_vars[0].write_fptr = lprocfs_wr_uint;
                lprocfs_add_vars(ldlm_ns_proc_dir, lock_vars, 0);

                snprintf(lock_name, MAX_STRING_SIZE, "%s/lock_timeouts",
                         ldlm_ns_name(ns));
                lock_vars[0].data = &ns->ns_timeouts;
                lock_vars[0].read_fptr = lprocfs_rd_uint;
                lprocfs_add_vars(ldlm_ns_proc_dir, lock_vars, 0);

                snprintf(lock_name, MAX_STRING_SIZE, "%s/max_nolock_bytes",
                         ldlm_ns_name(ns));
                lock_vars[0].data = &ns->ns_max_nolock_size;
                lock_vars[0].read_fptr = lprocfs_rd_uint;
                lock_vars[0].write_fptr = lprocfs_wr_uint;
                lprocfs_add_vars(ldlm_ns_proc_dir, lock_vars, 0);

                snprintf(lock_name, MAX_STRING_SIZE, "%s/contention_seconds",
                         ldlm_ns_name(ns));
                lock_vars[0].data = &ns->ns_contention_time;
                lock_vars[0].read_fptr = lprocfs_rd_uint;
                lock_vars[0].write_fptr = lprocfs_wr_uint;
                lprocfs_add_vars(ldlm_ns_proc_dir, lock_vars, 0);

                snprintf(lock_name, MAX_STRING_SIZE, "%s/contended_locks",
                         ldlm_ns_name(ns));
                lock_vars[0].data = &ns->ns_contended_locks;
                lock_vars[0].read_fptr = lprocfs_rd_uint;
                lock_vars[0].write_fptr = lprocfs_wr_uint;
                lprocfs_add_vars(ldlm_ns_proc_dir, lock_vars, 0);

                snprintf(lock_name, MAX_STRING_SIZE, "%s/max_parallel_ast",
                         ldlm_ns_name(ns));
                lock_vars[0].data = &ns->ns_max_parallel_ast;
                lock_vars[0].read_fptr = lprocfs_rd_uint;
                lock_vars[0].write_fptr = lprocfs_wr_uint;
                lprocfs_add_vars(ldlm_ns_proc_dir, lock_vars, 0);
        }
        return 0;
}