NFS: Add a helper to set attribute barriers
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> Tested-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
parent
aa5accea40
commit
140e049c64
2 changed files with 17 additions and 0 deletions
|
@ -1260,6 +1260,22 @@ void nfs_fattr_init(struct nfs_fattr *fattr)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(nfs_fattr_init);
|
||||
|
||||
/**
|
||||
* nfs_fattr_set_barrier
|
||||
* @fattr: attributes
|
||||
*
|
||||
* Used to set a barrier after an attribute was updated. This
|
||||
* barrier ensures that older attributes from RPC calls that may
|
||||
* have raced with our update cannot clobber these new values.
|
||||
* Note that you are still responsible for ensuring that other
|
||||
* operations which change the attribute on the server do not
|
||||
* collide.
|
||||
*/
|
||||
void nfs_fattr_set_barrier(struct nfs_fattr *fattr)
|
||||
{
|
||||
fattr->gencount = nfs_inc_attr_generation_counter();
|
||||
}
|
||||
|
||||
struct nfs_fattr *nfs_alloc_fattr(void)
|
||||
{
|
||||
struct nfs_fattr *fattr;
|
||||
|
|
|
@ -369,6 +369,7 @@ extern struct nfs_lock_context *nfs_get_lock_context(struct nfs_open_context *ct
|
|||
extern void nfs_put_lock_context(struct nfs_lock_context *l_ctx);
|
||||
extern u64 nfs_compat_user_ino64(u64 fileid);
|
||||
extern void nfs_fattr_init(struct nfs_fattr *fattr);
|
||||
extern void nfs_fattr_set_barrier(struct nfs_fattr *fattr);
|
||||
extern unsigned long nfs_inc_attr_generation_counter(void);
|
||||
|
||||
extern struct nfs_fattr *nfs_alloc_fattr(void);
|
||||
|
|
Loading…
Reference in a new issue