491
493
.release = sc_fop_release,
496
static int o2net_fill_bitmap(char *buf, int len)
498
unsigned long map[BITS_TO_LONGS(O2NM_MAX_NODES)];
501
o2net_fill_node_map(map, sizeof(map));
503
while ((i = find_next_bit(map, O2NM_MAX_NODES, i + 1)) < O2NM_MAX_NODES)
504
out += snprintf(buf + out, PAGE_SIZE - out, "%d ", i);
505
out += snprintf(buf + out, PAGE_SIZE - out, "\n");
510
static int nodes_fop_open(struct inode *inode, struct file *file)
514
buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
518
i_size_write(inode, o2net_fill_bitmap(buf, PAGE_SIZE));
520
file->private_data = buf;
525
static int o2net_debug_release(struct inode *inode, struct file *file)
527
kfree(file->private_data);
531
static ssize_t o2net_debug_read(struct file *file, char __user *buf,
532
size_t nbytes, loff_t *ppos)
534
return simple_read_from_buffer(buf, nbytes, ppos, file->private_data,
535
i_size_read(file->f_mapping->host));
538
static const struct file_operations nodes_fops = {
539
.open = nodes_fop_open,
540
.release = o2net_debug_release,
541
.read = o2net_debug_read,
542
.llseek = generic_file_llseek,
545
void o2net_debugfs_exit(void)
547
debugfs_remove(nodes_dentry);
548
debugfs_remove(stats_dentry);
549
debugfs_remove(sc_dentry);
550
debugfs_remove(nst_dentry);
551
debugfs_remove(o2net_dentry);
494
554
int o2net_debugfs_init(void)
556
mode_t mode = S_IFREG|S_IRUSR;
496
558
o2net_dentry = debugfs_create_dir(O2NET_DEBUG_DIR, NULL);
502
nst_dentry = debugfs_create_file(NST_DEBUG_NAME, S_IFREG|S_IRUSR,
510
sc_dentry = debugfs_create_file(SC_DEBUG_NAME, S_IFREG|S_IRUSR,
518
stats_dentry = debugfs_create_file(STATS_DEBUG_NAME, S_IFREG|S_IRUSR,
528
debugfs_remove(stats_dentry);
529
debugfs_remove(sc_dentry);
530
debugfs_remove(nst_dentry);
531
debugfs_remove(o2net_dentry);
560
nst_dentry = debugfs_create_file(NST_DEBUG_NAME, mode,
561
o2net_dentry, NULL, &nst_seq_fops);
563
sc_dentry = debugfs_create_file(SC_DEBUG_NAME, mode,
564
o2net_dentry, NULL, &sc_seq_fops);
566
stats_dentry = debugfs_create_file(STATS_DEBUG_NAME, mode,
567
o2net_dentry, NULL, &stats_seq_fops);
569
nodes_dentry = debugfs_create_file(NODES_DEBUG_NAME, mode,
570
o2net_dentry, NULL, &nodes_fops);
574
o2net_debugfs_exit();
535
void o2net_debugfs_exit(void)
537
debugfs_remove(stats_dentry);
538
debugfs_remove(sc_dentry);
539
debugfs_remove(nst_dentry);
540
debugfs_remove(o2net_dentry);
543
579
#endif /* CONFIG_DEBUG_FS */