On Mon, Aug 7, 2017 at 10:57 AM, zhangyi (F) <yi.zhang@xxxxxxxxxx> wrote: > Hi,all: > I found two problemes about overlayfs, please let me know what you think: > > 1. Cannot update upper dir's access time. > Reproduce: > # mkdir lower upper worker merger > # mkdir upper/dir > # mount -t overlay -o lowerdir=lower,upperdir=upper,workdir=worker overlayfs merger > # ls mrger/dir > # stat mrger/dir > Access: 2017-08-07 11:03:56.364771584 -0400 > Modify: 2017-08-07 11:01:52.319771584 -0400 > Change: 2017-08-07 11:01:52.319771584 -0400 > # touch mrger/dir/aa > # stat mrger/dir > Access: 2017-08-07 11:03:56.364771584 -0400 > Modify: 2017-08-07 11:05:33.969771584 -0400 > Change: 2017-08-07 11:05:33.969771584 -0400 > # ls mrger/dir > # stat mrger/dir > Access: 2017-08-07 11:03:56.364771584 -0400 > Modify: 2017-08-07 11:05:33.969771584 -0400 > Change: 2017-08-07 11:05:33.969771584 -0400 > > I find the reason of this problem is in update_ovl_inode_times(): > (598e3c8f7 "vfs: update ovl inode before relatime check") > > static void update_ovl_inode_times(struct dentry *dentry, struct inode *inode, > bool rcu) > { > if (!rcu) { > struct inode *realinode = d_real_inode(dentry); > > *d_real_inode() cannot get dir's real inode, so i_mtime always equal to i_ctime* > *an not updated* > > if (unlikely(inode != realinode) && > (!timespec_equal(&inode->i_mtime, &realinode->i_mtime) || > !timespec_equal(&inode->i_ctime, &realinode->i_ctime))) { > inode->i_mtime = realinode->i_mtime; > inode->i_ctime = realinode->i_ctime; > } > } > } > > 2. Chattr will modify lower file's attributes directly. > Reproduce: > # mkdir lower upper worker merger > # touch lower/aa > # lsattr -p lower/aa > 0 --------------e---- lower/aa > # mount -t overlay -o lowerdir=lower,upperdir=upper,workdir=worker overlayfs merger > # chattr -p 123 merger/aa #set project id > # lsattr -p lower/aa > 123 --------------e---- lower/aa > > If we try to set "immutable" or any other attributes, the result are consistent. > Because chattr open file in RDONLY mode, so it will not trigger copyup, and then, > FS_IOC_SETFLAGS ioctl will get the lower inode and modify it. By the way, > ovl's directory not support ioctl now, so we fail to change dir's attributes. > > Do you think these two "problemes" need to fix or should avoid ? > ZhangYi, Now that fixes for the 2 issues you reported are in overlayfs-next, could you send those 2 reproducers as xfstests? Thanks, Amir. -- To unsubscribe from this list: send the line "unsubscribe linux-unionfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html