mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 14:13:01 -04:00
Merge branch 'for-3.8' of git://linux-nfs.org/~bfields/linux
Pull nfsd update from Bruce Fields:
"Included this time:
- more nfsd containerization work from Stanislav Kinsbursky: we're
not quite there yet, but should be by 3.9.
- NFSv4.1 progress: implementation of basic backchannel security
negotiation and the mandatory BACKCHANNEL_CTL operation. See
http://wiki.linux-nfs.org/wiki/index.php/Server_4.0_and_4.1_issues
for remaining TODO's
- Fixes for some bugs that could be triggered by unusual compounds.
Our xdr code wasn't designed with v4 compounds in mind, and it
shows. A more thorough rewrite is still a todo.
- If you've ever seen "RPC: multiple fragments per record not
supported" logged while using some sort of odd userland NFS client,
that should now be fixed.
- Further work from Jeff Layton on our mechanism for storing
information about NFSv4 clients across reboots.
- Further work from Bryan Schumaker on his fault-injection mechanism
(which allows us to discard selective NFSv4 state, to excercise
rarely-taken recovery code paths in the client.)
- The usual mix of miscellaneous bugs and cleanup.
Thanks to everyone who tested or contributed this cycle."
* 'for-3.8' of git://linux-nfs.org/~bfields/linux: (111 commits)
nfsd4: don't leave freed stateid hashed
nfsd4: free_stateid can use the current stateid
nfsd4: cleanup: replace rq_resused count by rq_next_page pointer
nfsd: warn on odd reply state in nfsd_vfs_read
nfsd4: fix oops on unusual readlike compound
nfsd4: disable zero-copy on non-final read ops
svcrpc: fix some printks
NFSD: Correct the size calculation in fault_inject_write
NFSD: Pass correct buffer size to rpc_ntop
nfsd: pass proper net to nfsd_destroy() from NFSd kthreads
nfsd: simplify service shutdown
nfsd: replace boolean nfsd_up flag by users counter
nfsd: simplify NFSv4 state init and shutdown
nfsd: introduce helpers for generic resources init and shutdown
nfsd: make NFSd service structure allocated per net
nfsd: make NFSd service boot time per-net
nfsd: per-net NFSd up flag introduced
nfsd: move per-net startup code to separated function
nfsd: pass net to __write_ports() and down
nfsd: pass net to nfsd_set_nrthreads()
...
This commit is contained in:
commit
982197277c
32 changed files with 1911 additions and 1067 deletions
|
|
@ -83,6 +83,11 @@ enum fid_type {
|
|||
* 64 bit parent inode number.
|
||||
*/
|
||||
FILEID_NILFS_WITH_PARENT = 0x62,
|
||||
|
||||
/*
|
||||
* Filesystems must not use 0xff file ID.
|
||||
*/
|
||||
FILEID_INVALID = 0xff,
|
||||
};
|
||||
|
||||
struct fid {
|
||||
|
|
|
|||
|
|
@ -217,6 +217,8 @@ extern int qword_get(char **bpp, char *dest, int bufsize);
|
|||
static inline int get_int(char **bpp, int *anint)
|
||||
{
|
||||
char buf[50];
|
||||
char *ep;
|
||||
int rv;
|
||||
int len = qword_get(bpp, buf, sizeof(buf));
|
||||
|
||||
if (len < 0)
|
||||
|
|
@ -224,9 +226,11 @@ static inline int get_int(char **bpp, int *anint)
|
|||
if (len == 0)
|
||||
return -ENOENT;
|
||||
|
||||
if (kstrtoint(buf, 0, anint))
|
||||
rv = simple_strtol(buf, &ep, 0);
|
||||
if (*ep)
|
||||
return -EINVAL;
|
||||
|
||||
*anint = rv;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -243,6 +243,7 @@ struct svc_rqst {
|
|||
struct page * rq_pages[RPCSVC_MAXPAGES];
|
||||
struct page * *rq_respages; /* points into rq_pages */
|
||||
int rq_resused; /* number of pages used for result */
|
||||
struct page * *rq_next_page; /* next reply page to use */
|
||||
|
||||
struct kvec rq_vec[RPCSVC_MAXPAGES]; /* generally useful.. */
|
||||
|
||||
|
|
@ -338,9 +339,8 @@ xdr_ressize_check(struct svc_rqst *rqstp, __be32 *p)
|
|||
|
||||
static inline void svc_free_res_pages(struct svc_rqst *rqstp)
|
||||
{
|
||||
while (rqstp->rq_resused) {
|
||||
struct page **pp = (rqstp->rq_respages +
|
||||
--rqstp->rq_resused);
|
||||
while (rqstp->rq_next_page != rqstp->rq_respages) {
|
||||
struct page **pp = --rqstp->rq_next_page;
|
||||
if (*pp) {
|
||||
put_page(*pp);
|
||||
*pp = NULL;
|
||||
|
|
|
|||
|
|
@ -26,11 +26,28 @@ struct svc_sock {
|
|||
void (*sk_owspace)(struct sock *);
|
||||
|
||||
/* private TCP part */
|
||||
u32 sk_reclen; /* length of record */
|
||||
u32 sk_tcplen; /* current read length */
|
||||
/* On-the-wire fragment header: */
|
||||
__be32 sk_reclen;
|
||||
/* As we receive a record, this includes the length received so
|
||||
* far (including the fragment header): */
|
||||
u32 sk_tcplen;
|
||||
/* Total length of the data (not including fragment headers)
|
||||
* received so far in the fragments making up this rpc: */
|
||||
u32 sk_datalen;
|
||||
|
||||
struct page * sk_pages[RPCSVC_MAXPAGES]; /* received data */
|
||||
};
|
||||
|
||||
static inline u32 svc_sock_reclen(struct svc_sock *svsk)
|
||||
{
|
||||
return ntohl(svsk->sk_reclen) & RPC_FRAGMENT_SIZE_MASK;
|
||||
}
|
||||
|
||||
static inline u32 svc_sock_final_rec(struct svc_sock *svsk)
|
||||
{
|
||||
return ntohl(svsk->sk_reclen) & RPC_LAST_STREAM_FRAGMENT;
|
||||
}
|
||||
|
||||
/*
|
||||
* Function prototypes.
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in a new issue