Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'nfs-for-4.17-2' of git://git.linux-nfs.org/projects/anna/linux-nfs

Pull NFS client fixes from Anna Schumaker:
"These patches fix both a possible corruption during NFSoRDMA MR
recovery, and a sunrpc tracepoint crash.

Additionally, Trond has a new email address to put in the MAINTAINERS
file"

* tag 'nfs-for-4.17-2' of git://git.linux-nfs.org/projects/anna/linux-nfs:
Change Trond's email address in MAINTAINERS
sunrpc: Fix latency trace point crashes
xprtrdma: Fix list corruption / DMAR errors during MR recovery

+17 -22
+1 -1
MAINTAINERS
··· 9873 9873 F: Documentation/devicetree/bindings/net/nfc/ 9874 9874 9875 9875 NFS, SUNRPC, AND LOCKD CLIENTS 9876 - M: Trond Myklebust <trond.myklebust@primarydata.com> 9876 + M: Trond Myklebust <trond.myklebust@hammerspace.com> 9877 9877 M: Anna Schumaker <anna.schumaker@netapp.com> 9878 9878 L: linux-nfs@vger.kernel.org 9879 9879 W: http://client.linux-nfs.org
+6 -10
include/trace/events/sunrpc.h
··· 224 224 TP_ARGS(task, backlog, rtt, execute), 225 225 226 226 TP_STRUCT__entry( 227 + __field(unsigned int, task_id) 228 + __field(unsigned int, client_id) 227 229 __field(u32, xid) 228 230 __field(int, version) 229 231 __string(progname, task->tk_client->cl_program->name) ··· 233 231 __field(unsigned long, backlog) 234 232 __field(unsigned long, rtt) 235 233 __field(unsigned long, execute) 236 - __string(addr, 237 - task->tk_xprt->address_strings[RPC_DISPLAY_ADDR]) 238 - __string(port, 239 - task->tk_xprt->address_strings[RPC_DISPLAY_PORT]) 240 234 ), 241 235 242 236 TP_fast_assign( 237 + __entry->client_id = task->tk_client->cl_clid; 238 + __entry->task_id = task->tk_pid; 243 239 __entry->xid = be32_to_cpu(task->tk_rqstp->rq_xid); 244 240 __entry->version = task->tk_client->cl_vers; 245 241 __assign_str(progname, task->tk_client->cl_program->name) ··· 245 245 __entry->backlog = ktime_to_us(backlog); 246 246 __entry->rtt = ktime_to_us(rtt); 247 247 __entry->execute = ktime_to_us(execute); 248 - __assign_str(addr, 249 - task->tk_xprt->address_strings[RPC_DISPLAY_ADDR]); 250 - __assign_str(port, 251 - task->tk_xprt->address_strings[RPC_DISPLAY_PORT]); 252 248 ), 253 249 254 - TP_printk("peer=[%s]:%s xid=0x%08x %sv%d %s backlog=%lu rtt=%lu execute=%lu", 255 - __get_str(addr), __get_str(port), __entry->xid, 250 + TP_printk("task:%u@%d xid=0x%08x %sv%d %s backlog=%lu rtt=%lu execute=%lu", 251 + __entry->task_id, __entry->client_id, __entry->xid, 256 252 __get_str(progname), __entry->version, __get_str(procname), 257 253 __entry->backlog, __entry->rtt, __entry->execute) 258 254 );
+1 -4
net/sunrpc/xprtrdma/fmr_ops.c
··· 72 72 if (IS_ERR(mr->fmr.fm_mr)) 73 73 goto out_fmr_err; 74 74 75 + INIT_LIST_HEAD(&mr->mr_list); 75 76 return 0; 76 77 77 78 out_fmr_err: ··· 102 101 { 103 102 LIST_HEAD(unmap_list); 104 103 int rc; 105 - 106 - /* Ensure MW is not on any rl_registered list */ 107 - if (!list_empty(&mr->mr_list)) 108 - list_del(&mr->mr_list); 109 104 110 105 kfree(mr->fmr.fm_physaddrs); 111 106 kfree(mr->mr_sg);
+3 -6
net/sunrpc/xprtrdma/frwr_ops.c
··· 110 110 if (!mr->mr_sg) 111 111 goto out_list_err; 112 112 113 + INIT_LIST_HEAD(&mr->mr_list); 113 114 sg_init_table(mr->mr_sg, depth); 114 115 init_completion(&frwr->fr_linv_done); 115 116 return 0; ··· 133 132 frwr_op_release_mr(struct rpcrdma_mr *mr) 134 133 { 135 134 int rc; 136 - 137 - /* Ensure MR is not on any rl_registered list */ 138 - if (!list_empty(&mr->mr_list)) 139 - list_del(&mr->mr_list); 140 135 141 136 rc = ib_dereg_mr(mr->frwr.fr_mr); 142 137 if (rc) ··· 192 195 return; 193 196 194 197 out_release: 195 - pr_err("rpcrdma: FRWR reset failed %d, %p release\n", rc, mr); 198 + pr_err("rpcrdma: FRWR reset failed %d, %p released\n", rc, mr); 196 199 r_xprt->rx_stats.mrs_orphaned++; 197 200 198 201 spin_lock(&r_xprt->rx_buf.rb_mrlock); ··· 473 476 474 477 list_for_each_entry(mr, mrs, mr_list) 475 478 if (mr->mr_handle == rep->rr_inv_rkey) { 476 - list_del(&mr->mr_list); 479 + list_del_init(&mr->mr_list); 477 480 trace_xprtrdma_remoteinv(mr); 478 481 mr->frwr.fr_state = FRWR_IS_INVALID; 479 482 rpcrdma_mr_unmap_and_put(mr);
+5
net/sunrpc/xprtrdma/verbs.c
··· 1254 1254 list_del(&mr->mr_all); 1255 1255 1256 1256 spin_unlock(&buf->rb_mrlock); 1257 + 1258 + /* Ensure MW is not on any rl_registered list */ 1259 + if (!list_empty(&mr->mr_list)) 1260 + list_del(&mr->mr_list); 1261 + 1257 1262 ia->ri_ops->ro_release_mr(mr); 1258 1263 count++; 1259 1264 spin_lock(&buf->rb_mrlock);
+1 -1
net/sunrpc/xprtrdma/xprt_rdma.h
··· 380 380 struct rpcrdma_mr *mr; 381 381 382 382 mr = list_first_entry(list, struct rpcrdma_mr, mr_list); 383 - list_del(&mr->mr_list); 383 + list_del_init(&mr->mr_list); 384 384 return mr; 385 385 } 386 386