nfsd: minor nfsd4_change_attribute cleanup
Minor cleanup, no change in behavior. Also pull out a common helper that'll be useful elsewhere. Signed-off-by: J. Bruce Fields <bfields@redhat.com> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
parent
b2140338d8
commit
4b03d99794
|
@ -259,19 +259,16 @@ fh_clear_wcc(struct svc_fh *fhp)
|
|||
static inline u64 nfsd4_change_attribute(struct kstat *stat,
|
||||
struct inode *inode)
|
||||
{
|
||||
u64 chattr;
|
||||
|
||||
if (IS_I_VERSION(inode)) {
|
||||
u64 chattr;
|
||||
|
||||
chattr = stat->ctime.tv_sec;
|
||||
chattr <<= 30;
|
||||
chattr += stat->ctime.tv_nsec;
|
||||
chattr += inode_query_iversion(inode);
|
||||
} else {
|
||||
chattr = stat->ctime.tv_sec;
|
||||
chattr <<= 32;
|
||||
chattr += stat->ctime.tv_nsec;
|
||||
}
|
||||
return chattr;
|
||||
return chattr;
|
||||
} else
|
||||
return time_to_chattr(&stat->ctime);
|
||||
}
|
||||
|
||||
extern void fill_pre_wcc(struct svc_fh *fhp);
|
||||
|
|
|
@ -328,6 +328,19 @@ inode_query_iversion(struct inode *inode)
|
|||
return cur >> I_VERSION_QUERIED_SHIFT;
|
||||
}
|
||||
|
||||
/*
|
||||
* For filesystems without any sort of change attribute, the best we can
|
||||
* do is fake one up from the ctime:
|
||||
*/
|
||||
static inline u64 time_to_chattr(struct timespec64 *t)
|
||||
{
|
||||
u64 chattr = t->tv_sec;
|
||||
|
||||
chattr <<= 32;
|
||||
chattr += t->tv_nsec;
|
||||
return chattr;
|
||||
}
|
||||
|
||||
/**
|
||||
* inode_eq_iversion_raw - check whether the raw i_version counter has changed
|
||||
* @inode: inode to check
|
||||
|
|
Loading…
Reference in New Issue