|
@@ -30,7 +30,8 @@ struct hfsplus_wd {
|
|
|
* @sector: block to read or write, for blocks of HFSPLUS_SECTOR_SIZE bytes
|
|
|
* @buf: buffer for I/O
|
|
|
* @data: output pointer for location of requested data
|
|
|
- * @rw: direction of I/O
|
|
|
+ * @op: direction of I/O
|
|
|
+ * @op_flags: request op flags
|
|
|
*
|
|
|
* The unit of I/O is hfsplus_min_io_size(sb), which may be bigger than
|
|
|
* HFSPLUS_SECTOR_SIZE, and @buf must be sized accordingly. On reads
|
|
@@ -44,7 +45,7 @@ struct hfsplus_wd {
|
|
|
* will work correctly.
|
|
|
*/
|
|
|
int hfsplus_submit_bio(struct super_block *sb, sector_t sector,
|
|
|
- void *buf, void **data, int rw)
|
|
|
+ void *buf, void **data, int op, int op_flags)
|
|
|
{
|
|
|
struct bio *bio;
|
|
|
int ret = 0;
|
|
@@ -65,9 +66,9 @@ int hfsplus_submit_bio(struct super_block *sb, sector_t sector,
|
|
|
bio = bio_alloc(GFP_NOIO, 1);
|
|
|
bio->bi_iter.bi_sector = sector;
|
|
|
bio->bi_bdev = sb->s_bdev;
|
|
|
- bio->bi_rw = rw;
|
|
|
+ bio_set_op_attrs(bio, op, op_flags);
|
|
|
|
|
|
- if (!(rw & WRITE) && data)
|
|
|
+ if (op != WRITE && data)
|
|
|
*data = (u8 *)buf + offset;
|
|
|
|
|
|
while (io_size > 0) {
|
|
@@ -182,7 +183,7 @@ int hfsplus_read_wrapper(struct super_block *sb)
|
|
|
reread:
|
|
|
error = hfsplus_submit_bio(sb, part_start + HFSPLUS_VOLHEAD_SECTOR,
|
|
|
sbi->s_vhdr_buf, (void **)&sbi->s_vhdr,
|
|
|
- READ);
|
|
|
+ REQ_OP_READ, 0);
|
|
|
if (error)
|
|
|
goto out_free_backup_vhdr;
|
|
|
|
|
@@ -214,7 +215,8 @@ reread:
|
|
|
|
|
|
error = hfsplus_submit_bio(sb, part_start + part_size - 2,
|
|
|
sbi->s_backup_vhdr_buf,
|
|
|
- (void **)&sbi->s_backup_vhdr, READ);
|
|
|
+ (void **)&sbi->s_backup_vhdr, REQ_OP_READ,
|
|
|
+ 0);
|
|
|
if (error)
|
|
|
goto out_free_backup_vhdr;
|
|
|
|