diff options
Diffstat (limited to 'include/linux/fs.h')
-rw-r--r-- | include/linux/fs.h | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index 21398a5d688d..a516b6716870 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -124,6 +124,7 @@ extern int dir_notify_enable; | |||
124 | #define MS_SHARED (1<<20) /* change to shared */ | 124 | #define MS_SHARED (1<<20) /* change to shared */ |
125 | #define MS_RELATIME (1<<21) /* Update atime relative to mtime/ctime. */ | 125 | #define MS_RELATIME (1<<21) /* Update atime relative to mtime/ctime. */ |
126 | #define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */ | 126 | #define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */ |
127 | #define MS_I_VERSION (1<<23) /* Update inode I_version field */ | ||
127 | #define MS_ACTIVE (1<<30) | 128 | #define MS_ACTIVE (1<<30) |
128 | #define MS_NOUSER (1<<31) | 129 | #define MS_NOUSER (1<<31) |
129 | 130 | ||
@@ -173,6 +174,7 @@ extern int dir_notify_enable; | |||
173 | ((inode)->i_flags & (S_SYNC|S_DIRSYNC))) | 174 | ((inode)->i_flags & (S_SYNC|S_DIRSYNC))) |
174 | #define IS_MANDLOCK(inode) __IS_FLG(inode, MS_MANDLOCK) | 175 | #define IS_MANDLOCK(inode) __IS_FLG(inode, MS_MANDLOCK) |
175 | #define IS_NOATIME(inode) __IS_FLG(inode, MS_RDONLY|MS_NOATIME) | 176 | #define IS_NOATIME(inode) __IS_FLG(inode, MS_RDONLY|MS_NOATIME) |
177 | #define IS_I_VERSION(inode) __IS_FLG(inode, MS_I_VERSION) | ||
176 | 178 | ||
177 | #define IS_NOQUOTA(inode) ((inode)->i_flags & S_NOQUOTA) | 179 | #define IS_NOQUOTA(inode) ((inode)->i_flags & S_NOQUOTA) |
178 | #define IS_APPEND(inode) ((inode)->i_flags & S_APPEND) | 180 | #define IS_APPEND(inode) ((inode)->i_flags & S_APPEND) |
@@ -599,7 +601,7 @@ struct inode { | |||
599 | uid_t i_uid; | 601 | uid_t i_uid; |
600 | gid_t i_gid; | 602 | gid_t i_gid; |
601 | dev_t i_rdev; | 603 | dev_t i_rdev; |
602 | unsigned long i_version; | 604 | u64 i_version; |
603 | loff_t i_size; | 605 | loff_t i_size; |
604 | #ifdef __NEED_I_SIZE_ORDERED | 606 | #ifdef __NEED_I_SIZE_ORDERED |
605 | seqcount_t i_size_seqcount; | 607 | seqcount_t i_size_seqcount; |
@@ -1394,6 +1396,21 @@ static inline void inode_dec_link_count(struct inode *inode) | |||
1394 | mark_inode_dirty(inode); | 1396 | mark_inode_dirty(inode); |
1395 | } | 1397 | } |
1396 | 1398 | ||
1399 | /** | ||
1400 | * inode_inc_iversion - increments i_version | ||
1401 | * @inode: inode that need to be updated | ||
1402 | * | ||
1403 | * Every time the inode is modified, the i_version field will be incremented. | ||
1404 | * The filesystem has to be mounted with i_version flag | ||
1405 | */ | ||
1406 | |||
1407 | static inline void inode_inc_iversion(struct inode *inode) | ||
1408 | { | ||
1409 | spin_lock(&inode->i_lock); | ||
1410 | inode->i_version++; | ||
1411 | spin_unlock(&inode->i_lock); | ||
1412 | } | ||
1413 | |||
1397 | extern void touch_atime(struct vfsmount *mnt, struct dentry *dentry); | 1414 | extern void touch_atime(struct vfsmount *mnt, struct dentry *dentry); |
1398 | static inline void file_accessed(struct file *file) | 1415 | static inline void file_accessed(struct file *file) |
1399 | { | 1416 | { |