@@ -127,11 +127,6 @@ static void nfs_readpage_release(struct nfs_page *req, int error)
127127 nfs_release_request (req );
128128}
129129
130- struct nfs_readdesc {
131- struct nfs_pageio_descriptor pgio ;
132- struct nfs_open_context * ctx ;
133- };
134-
135130static void nfs_page_group_set_uptodate (struct nfs_page * req )
136131{
137132 if (nfs_page_group_sync_on_bit (req , PG_UPTODATE ))
@@ -153,7 +148,8 @@ static void nfs_read_completion(struct nfs_pgio_header *hdr)
153148
154149 if (test_bit (NFS_IOHDR_EOF , & hdr -> flags )) {
155150 /* note: regions of the page not covered by a
156- * request are zeroed in readpage_async_filler */
151+ * request are zeroed in nfs_read_add_folio
152+ */
157153 if (bytes > hdr -> good_bytes ) {
158154 /* nothing in this request was good, so zero
159155 * the full extent of the request */
@@ -281,7 +277,9 @@ static void nfs_readpage_result(struct rpc_task *task,
281277 nfs_readpage_retry (task , hdr );
282278}
283279
284- static int readpage_async_filler (struct nfs_readdesc * desc , struct folio * folio )
280+ static int nfs_read_add_folio (struct nfs_pageio_descriptor * pgio ,
281+ struct nfs_open_context * ctx ,
282+ struct folio * folio )
285283{
286284 struct inode * inode = folio_file_mapping (folio )-> host ;
287285 struct nfs_server * server = NFS_SERVER (inode );
@@ -303,15 +301,15 @@ static int readpage_async_filler(struct nfs_readdesc *desc, struct folio *folio)
303301 goto out_unlock ;
304302 }
305303
306- new = nfs_page_create_from_folio (desc -> ctx , folio , 0 , aligned_len );
304+ new = nfs_page_create_from_folio (ctx , folio , 0 , aligned_len );
307305 if (IS_ERR (new ))
308306 goto out_error ;
309307
310308 if (len < fsize )
311309 folio_zero_segment (folio , len , fsize );
312- if (!nfs_pageio_add_request (& desc -> pgio , new )) {
310+ if (!nfs_pageio_add_request (pgio , new )) {
313311 nfs_list_remove_request (new );
314- error = desc -> pgio . pg_error ;
312+ error = pgio -> pg_error ;
315313 nfs_readpage_release (new , error );
316314 goto out ;
317315 }
@@ -332,8 +330,9 @@ static int readpage_async_filler(struct nfs_readdesc *desc, struct folio *folio)
332330 */
333331int nfs_read_folio (struct file * file , struct folio * folio )
334332{
335- struct nfs_readdesc desc ;
336333 struct inode * inode = file_inode (file );
334+ struct nfs_pageio_descriptor pgio ;
335+ struct nfs_open_context * ctx ;
337336 int ret ;
338337
339338 trace_nfs_aop_readpage (inode , folio );
@@ -357,25 +356,25 @@ int nfs_read_folio(struct file *file, struct folio *folio)
357356 if (NFS_STALE (inode ))
358357 goto out_unlock ;
359358
360- desc . ctx = get_nfs_open_context (nfs_file_open_context (file ));
359+ ctx = get_nfs_open_context (nfs_file_open_context (file ));
361360
362- xchg (& desc . ctx -> error , 0 );
363- nfs_pageio_init_read (& desc . pgio , inode , false,
361+ xchg (& ctx -> error , 0 );
362+ nfs_pageio_init_read (& pgio , inode , false,
364363 & nfs_async_read_completion_ops );
365364
366- ret = readpage_async_filler ( & desc , folio );
365+ ret = nfs_read_add_folio ( & pgio , ctx , folio );
367366 if (ret )
368367 goto out ;
369368
370- nfs_pageio_complete_read (& desc . pgio );
371- ret = desc . pgio .pg_error < 0 ? desc . pgio .pg_error : 0 ;
369+ nfs_pageio_complete_read (& pgio );
370+ ret = pgio .pg_error < 0 ? pgio .pg_error : 0 ;
372371 if (!ret ) {
373372 ret = folio_wait_locked_killable (folio );
374373 if (!folio_test_uptodate (folio ) && !ret )
375- ret = xchg (& desc . ctx -> error , 0 );
374+ ret = xchg (& ctx -> error , 0 );
376375 }
377376out :
378- put_nfs_open_context (desc . ctx );
377+ put_nfs_open_context (ctx );
379378 trace_nfs_aop_readpage_done (inode , folio , ret );
380379 return ret ;
381380out_unlock :
@@ -386,9 +385,10 @@ int nfs_read_folio(struct file *file, struct folio *folio)
386385
387386void nfs_readahead (struct readahead_control * ractl )
388387{
388+ struct nfs_pageio_descriptor pgio ;
389+ struct nfs_open_context * ctx ;
389390 unsigned int nr_pages = readahead_count (ractl );
390391 struct file * file = ractl -> file ;
391- struct nfs_readdesc desc ;
392392 struct inode * inode = ractl -> mapping -> host ;
393393 struct folio * folio ;
394394 int ret ;
@@ -403,24 +403,24 @@ void nfs_readahead(struct readahead_control *ractl)
403403
404404 if (file == NULL ) {
405405 ret = - EBADF ;
406- desc . ctx = nfs_find_open_context (inode , NULL , FMODE_READ );
407- if (desc . ctx == NULL )
406+ ctx = nfs_find_open_context (inode , NULL , FMODE_READ );
407+ if (ctx == NULL )
408408 goto out ;
409409 } else
410- desc . ctx = get_nfs_open_context (nfs_file_open_context (file ));
410+ ctx = get_nfs_open_context (nfs_file_open_context (file ));
411411
412- nfs_pageio_init_read (& desc . pgio , inode , false,
412+ nfs_pageio_init_read (& pgio , inode , false,
413413 & nfs_async_read_completion_ops );
414414
415415 while ((folio = readahead_folio (ractl )) != NULL ) {
416- ret = readpage_async_filler ( & desc , folio );
416+ ret = nfs_read_add_folio ( & pgio , ctx , folio );
417417 if (ret )
418418 break ;
419419 }
420420
421- nfs_pageio_complete_read (& desc . pgio );
421+ nfs_pageio_complete_read (& pgio );
422422
423- put_nfs_open_context (desc . ctx );
423+ put_nfs_open_context (ctx );
424424out :
425425 trace_nfs_aop_readahead_done (inode , nr_pages , ret );
426426}
0 commit comments