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); }
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); }
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); }