Merge tag 'iversion-v4.16-2' of git://git.kernel.org/pub/scm/linux/kernel/git/jlayton/linux

Pull inode->i_version cleanup from Jeff Layton:
"Goffredo went ahead and sent a patch to rename this function, and
reverse its sense, as we discussed last week.

The patch is very straightforward and I figure it's probably best to
go ahead and merge this to get the API as settled as possible"

* tag 'iversion-v4.16-2' of git://git.kernel.org/pub/scm/linux/kernel/git/jlayton/linux:
iversion: Rename make inode_cmp_iversion{+raw} to inode_eq_iversion{+raw}

Changed files
+25 -25
fs
affs
exofs
ext2
ext4
fat
nfs
ocfs2
ufs
include
linux
security
integrity
+1 -1
fs/affs/dir.c
··· 81 * we can jump directly to where we left off. 82 */ 83 ino = (u32)(long)file->private_data; 84 - if (ino && inode_cmp_iversion(inode, file->f_version) == 0) { 85 pr_debug("readdir() left off=%d\n", ino); 86 goto inside; 87 }
··· 81 * we can jump directly to where we left off. 82 */ 83 ino = (u32)(long)file->private_data; 84 + if (ino && inode_eq_iversion(inode, file->f_version)) { 85 pr_debug("readdir() left off=%d\n", ino); 86 goto inside; 87 }
+1 -1
fs/exofs/dir.c
··· 242 unsigned long n = pos >> PAGE_SHIFT; 243 unsigned long npages = dir_pages(inode); 244 unsigned chunk_mask = ~(exofs_chunk_size(inode)-1); 245 - bool need_revalidate = inode_cmp_iversion(inode, file->f_version); 246 247 if (pos > inode->i_size - EXOFS_DIR_REC_LEN(1)) 248 return 0;
··· 242 unsigned long n = pos >> PAGE_SHIFT; 243 unsigned long npages = dir_pages(inode); 244 unsigned chunk_mask = ~(exofs_chunk_size(inode)-1); 245 + bool need_revalidate = !inode_eq_iversion(inode, file->f_version); 246 247 if (pos > inode->i_size - EXOFS_DIR_REC_LEN(1)) 248 return 0;
+1 -1
fs/ext2/dir.c
··· 294 unsigned long npages = dir_pages(inode); 295 unsigned chunk_mask = ~(ext2_chunk_size(inode)-1); 296 unsigned char *types = NULL; 297 - bool need_revalidate = inode_cmp_iversion(inode, file->f_version); 298 299 if (pos > inode->i_size - EXT2_DIR_REC_LEN(1)) 300 return 0;
··· 294 unsigned long npages = dir_pages(inode); 295 unsigned chunk_mask = ~(ext2_chunk_size(inode)-1); 296 unsigned char *types = NULL; 297 + bool need_revalidate = !inode_eq_iversion(inode, file->f_version); 298 299 if (pos > inode->i_size - EXT2_DIR_REC_LEN(1)) 300 return 0;
+2 -2
fs/ext4/dir.c
··· 209 * readdir(2), then we might be pointing to an invalid 210 * dirent right now. Scan from the start of the block 211 * to make sure. */ 212 - if (inode_cmp_iversion(inode, file->f_version)) { 213 for (i = 0; i < sb->s_blocksize && i < offset; ) { 214 de = (struct ext4_dir_entry_2 *) 215 (bh->b_data + i); ··· 569 * cached entries. 570 */ 571 if ((!info->curr_node) || 572 - inode_cmp_iversion(inode, file->f_version)) { 573 info->curr_node = NULL; 574 free_rb_tree_fname(&info->root); 575 file->f_version = inode_query_iversion(inode);
··· 209 * readdir(2), then we might be pointing to an invalid 210 * dirent right now. Scan from the start of the block 211 * to make sure. */ 212 + if (!inode_eq_iversion(inode, file->f_version)) { 213 for (i = 0; i < sb->s_blocksize && i < offset; ) { 214 de = (struct ext4_dir_entry_2 *) 215 (bh->b_data + i); ··· 569 * cached entries. 570 */ 571 if ((!info->curr_node) || 572 + !inode_eq_iversion(inode, file->f_version)) { 573 info->curr_node = NULL; 574 free_rb_tree_fname(&info->root); 575 file->f_version = inode_query_iversion(inode);
+1 -1
fs/ext4/inline.c
··· 1487 * dirent right now. Scan from the start of the inline 1488 * dir to make sure. 1489 */ 1490 - if (inode_cmp_iversion(inode, file->f_version)) { 1491 for (i = 0; i < extra_size && i < offset;) { 1492 /* 1493 * "." is with offset 0 and
··· 1487 * dirent right now. Scan from the start of the inline 1488 * dir to make sure. 1489 */ 1490 + if (!inode_eq_iversion(inode, file->f_version)) { 1491 for (i = 0; i < extra_size && i < offset;) { 1492 /* 1493 * "." is with offset 0 and
+1 -1
fs/fat/namei_vfat.c
··· 46 { 47 int ret = 1; 48 spin_lock(&dentry->d_lock); 49 - if (inode_cmp_iversion(d_inode(dentry->d_parent), vfat_d_version(dentry))) 50 ret = 0; 51 spin_unlock(&dentry->d_lock); 52 return ret;
··· 46 { 47 int ret = 1; 48 spin_lock(&dentry->d_lock); 49 + if (!inode_eq_iversion(d_inode(dentry->d_parent), vfat_d_version(dentry))) 50 ret = 0; 51 spin_unlock(&dentry->d_lock); 52 return ret;
+3 -3
fs/nfs/inode.c
··· 1314 1315 if ((fattr->valid & NFS_ATTR_FATTR_PRECHANGE) 1316 && (fattr->valid & NFS_ATTR_FATTR_CHANGE) 1317 - && !inode_cmp_iversion_raw(inode, fattr->pre_change_attr)) { 1318 inode_set_iversion_raw(inode, fattr->change_attr); 1319 if (S_ISDIR(inode->i_mode)) 1320 nfs_set_cache_invalid(inode, NFS_INO_INVALID_DATA); ··· 1373 1374 if (!nfs_file_has_buffered_writers(nfsi)) { 1375 /* Verify a few of the more important attributes */ 1376 - if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && inode_cmp_iversion_raw(inode, fattr->change_attr)) 1377 invalid |= NFS_INO_INVALID_ATTR | NFS_INO_REVAL_PAGECACHE; 1378 1379 if ((fattr->valid & NFS_ATTR_FATTR_MTIME) && !timespec_equal(&inode->i_mtime, &fattr->mtime)) ··· 1803 1804 /* More cache consistency checks */ 1805 if (fattr->valid & NFS_ATTR_FATTR_CHANGE) { 1806 - if (inode_cmp_iversion_raw(inode, fattr->change_attr)) { 1807 dprintk("NFS: change_attr change on server for file %s/%ld\n", 1808 inode->i_sb->s_id, inode->i_ino); 1809 /* Could it be a race with writeback? */
··· 1314 1315 if ((fattr->valid & NFS_ATTR_FATTR_PRECHANGE) 1316 && (fattr->valid & NFS_ATTR_FATTR_CHANGE) 1317 + && inode_eq_iversion_raw(inode, fattr->pre_change_attr)) { 1318 inode_set_iversion_raw(inode, fattr->change_attr); 1319 if (S_ISDIR(inode->i_mode)) 1320 nfs_set_cache_invalid(inode, NFS_INO_INVALID_DATA); ··· 1373 1374 if (!nfs_file_has_buffered_writers(nfsi)) { 1375 /* Verify a few of the more important attributes */ 1376 + if ((fattr->valid & NFS_ATTR_FATTR_CHANGE) != 0 && !inode_eq_iversion_raw(inode, fattr->change_attr)) 1377 invalid |= NFS_INO_INVALID_ATTR | NFS_INO_REVAL_PAGECACHE; 1378 1379 if ((fattr->valid & NFS_ATTR_FATTR_MTIME) && !timespec_equal(&inode->i_mtime, &fattr->mtime)) ··· 1803 1804 /* More cache consistency checks */ 1805 if (fattr->valid & NFS_ATTR_FATTR_CHANGE) { 1806 + if (!inode_eq_iversion_raw(inode, fattr->change_attr)) { 1807 dprintk("NFS: change_attr change on server for file %s/%ld\n", 1808 inode->i_sb->s_id, inode->i_ino); 1809 /* Could it be a race with writeback? */
+2 -2
fs/ocfs2/dir.c
··· 1776 * readdir(2), then we might be pointing to an invalid 1777 * dirent right now. Scan from the start of the block 1778 * to make sure. */ 1779 - if (inode_cmp_iversion(inode, *f_version)) { 1780 for (i = 0; i < i_size_read(inode) && i < offset; ) { 1781 de = (struct ocfs2_dir_entry *) 1782 (data->id_data + i); ··· 1870 * readdir(2), then we might be pointing to an invalid 1871 * dirent right now. Scan from the start of the block 1872 * to make sure. */ 1873 - if (inode_cmp_iversion(inode, *f_version)) { 1874 for (i = 0; i < sb->s_blocksize && i < offset; ) { 1875 de = (struct ocfs2_dir_entry *) (bh->b_data + i); 1876 /* It's too expensive to do a full
··· 1776 * readdir(2), then we might be pointing to an invalid 1777 * dirent right now. Scan from the start of the block 1778 * to make sure. */ 1779 + if (!inode_eq_iversion(inode, *f_version)) { 1780 for (i = 0; i < i_size_read(inode) && i < offset; ) { 1781 de = (struct ocfs2_dir_entry *) 1782 (data->id_data + i); ··· 1870 * readdir(2), then we might be pointing to an invalid 1871 * dirent right now. Scan from the start of the block 1872 * to make sure. */ 1873 + if (!inode_eq_iversion(inode, *f_version)) { 1874 for (i = 0; i < sb->s_blocksize && i < offset; ) { 1875 de = (struct ocfs2_dir_entry *) (bh->b_data + i); 1876 /* It's too expensive to do a full
+1 -1
fs/ufs/dir.c
··· 429 unsigned long n = pos >> PAGE_SHIFT; 430 unsigned long npages = dir_pages(inode); 431 unsigned chunk_mask = ~(UFS_SB(sb)->s_uspi->s_dirblksize - 1); 432 - bool need_revalidate = inode_cmp_iversion(inode, file->f_version); 433 unsigned flags = UFS_SB(sb)->s_flags; 434 435 UFSD("BEGIN\n");
··· 429 unsigned long n = pos >> PAGE_SHIFT; 430 unsigned long npages = dir_pages(inode); 431 unsigned chunk_mask = ~(UFS_SB(sb)->s_uspi->s_dirblksize - 1); 432 + bool need_revalidate = !inode_eq_iversion(inode, file->f_version); 433 unsigned flags = UFS_SB(sb)->s_flags; 434 435 UFSD("BEGIN\n");
+11 -11
include/linux/iversion.h
··· 45 * 46 * With this implementation, the value should always appear to observers to 47 * increase over time if the file has changed. It's recommended to use 48 - * inode_cmp_iversion() helper to compare values. 49 * 50 * Note that some filesystems (e.g. NFS and AFS) just use the field to store 51 * a server-provided value (for the most part). For that reason, those ··· 305 } 306 307 /** 308 - * inode_cmp_iversion_raw - check whether the raw i_version counter has changed 309 * @inode: inode to check 310 * @old: old value to check against its i_version 311 * 312 - * Compare the current raw i_version counter with a previous one. Returns false 313 - * if they are the same or true if they are different. 314 */ 315 static inline bool 316 - inode_cmp_iversion_raw(const struct inode *inode, u64 old) 317 { 318 - return inode_peek_iversion_raw(inode) != old; 319 } 320 321 /** 322 - * inode_cmp_iversion - check whether the i_version counter has changed 323 * @inode: inode to check 324 * @old: old value to check against its i_version 325 * 326 - * Compare an i_version counter with a previous one. Returns false if they are 327 - * the same, and true if they are different. 328 * 329 * Note that we don't need to set the QUERIED flag in this case, as the value 330 * in the inode is not being recorded for later use. 331 */ 332 static inline bool 333 - inode_cmp_iversion(const struct inode *inode, u64 old) 334 { 335 - return inode_peek_iversion(inode) != old; 336 } 337 #endif
··· 45 * 46 * With this implementation, the value should always appear to observers to 47 * increase over time if the file has changed. It's recommended to use 48 + * inode_eq_iversion() helper to compare values. 49 * 50 * Note that some filesystems (e.g. NFS and AFS) just use the field to store 51 * a server-provided value (for the most part). For that reason, those ··· 305 } 306 307 /** 308 + * inode_eq_iversion_raw - check whether the raw i_version counter has changed 309 * @inode: inode to check 310 * @old: old value to check against its i_version 311 * 312 + * Compare the current raw i_version counter with a previous one. Returns true 313 + * if they are the same or false if they are different. 314 */ 315 static inline bool 316 + inode_eq_iversion_raw(const struct inode *inode, u64 old) 317 { 318 + return inode_peek_iversion_raw(inode) == old; 319 } 320 321 /** 322 + * inode_eq_iversion - check whether the i_version counter has changed 323 * @inode: inode to check 324 * @old: old value to check against its i_version 325 * 326 + * Compare an i_version counter with a previous one. Returns true if they are 327 + * the same, and false if they are different. 328 * 329 * Note that we don't need to set the QUERIED flag in this case, as the value 330 * in the inode is not being recorded for later use. 331 */ 332 static inline bool 333 + inode_eq_iversion(const struct inode *inode, u64 old) 334 { 335 + return inode_peek_iversion(inode) == old; 336 } 337 #endif
+1 -1
security/integrity/ima/ima_main.c
··· 135 update = test_and_clear_bit(IMA_UPDATE_XATTR, 136 &iint->atomic_flags); 137 if (!IS_I_VERSION(inode) || 138 - inode_cmp_iversion(inode, iint->version) || 139 (iint->flags & IMA_NEW_FILE)) { 140 iint->flags &= ~(IMA_DONE_MASK | IMA_NEW_FILE); 141 iint->measured_pcrs = 0;
··· 135 update = test_and_clear_bit(IMA_UPDATE_XATTR, 136 &iint->atomic_flags); 137 if (!IS_I_VERSION(inode) || 138 + !inode_eq_iversion(inode, iint->version) || 139 (iint->flags & IMA_NEW_FILE)) { 140 iint->flags &= ~(IMA_DONE_MASK | IMA_NEW_FILE); 141 iint->measured_pcrs = 0;