Lines Matching refs:inode

8  * The inode->i_version field:
12 * appear larger to observers if there was an explicit change to the inode's
16 * inode status change time (aka ctime). i_version must appear to change, even
35 * inode. If it's different then something has changed. Observers cannot infer
37 * that the inode has changed in some fashion.
40 * want to use i_version field on an inode should first check whether the
80 * inode_set_iversion_queried when loading an existing inode from disk. This
81 * ensures that the next attempted inode increment will result in the value
101 * @inode: inode to set
104 * Set @inode's i_version field to @val. This function is for use by
111 inode_set_iversion_raw(struct inode *inode, u64 val)
113 atomic64_set(&inode->i_version, val);
118 * @inode: inode from which i_version should be read
120 * Grab a "raw" inode->i_version value and return it. The i_version is not
128 inode_peek_iversion_raw(const struct inode *inode)
130 return atomic64_read(&inode->i_version);
135 * @inode: inode to set
142 inode_set_max_iversion_raw(struct inode *inode, u64 val)
144 u64 cur = inode_peek_iversion_raw(inode);
149 } while (!atomic64_try_cmpxchg(&inode->i_version, &cur, val));
154 * @inode: inode to set
157 * Set @inode's i_version field to @val. This function is for filesystems with
158 * a kernel-managed i_version, for initializing a newly-created inode from
165 inode_set_iversion(struct inode *inode, u64 val)
167 inode_set_iversion_raw(inode, val << I_VERSION_QUERIED_SHIFT);
172 * @inode: inode to set
175 * Set @inode's i_version field to @val, and flag it for increment on the next
179 * when loading an existing inode from disk.
184 * different versions of the same inode.
187 inode_set_iversion_queried(struct inode *inode, u64 val)
189 inode_set_iversion_raw(inode, (val << I_VERSION_QUERIED_SHIFT) |
193 bool inode_maybe_inc_iversion(struct inode *inode, bool force);
197 * @inode: inode that needs to be updated
203 inode_inc_iversion(struct inode *inode)
205 inode_maybe_inc_iversion(inode, true);
210 * @inode: inode to check
212 * Returns whether the inode->i_version counter needs incrementing on the next
216 inode_iversion_need_inc(struct inode *inode)
218 return inode_peek_iversion_raw(inode) & I_VERSION_QUERIED;
223 * @inode: inode that needs to be updated
233 inode_inc_iversion_raw(struct inode *inode)
235 atomic64_inc(&inode->i_version);
240 * @inode: inode from which i_version should be read
242 * Read the inode i_version counter for an inode without registering it as a
250 inode_peek_iversion(const struct inode *inode)
252 return inode_peek_iversion_raw(inode) >> I_VERSION_QUERIED_SHIFT;
268 u64 inode_query_iversion(struct inode *inode);
272 * @inode: inode to check
279 inode_eq_iversion_raw(const struct inode *inode, u64 old)
281 return inode_peek_iversion_raw(inode) == old;
286 * @inode: inode to check
293 * in the inode is not being recorded for later use.
296 inode_eq_iversion(const struct inode *inode, u64 old)
298 return inode_peek_iversion(inode) == old;