static int au_hide_children(struct dentry *parent) { int err, i, j, ndentry; struct au_dcsub_pages dpages; struct au_dpage *dpage; struct dentry *dentry; err = au_dpages_init(&dpages, GFP_NOFS); if (unlikely(err)) goto out; err = au_dcsub_pages(&dpages, parent, NULL, NULL); if (unlikely(err)) goto out_dpages; /* in reverse order */ for (i = dpages.ndpage - 1; i >= 0; i--) { dpage = dpages.dpages + i; ndentry = dpage->ndentry; for (j = ndentry - 1; j >= 0; j--) { dentry = dpage->dentries[j]; if (dentry != parent) au_do_hide(dentry); } } out_dpages: au_dpages_free(&dpages); out: return err; }
static void au_hide(struct dentry *dentry) { int err; AuDbgDentry(dentry); if (d_is_dir(dentry)) { /* shrink_dcache_parent(dentry); */ err = au_hide_children(dentry); if (unlikely(err)) AuIOErr("%pd, failed hiding children, ignored %d\n", dentry, err); } au_do_hide(dentry); }
static void au_hide(struct dentry *dentry) { int err; struct inode *inode; AuDbgDentry(dentry); inode = dentry->d_inode; if (inode && S_ISDIR(inode->i_mode)) { /* shrink_dcache_parent(dentry); */ err = au_hide_children(dentry); if (unlikely(err)) AuIOErr("%.*s, failed hiding children, ignored %d\n", AuDLNPair(dentry), err); } au_do_hide(dentry); }