NFSD: Check layout type when returning client layouts
Subsystems (2)
PATCH 1/1 NFSD: Check layout type when returning client layouts
According to RFC5661:
" When lr_returntype is LAYOUTRETURN4_FSID, the current filehandle is used
to identify the file system and all layouts matching the client ID, the fsid of the file system, lora_layout_type, and lora_iomode are returned. When lr_returntype is LAYOUTRETURN4_ALL, all layouts matching the client ID, lora_layout_type, and lora_iomode are returned and the current filehandle is not used. "
When returning client layouts, always check layout type.
--- fs/nfsd/nfs4layouts.c | 3 +++ 1 file changed, 3 insertions(+)
fs/nfsd/nfs4layouts.c +3 -0
@@ -513,6 +513,9 @@ nfsd4_return_client_layouts(struct svc_rqst *rqstp,spin_lock (&clp->cl_lock);list_for_each_entry_safe (ls, n, &clp->cl_lo_states, ls_perclnt) { +if (ls->ls_layout_type != lrp->lr_layout_type) +continue ; +if (lrp->lr_return_type ==RETURN_FSID && !fh_fsid_match (&ls->ls_stid.sc_file->fi_fhandle, &cstate->current_fh.fh_handle))
Signature · 1 line
2.3.3
Quoted 11 lines · Kinglong Mee
According to RFC5661:
" Whenlr_returntypeisLAYOUTRETURN4_FSID, the current filehandle is used
to identify the file system and all layouts matching the client ID, the fsid of the file system,lora_layout_type, andlora_iomodeare returned. Whenlr_returntypeisLAYOUTRETURN4_ALL, all layouts matching the client ID,lora_layout_type, andlora_iomodeare returned and the current filehandle is not used. "When returning client layouts, always check layout type.
Signed-off-by Kinglong Mee <[email protected]>
Looks good,