Merge branch 'nfs-server-stable' of git://linux-nfs.org/~bfields/linux
* 'nfs-server-stable' of git://linux-nfs.org/~bfields/linux: knfsd: query filesystem for NFSv4 getattr of FATTR4_MAXNAME knfsd: nfsv4 delegation recall should take reference on client knfsd: don't shutdown callbacks until nfsv4 client is freed knfsd: let nfsd manage timing out its own leases knfsd: Add source address to sunrpc svc errors knfsd: 64 bit ino support for NFS server svcgss: move init code into separate function knfsd: remove code duplication in nfsd4_setclientid() nfsd warning fix knfsd: fix callback rpc cred knfsd: move nfsv4 slab creation/destruction to module init/exit knfsd: spawn kernel thread to probe callback channel knfsd: nfs4 name->id mapping not correctly parsing negative downcall knfsd: demote some printk()s to dprintk()s knfsd: cleanup of nfsd4 cmp_* functions knfsd: delete code made redundant by map_new_errors nfsd: fix horrible indentation in nfsd_setattr nfsd: remove unused cache_for_each macro nfsd: tone down inaccurate dprintk
This commit is contained in:
@@ -153,19 +153,21 @@ extern int nfsd_max_blksize;
|
||||
*/
|
||||
#ifdef CONFIG_NFSD_V4
|
||||
extern unsigned int max_delegations;
|
||||
void nfs4_state_init(void);
|
||||
int nfs4_state_start(void);
|
||||
int nfs4_state_init(void);
|
||||
void nfsd4_free_slabs(void);
|
||||
void nfs4_state_start(void);
|
||||
void nfs4_state_shutdown(void);
|
||||
time_t nfs4_lease_time(void);
|
||||
void nfs4_reset_lease(time_t leasetime);
|
||||
int nfs4_reset_recoverydir(char *recdir);
|
||||
#else
|
||||
static inline void nfs4_state_init(void){};
|
||||
static inline int nfs4_state_start(void){return 0;}
|
||||
static inline void nfs4_state_shutdown(void){}
|
||||
static inline time_t nfs4_lease_time(void){return 0;}
|
||||
static inline void nfs4_reset_lease(time_t leasetime){}
|
||||
static inline int nfs4_reset_recoverydir(char *recdir) {return 0;}
|
||||
static inline int nfs4_state_init(void) { return 0; }
|
||||
static inline void nfsd4_free_slabs(void) { }
|
||||
static inline void nfs4_state_start(void) { }
|
||||
static inline void nfs4_state_shutdown(void) { }
|
||||
static inline time_t nfs4_lease_time(void) { return 0; }
|
||||
static inline void nfs4_reset_lease(time_t leasetime) { }
|
||||
static inline int nfs4_reset_recoverydir(char *recdir) { return 0; }
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
@@ -150,17 +150,7 @@ typedef struct svc_fh {
|
||||
struct timespec fh_pre_ctime; /* ctime before oper */
|
||||
|
||||
/* Post-op attributes saved in fh_unlock */
|
||||
umode_t fh_post_mode; /* i_mode */
|
||||
nlink_t fh_post_nlink; /* i_nlink */
|
||||
uid_t fh_post_uid; /* i_uid */
|
||||
gid_t fh_post_gid; /* i_gid */
|
||||
__u64 fh_post_size; /* i_size */
|
||||
unsigned long fh_post_blocks; /* i_blocks */
|
||||
unsigned long fh_post_blksize;/* i_blksize */
|
||||
__be32 fh_post_rdev[2];/* i_rdev */
|
||||
struct timespec fh_post_atime; /* i_atime */
|
||||
struct timespec fh_post_mtime; /* i_mtime */
|
||||
struct timespec fh_post_ctime; /* i_ctime */
|
||||
struct kstat fh_post_attr; /* full attrs after operation */
|
||||
#endif /* CONFIG_NFSD_V3 */
|
||||
|
||||
} svc_fh;
|
||||
@@ -297,36 +287,12 @@ fill_pre_wcc(struct svc_fh *fhp)
|
||||
if (!fhp->fh_pre_saved) {
|
||||
fhp->fh_pre_mtime = inode->i_mtime;
|
||||
fhp->fh_pre_ctime = inode->i_ctime;
|
||||
fhp->fh_pre_size = inode->i_size;
|
||||
fhp->fh_pre_saved = 1;
|
||||
fhp->fh_pre_size = inode->i_size;
|
||||
fhp->fh_pre_saved = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Fill in the post_op attr for the wcc data
|
||||
*/
|
||||
static inline void
|
||||
fill_post_wcc(struct svc_fh *fhp)
|
||||
{
|
||||
struct inode *inode = fhp->fh_dentry->d_inode;
|
||||
|
||||
if (fhp->fh_post_saved)
|
||||
printk("nfsd: inode locked twice during operation.\n");
|
||||
|
||||
fhp->fh_post_mode = inode->i_mode;
|
||||
fhp->fh_post_nlink = inode->i_nlink;
|
||||
fhp->fh_post_uid = inode->i_uid;
|
||||
fhp->fh_post_gid = inode->i_gid;
|
||||
fhp->fh_post_size = inode->i_size;
|
||||
fhp->fh_post_blksize = BLOCK_SIZE;
|
||||
fhp->fh_post_blocks = inode->i_blocks;
|
||||
fhp->fh_post_rdev[0] = htonl((u32)imajor(inode));
|
||||
fhp->fh_post_rdev[1] = htonl((u32)iminor(inode));
|
||||
fhp->fh_post_atime = inode->i_atime;
|
||||
fhp->fh_post_mtime = inode->i_mtime;
|
||||
fhp->fh_post_ctime = inode->i_ctime;
|
||||
fhp->fh_post_saved = 1;
|
||||
}
|
||||
extern void fill_post_wcc(struct svc_fh *);
|
||||
#else
|
||||
#define fill_pre_wcc(ignored)
|
||||
#define fill_post_wcc(notused)
|
||||
|
||||
@@ -428,8 +428,8 @@ set_change_info(struct nfsd4_change_info *cinfo, struct svc_fh *fhp)
|
||||
cinfo->atomic = 1;
|
||||
cinfo->before_ctime_sec = fhp->fh_pre_ctime.tv_sec;
|
||||
cinfo->before_ctime_nsec = fhp->fh_pre_ctime.tv_nsec;
|
||||
cinfo->after_ctime_sec = fhp->fh_post_ctime.tv_sec;
|
||||
cinfo->after_ctime_nsec = fhp->fh_post_ctime.tv_nsec;
|
||||
cinfo->after_ctime_sec = fhp->fh_post_attr.ctime.tv_sec;
|
||||
cinfo->after_ctime_nsec = fhp->fh_post_attr.ctime.tv_nsec;
|
||||
}
|
||||
|
||||
int nfs4svc_encode_voidres(struct svc_rqst *, __be32 *, void *);
|
||||
|
||||
@@ -136,16 +136,6 @@ sunrpc_cache_update(struct cache_detail *detail,
|
||||
struct cache_head *new, struct cache_head *old, int hash);
|
||||
|
||||
|
||||
#define cache_for_each(pos, detail, index, member) \
|
||||
for (({read_lock(&(detail)->hash_lock); index = (detail)->hash_size;}) ; \
|
||||
({if (index==0)read_unlock(&(detail)->hash_lock); index--;}); \
|
||||
) \
|
||||
for (pos = container_of((detail)->hash_table[index], typeof(*pos), member); \
|
||||
&pos->member; \
|
||||
pos = container_of(pos->member.next, typeof(*pos), member))
|
||||
|
||||
|
||||
|
||||
extern void cache_clean_deferred(void *owner);
|
||||
|
||||
static inline struct cache_head *cache_get(struct cache_head *h)
|
||||
|
||||
Reference in New Issue
Block a user