static void au_ren_refresh_dir(struct au_ren_args *a) { struct inode *dir; dir = a->dst_dir; dir->i_version++; if (au_ftest_ren(a->flags, ISDIR)) { /* is this updating defined in POSIX? */ au_cpup_attr_timesizes(a->src_inode); au_cpup_attr_nlink(dir, /*force*/1); } if (au_ibstart(dir) == a->btgt) au_cpup_attr_timesizes(dir); if (au_ftest_ren(a->flags, ISSAMEDIR)) return; dir = a->src_dir; dir->i_version++; if (au_ftest_ren(a->flags, ISDIR)) au_cpup_attr_nlink(dir, /*force*/1); if (au_ibstart(dir) == a->btgt) au_cpup_attr_timesizes(dir); }
void au_cpup_attr_all(struct inode *inode, int force) { struct inode *h_inode; h_inode = au_h_iptr(inode, au_ibstart(inode)); au_cpup_attr_changeable(inode); if (inode->i_nlink > 0) au_cpup_attr_nlink(inode, force); inode->i_rdev = h_inode->i_rdev; inode->i_blkbits = h_inode->i_blkbits; au_cpup_igen(inode, h_inode); }
void au_cpup_attr_all(struct inode *inode, int force) { struct inode *h_inode; LKTRTrace("i%lu\n", inode->i_ino); /* todo? IMustLock(inode); */ h_inode = au_h_iptr(inode, au_ibstart(inode)); AuDebugOn(!h_inode); au_cpup_attr_changeable(inode); if (inode->i_nlink > 0) au_cpup_attr_nlink(inode, force); switch (inode->i_mode & S_IFMT) { case S_IFBLK: case S_IFCHR: inode->i_rdev = au_h_rdev(h_inode, /*h_mnt*/NULL, /*h_dentry*/NULL); } inode->i_blkbits = h_inode->i_blkbits; au_cpup_igen(inode, h_inode); }