afs: convert to new i_version API
For AFS, it's generally treated as an opaque value, so we use the *_raw variants of the API here. Note that AFS has quite a different definition for this counter. AFS only increments it on changes to the data to the data in regular files and contents of the directories. Inode metadata changes do not result in a version increment. We'll need to reconcile that somehow if we ever want to present this to userspace via statx. Signed-off-by: Jeff Layton <jlayton@redhat.com>
This commit is contained in:
parent
9dffe569d9
commit
a01179e6eb
|
@ -13,6 +13,7 @@
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/circ_buf.h>
|
#include <linux/circ_buf.h>
|
||||||
|
#include <linux/iversion.h>
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
#include "afs_fs.h"
|
#include "afs_fs.h"
|
||||||
|
|
||||||
|
@ -124,7 +125,7 @@ static void xdr_decode_AFSFetchStatus(const __be32 **_bp,
|
||||||
vnode->vfs_inode.i_ctime.tv_sec = status->mtime_client;
|
vnode->vfs_inode.i_ctime.tv_sec = status->mtime_client;
|
||||||
vnode->vfs_inode.i_mtime = vnode->vfs_inode.i_ctime;
|
vnode->vfs_inode.i_mtime = vnode->vfs_inode.i_ctime;
|
||||||
vnode->vfs_inode.i_atime = vnode->vfs_inode.i_ctime;
|
vnode->vfs_inode.i_atime = vnode->vfs_inode.i_ctime;
|
||||||
vnode->vfs_inode.i_version = data_version;
|
inode_set_iversion_raw(&vnode->vfs_inode, data_version);
|
||||||
}
|
}
|
||||||
|
|
||||||
expected_version = status->data_version;
|
expected_version = status->data_version;
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/mount.h>
|
#include <linux/mount.h>
|
||||||
#include <linux/namei.h>
|
#include <linux/namei.h>
|
||||||
|
#include <linux/iversion.h>
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
|
|
||||||
static const struct inode_operations afs_symlink_inode_operations = {
|
static const struct inode_operations afs_symlink_inode_operations = {
|
||||||
|
@ -89,7 +90,7 @@ static int afs_inode_map_status(struct afs_vnode *vnode, struct key *key)
|
||||||
inode->i_atime = inode->i_mtime = inode->i_ctime;
|
inode->i_atime = inode->i_mtime = inode->i_ctime;
|
||||||
inode->i_blocks = 0;
|
inode->i_blocks = 0;
|
||||||
inode->i_generation = vnode->fid.unique;
|
inode->i_generation = vnode->fid.unique;
|
||||||
inode->i_version = vnode->status.data_version;
|
inode_set_iversion_raw(inode, vnode->status.data_version);
|
||||||
inode->i_mapping->a_ops = &afs_fs_aops;
|
inode->i_mapping->a_ops = &afs_fs_aops;
|
||||||
|
|
||||||
read_sequnlock_excl(&vnode->cb_lock);
|
read_sequnlock_excl(&vnode->cb_lock);
|
||||||
|
@ -218,7 +219,7 @@ struct inode *afs_iget_autocell(struct inode *dir, const char *dev_name,
|
||||||
inode->i_ctime.tv_nsec = 0;
|
inode->i_ctime.tv_nsec = 0;
|
||||||
inode->i_atime = inode->i_mtime = inode->i_ctime;
|
inode->i_atime = inode->i_mtime = inode->i_ctime;
|
||||||
inode->i_blocks = 0;
|
inode->i_blocks = 0;
|
||||||
inode->i_version = 0;
|
inode_set_iversion_raw(inode, 0);
|
||||||
inode->i_generation = 0;
|
inode->i_generation = 0;
|
||||||
|
|
||||||
set_bit(AFS_VNODE_PSEUDODIR, &vnode->flags);
|
set_bit(AFS_VNODE_PSEUDODIR, &vnode->flags);
|
||||||
|
|
Loading…
Reference in New Issue