示例#1
0
文件: sysrq.c 项目: wosigh/patches
static void sysrq_sb(struct super_block *sb)
{
	char *plevel;
	struct inode *i;
	struct au_sbinfo *sbinfo;
	struct file *file;

	plevel = au_plevel;
	au_plevel = KERN_WARNING;
	au_debug_on();

	sbinfo = au_sbi(sb);
	pr_warning("si=%lx\n", au_si_mask ^ (unsigned long)sbinfo);
	pr_warning(AUFS_NAME ": superblock\n");
	au_dpri_sb(sb);
	pr_warning(AUFS_NAME ": root dentry\n");
	au_dpri_dentry(sb->s_root);
	pr_warning(AUFS_NAME ": root inode\n");
	au_dpri_inode(sb->s_root->d_inode);
	pr_warning(AUFS_NAME ": isolated inode\n");
	list_for_each_entry(i, &sb->s_inodes, i_sb_list)
		if (list_empty(&i->i_dentry))
			au_dpri_inode(i);
	pr_warning(AUFS_NAME ": files\n");
	list_for_each_entry(file, &sb->s_files, f_u.fu_list)
		if (au_test_aufs_file(file))
			au_dpri_file(file);

#ifdef CONFIG_AUFS_DEBUG_LOCK
	{
		struct au_dbg_lock *p;
		struct list_head *head;

		pr_warning(AUFS_NAME ": locking si\n");
		head = &sbinfo->si_dbg_lock[AuDbgLock_SI_LOCKING].head;
		list_for_each_entry(p, head, list)
			pr_warning("pid: %d, 0x%x\n", p->pid, p->flags);
		pr_warning(AUFS_NAME ": locked si\n");
		head = &sbinfo->si_dbg_lock[AuDbgLock_SI_LOCKED].head;
		list_for_each_entry(p, head, list)
			pr_warning("pid: %d, 0x%x\n", p->pid, p->flags);
		pr_warning(AUFS_NAME ": locking di\n");
		head = &sbinfo->si_dbg_lock[AuDbgLock_DI_LOCKING].head;
		list_for_each_entry(p, head, list) {
			pr_warning("pid: %d, 0x%x, %d\n",
				   p->pid, p->flags, p->lsc);
			au_dpri_dentry(p->dentry);
		}
		pr_warning(AUFS_NAME ": locked di\n");
		head = &sbinfo->si_dbg_lock[AuDbgLock_DI_LOCKED].head;
		list_for_each_entry(p, head, list) {
			pr_warning("pid: %d, 0x%x, %d\n",
				   p->pid, p->flags, p->lsc);
			au_dpri_dentry(p->dentry);
		}
示例#2
0
static void sysrq_sb(struct super_block *sb)
{
	char *plevel;
	struct au_sbinfo *sbinfo;
	struct file *file;

	plevel = au_plevel;
	au_plevel = KERN_WARNING;
	au_debug(1);

	sbinfo = au_sbi(sb);
	pr_warning("si=%lx\n", sysaufs_si_id(sbinfo));
	pr_warning(AUFS_NAME ": superblock\n");
	au_dpri_sb(sb);
	pr_warning(AUFS_NAME ": root dentry\n");
	au_dpri_dentry(sb->s_root);
	pr_warning(AUFS_NAME ": root inode\n");
	au_dpri_inode(sb->s_root->d_inode);
#if 0
	struct inode *i;
	pr_warning(AUFS_NAME ": isolated inode\n");
	list_for_each_entry(i, &sb->s_inodes, i_sb_list)
		if (list_empty(&i->i_dentry))
			au_dpri_inode(i);
#endif
	pr_warning(AUFS_NAME ": files\n");
	list_for_each_entry(file, &sb->s_files, f_u.fu_list)
		if (!special_file(file->f_dentry->d_inode->i_mode))
			au_dpri_file(file);

	au_plevel = plevel;
	au_debug(0);
}
示例#3
0
void au_dpri_dalias(struct inode *inode)
{
	struct dentry *d;

	spin_lock(&inode->i_lock);
	hlist_for_each_entry(d, &inode->i_dentry, d_alias)
		au_dpri_dentry(d);
	spin_unlock(&inode->i_lock);
}