diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c index 12553274eae7..7c7092aaf9b4 100644 --- a/fs/overlayfs/inode.c +++ b/fs/overlayfs/inode.c @@ -883,6 +883,9 @@ struct inode *ovl_get_inode(struct super_block *sb, OVL_I(inode)->redirect = oip->redirect; + if (bylower) + ovl_set_flag(OVL_CONST_INO, inode); + /* Check for non-merge dir that may have whiteouts */ if (is_dir) { if (((upperdentry && lowerdentry) || oip->numlower > 1) || diff --git a/fs/overlayfs/overlayfs.h b/fs/overlayfs/overlayfs.h index 99f793904801..a6b466b30f2b 100644 --- a/fs/overlayfs/overlayfs.h +++ b/fs/overlayfs/overlayfs.h @@ -38,6 +38,8 @@ enum ovl_inode_flag { OVL_WHITEOUTS, OVL_INDEX, OVL_UPPERDATA, + /* Inode number will remain constant over copy up. */ + OVL_CONST_INO, }; enum ovl_entry_flag {