mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-05 00:25:24 -04:00
Merge tag 'nfsd-4.19-1' of git://linux-nfs.org/~bfields/linux
Pull nfsd updates from Bruce Fields: "Chuck Lever fixed a problem with NFSv4.0 callbacks over GSS from multi-homed servers. The only new feature is a minor bit of protocol (change_attr_type) which the client doesn't even use yet. Other than that, various bugfixes and cleanup" * tag 'nfsd-4.19-1' of git://linux-nfs.org/~bfields/linux: (27 commits) sunrpc: Add comment defining gssd upcall API keywords nfsd: Remove callback_cred nfsd: Use correct credential for NFSv4.0 callback with GSS sunrpc: Extract target name into svc_cred sunrpc: Enable the kernel to specify the hostname part of service principals sunrpc: Don't use stack buffer with scatterlist rpc: remove unneeded variable 'ret' in rdma_listen_handler nfsd: use true and false for boolean values nfsd: constify write_op[] fs/nfsd: Delete invalid assignment statements in nfsd4_decode_exchange_id NFSD: Handle full-length symlinks NFSD: Refactor the generic write vector fill helper svcrdma: Clean up Read chunk path svcrdma: Avoid releasing a page in svc_xprt_release() nfsd: Mark expected switch fall-through sunrpc: remove redundant variables 'checksumlen','blocksize' and 'data' nfsd: fix leaked file lock with nfs exported overlayfs nfsd: don't advertise a SCSI layout for an unsupported request_queue nfsd: fix corrupted reply to badly ordered compound nfsd: clarify check_op_ordering ...
This commit is contained in:
@@ -299,7 +299,7 @@ int nlmsvc_unlock_all_by_ip(struct sockaddr *server_addr);
|
||||
|
||||
static inline struct inode *nlmsvc_file_inode(struct nlm_file *file)
|
||||
{
|
||||
return file_inode(file->f_file);
|
||||
return locks_inode(file->f_file);
|
||||
}
|
||||
|
||||
static inline int __nlm_privileged_request4(const struct sockaddr *sap)
|
||||
@@ -359,7 +359,7 @@ static inline int nlm_privileged_requester(const struct svc_rqst *rqstp)
|
||||
static inline int nlm_compare_locks(const struct file_lock *fl1,
|
||||
const struct file_lock *fl2)
|
||||
{
|
||||
return file_inode(fl1->fl_file) == file_inode(fl2->fl_file)
|
||||
return locks_inode(fl1->fl_file) == locks_inode(fl2->fl_file)
|
||||
&& fl1->fl_pid == fl2->fl_pid
|
||||
&& fl1->fl_owner == fl2->fl_owner
|
||||
&& fl1->fl_start == fl2->fl_start
|
||||
|
||||
@@ -374,6 +374,13 @@ enum lock_type4 {
|
||||
NFS4_WRITEW_LT = 4
|
||||
};
|
||||
|
||||
enum change_attr_type4 {
|
||||
NFS4_CHANGE_TYPE_IS_MONOTONIC_INCR = 0,
|
||||
NFS4_CHANGE_TYPE_IS_VERSION_COUNTER = 1,
|
||||
NFS4_CHANGE_TYPE_IS_VERSION_COUNTER_NOPNFS = 2,
|
||||
NFS4_CHANGE_TYPE_IS_TIME_METADATA = 3,
|
||||
NFS4_CHANGE_TYPE_IS_UNDEFINED = 4
|
||||
};
|
||||
|
||||
/* Mandatory Attributes */
|
||||
#define FATTR4_WORD0_SUPPORTED_ATTRS (1UL << 0)
|
||||
@@ -441,6 +448,7 @@ enum lock_type4 {
|
||||
#define FATTR4_WORD2_LAYOUT_BLKSIZE (1UL << 1)
|
||||
#define FATTR4_WORD2_MDSTHRESHOLD (1UL << 4)
|
||||
#define FATTR4_WORD2_CLONE_BLKSIZE (1UL << 13)
|
||||
#define FATTR4_WORD2_CHANGE_ATTR_TYPE (1UL << 15)
|
||||
#define FATTR4_WORD2_SECURITY_LABEL (1UL << 16)
|
||||
#define FATTR4_WORD2_MODE_UMASK (1UL << 17)
|
||||
|
||||
|
||||
@@ -496,9 +496,11 @@ void svc_reserve(struct svc_rqst *rqstp, int space);
|
||||
struct svc_pool * svc_pool_for_cpu(struct svc_serv *serv, int cpu);
|
||||
char * svc_print_addr(struct svc_rqst *, char *, size_t);
|
||||
unsigned int svc_fill_write_vector(struct svc_rqst *rqstp,
|
||||
struct page **pages,
|
||||
struct kvec *first, size_t total);
|
||||
char *svc_fill_symlink_pathname(struct svc_rqst *rqstp,
|
||||
struct kvec *first, size_t total);
|
||||
struct kvec *first, void *p,
|
||||
size_t total);
|
||||
|
||||
#define RPC_MAX_ADDRBUFLEN (63U)
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ struct svc_cred {
|
||||
/* name of form servicetype@hostname, passed down by
|
||||
* rpc.svcgssd, or computed from the above: */
|
||||
char *cr_principal;
|
||||
char *cr_targ_princ;
|
||||
struct gss_api_mech *cr_gss_mech;
|
||||
};
|
||||
|
||||
@@ -39,6 +40,7 @@ static inline void init_svc_cred(struct svc_cred *cred)
|
||||
cred->cr_group_info = NULL;
|
||||
cred->cr_raw_principal = NULL;
|
||||
cred->cr_principal = NULL;
|
||||
cred->cr_targ_princ = NULL;
|
||||
cred->cr_gss_mech = NULL;
|
||||
}
|
||||
|
||||
@@ -48,6 +50,7 @@ static inline void free_svc_cred(struct svc_cred *cred)
|
||||
put_group_info(cred->cr_group_info);
|
||||
kfree(cred->cr_raw_principal);
|
||||
kfree(cred->cr_principal);
|
||||
kfree(cred->cr_targ_princ);
|
||||
gss_mech_put(cred->cr_gss_mech);
|
||||
init_svc_cred(cred);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user