@@ -57,10 +57,9 @@ static void mpage_end_io(struct bio *bio)
57
57
bio_put (bio );
58
58
}
59
59
60
- static struct bio * mpage_bio_submit (int op , int op_flags , struct bio * bio )
60
+ static struct bio * mpage_bio_submit (struct bio * bio )
61
61
{
62
62
bio -> bi_end_io = mpage_end_io ;
63
- bio_set_op_attrs (bio , op , op_flags );
64
63
guard_bio_eod (bio );
65
64
submit_bio (bio );
66
65
return NULL ;
@@ -146,16 +145,15 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args)
146
145
struct block_device * bdev = NULL ;
147
146
int length ;
148
147
int fully_mapped = 1 ;
149
- int op_flags ;
148
+ int op = REQ_OP_READ ;
150
149
unsigned nblocks ;
151
150
unsigned relative_block ;
152
151
gfp_t gfp ;
153
152
154
153
if (args -> is_readahead ) {
155
- op_flags = REQ_RAHEAD ;
154
+ op | = REQ_RAHEAD ;
156
155
gfp = readahead_gfp_mask (page -> mapping );
157
156
} else {
158
- op_flags = 0 ;
159
157
gfp = mapping_gfp_constraint (page -> mapping , GFP_KERNEL );
160
158
}
161
159
@@ -264,7 +262,7 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args)
264
262
* This page will go to BIO. Do we need to send this BIO off first?
265
263
*/
266
264
if (args -> bio && (args -> last_block_in_bio != blocks [0 ] - 1 ))
267
- args -> bio = mpage_bio_submit (REQ_OP_READ , op_flags , args -> bio );
265
+ args -> bio = mpage_bio_submit (args -> bio );
268
266
269
267
alloc_new :
270
268
if (args -> bio == NULL ) {
@@ -273,7 +271,7 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args)
273
271
page ))
274
272
goto out ;
275
273
}
276
- args -> bio = bio_alloc (bdev , bio_max_segs (args -> nr_pages ), 0 ,
274
+ args -> bio = bio_alloc (bdev , bio_max_segs (args -> nr_pages ), op ,
277
275
gfp );
278
276
if (args -> bio == NULL )
279
277
goto confused ;
@@ -282,23 +280,23 @@ static struct bio *do_mpage_readpage(struct mpage_readpage_args *args)
282
280
283
281
length = first_hole << blkbits ;
284
282
if (bio_add_page (args -> bio , page , length , 0 ) < length ) {
285
- args -> bio = mpage_bio_submit (REQ_OP_READ , op_flags , args -> bio );
283
+ args -> bio = mpage_bio_submit (args -> bio );
286
284
goto alloc_new ;
287
285
}
288
286
289
287
relative_block = block_in_file - args -> first_logical_block ;
290
288
nblocks = map_bh -> b_size >> blkbits ;
291
289
if ((buffer_boundary (map_bh ) && relative_block == nblocks ) ||
292
290
(first_hole != blocks_per_page ))
293
- args -> bio = mpage_bio_submit (REQ_OP_READ , op_flags , args -> bio );
291
+ args -> bio = mpage_bio_submit (args -> bio );
294
292
else
295
293
args -> last_block_in_bio = blocks [blocks_per_page - 1 ];
296
294
out :
297
295
return args -> bio ;
298
296
299
297
confused :
300
298
if (args -> bio )
301
- args -> bio = mpage_bio_submit (REQ_OP_READ , op_flags , args -> bio );
299
+ args -> bio = mpage_bio_submit (args -> bio );
302
300
if (!PageUptodate (page ))
303
301
block_read_full_page (page , args -> get_block );
304
302
else
@@ -361,7 +359,7 @@ void mpage_readahead(struct readahead_control *rac, get_block_t get_block)
361
359
put_page (page );
362
360
}
363
361
if (args .bio )
364
- mpage_bio_submit (REQ_OP_READ , REQ_RAHEAD , args .bio );
362
+ mpage_bio_submit (args .bio );
365
363
}
366
364
EXPORT_SYMBOL (mpage_readahead );
367
365
@@ -378,7 +376,7 @@ int mpage_readpage(struct page *page, get_block_t get_block)
378
376
379
377
args .bio = do_mpage_readpage (& args );
380
378
if (args .bio )
381
- mpage_bio_submit (REQ_OP_READ , 0 , args .bio );
379
+ mpage_bio_submit (args .bio );
382
380
return 0 ;
383
381
}
384
382
EXPORT_SYMBOL (mpage_readpage );
@@ -469,7 +467,6 @@ static int __mpage_writepage(struct page *page, struct writeback_control *wbc,
469
467
struct buffer_head map_bh ;
470
468
loff_t i_size = i_size_read (inode );
471
469
int ret = 0 ;
472
- int op_flags = wbc_to_write_flags (wbc );
473
470
474
471
if (page_has_buffers (page )) {
475
472
struct buffer_head * head = page_buffers (page );
@@ -577,7 +574,7 @@ static int __mpage_writepage(struct page *page, struct writeback_control *wbc,
577
574
* This page will go to BIO. Do we need to send this BIO off first?
578
575
*/
579
576
if (bio && mpd -> last_block_in_bio != blocks [0 ] - 1 )
580
- bio = mpage_bio_submit (REQ_OP_WRITE , op_flags , bio );
577
+ bio = mpage_bio_submit (bio );
581
578
582
579
alloc_new :
583
580
if (bio == NULL ) {
@@ -586,9 +583,10 @@ static int __mpage_writepage(struct page *page, struct writeback_control *wbc,
586
583
page , wbc ))
587
584
goto out ;
588
585
}
589
- bio = bio_alloc (bdev , BIO_MAX_VECS , 0 , GFP_NOFS );
586
+ bio = bio_alloc (bdev , BIO_MAX_VECS ,
587
+ REQ_OP_WRITE | wbc_to_write_flags (wbc ),
588
+ GFP_NOFS );
590
589
bio -> bi_iter .bi_sector = blocks [0 ] << (blkbits - 9 );
591
-
592
590
wbc_init_bio (wbc , bio );
593
591
bio -> bi_write_hint = inode -> i_write_hint ;
594
592
}
@@ -601,7 +599,7 @@ static int __mpage_writepage(struct page *page, struct writeback_control *wbc,
601
599
wbc_account_cgroup_owner (wbc , page , PAGE_SIZE );
602
600
length = first_unmapped << blkbits ;
603
601
if (bio_add_page (bio , page , length , 0 ) < length ) {
604
- bio = mpage_bio_submit (REQ_OP_WRITE , op_flags , bio );
602
+ bio = mpage_bio_submit (bio );
605
603
goto alloc_new ;
606
604
}
607
605
@@ -611,7 +609,7 @@ static int __mpage_writepage(struct page *page, struct writeback_control *wbc,
611
609
set_page_writeback (page );
612
610
unlock_page (page );
613
611
if (boundary || (first_unmapped != blocks_per_page )) {
614
- bio = mpage_bio_submit (REQ_OP_WRITE , op_flags , bio );
612
+ bio = mpage_bio_submit (bio );
615
613
if (boundary_block ) {
616
614
write_boundary_block (boundary_bdev ,
617
615
boundary_block , 1 << blkbits );
@@ -623,7 +621,7 @@ static int __mpage_writepage(struct page *page, struct writeback_control *wbc,
623
621
624
622
confused :
625
623
if (bio )
626
- bio = mpage_bio_submit (REQ_OP_WRITE , op_flags , bio );
624
+ bio = mpage_bio_submit (bio );
627
625
628
626
if (mpd -> use_writepage ) {
629
627
ret = mapping -> a_ops -> writepage (page , wbc );
@@ -679,11 +677,8 @@ mpage_writepages(struct address_space *mapping,
679
677
};
680
678
681
679
ret = write_cache_pages (mapping , wbc , __mpage_writepage , & mpd );
682
- if (mpd .bio ) {
683
- int op_flags = (wbc -> sync_mode == WB_SYNC_ALL ?
684
- REQ_SYNC : 0 );
685
- mpage_bio_submit (REQ_OP_WRITE , op_flags , mpd .bio );
686
- }
680
+ if (mpd .bio )
681
+ mpage_bio_submit (mpd .bio );
687
682
}
688
683
blk_finish_plug (& plug );
689
684
return ret ;
@@ -700,11 +695,8 @@ int mpage_writepage(struct page *page, get_block_t get_block,
700
695
.use_writepage = 0 ,
701
696
};
702
697
int ret = __mpage_writepage (page , wbc , & mpd );
703
- if (mpd .bio ) {
704
- int op_flags = (wbc -> sync_mode == WB_SYNC_ALL ?
705
- REQ_SYNC : 0 );
706
- mpage_bio_submit (REQ_OP_WRITE , op_flags , mpd .bio );
707
- }
698
+ if (mpd .bio )
699
+ mpage_bio_submit (mpd .bio );
708
700
return ret ;
709
701
}
710
702
EXPORT_SYMBOL (mpage_writepage );
0 commit comments