|
@@ -908,21 +908,16 @@ static int nfs_size_need_update(const struct inode *inode, const struct nfs_fatt
|
|
return nfs_size_to_loff_t(fattr->size) > i_size_read(inode);
|
|
return nfs_size_to_loff_t(fattr->size) > i_size_read(inode);
|
|
}
|
|
}
|
|
|
|
|
|
-static unsigned long nfs_attr_generation_counter;
|
|
|
|
|
|
+static atomic_long_t nfs_attr_generation_counter;
|
|
|
|
|
|
static unsigned long nfs_read_attr_generation_counter(void)
|
|
static unsigned long nfs_read_attr_generation_counter(void)
|
|
{
|
|
{
|
|
- smp_rmb();
|
|
|
|
- return nfs_attr_generation_counter;
|
|
|
|
|
|
+ return atomic_long_read(&nfs_attr_generation_counter);
|
|
}
|
|
}
|
|
|
|
|
|
unsigned long nfs_inc_attr_generation_counter(void)
|
|
unsigned long nfs_inc_attr_generation_counter(void)
|
|
{
|
|
{
|
|
- unsigned long ret;
|
|
|
|
- smp_rmb();
|
|
|
|
- ret = ++nfs_attr_generation_counter;
|
|
|
|
- smp_wmb();
|
|
|
|
- return ret;
|
|
|
|
|
|
+ return atomic_long_inc_return(&nfs_attr_generation_counter);
|
|
}
|
|
}
|
|
|
|
|
|
void nfs_fattr_init(struct nfs_fattr *fattr)
|
|
void nfs_fattr_init(struct nfs_fattr *fattr)
|