[RAMEN9610-8702][COMMON] f2fs: Set the bio REQ_NOENCRYPT flag
authorMichael Halcrow <mhalcrow@google.com>
Tue, 13 Jun 2017 20:59:40 +0000 (13:59 -0700)
committerhskang <hs1218.kang@samsung.com>
Thu, 22 Nov 2018 11:26:58 +0000 (20:26 +0900)
When lower layers such as dm-crypt observe the REQ_NOENCRYPT flag, it
helps the I/O stack avoid redundant encryption, improving performance
and power utilization.

Note that lower layers must be consistent in their observation of this
flag in order to avoid the possibility of data corruption.

Conflicts:
fs/f2fs/data.c

Signed-off-by: Michael Halcrow <mhalcrow@google.com>
Change-Id: Icf8bf3ae30395cf5428b2eae071d227e8ebe6e40
Signed-off-by: Boojin Kim <boojin.kim@samsung.com>
fs/f2fs/data.c

index c9db73e498a6a0b3ccff569bf8a04d1d20c09b1d..0f42c7ae35e6a152bd678dee4673f27ef37e7127 100644 (file)
@@ -452,6 +452,7 @@ int f2fs_submit_page_bio(struct f2fs_io_info *fio)
                bio_put(bio);
                return -EFAULT;
        }
+       fio->op_flags |= fio->encrypted_page ? REQ_NOENCRYPT : 0;
        bio_set_op_attrs(bio, fio->op, fio->op_flags);
 
        __submit_bio(fio->sbi, bio, fio->type);
@@ -490,6 +491,7 @@ next:
        verify_block_addr(fio, fio->new_blkaddr);
 
        bio_page = fio->encrypted_page ? fio->encrypted_page : fio->page;
+       fio->op_flags |= fio->encrypted_page ? REQ_NOENCRYPT : 0;
 
        /* set submitted = true as a return value */
        fio->submitted = true;
@@ -560,6 +562,10 @@ static struct bio *f2fs_grab_read_bio(struct inode *inode, block_t blkaddr,
                ctx->bio = bio;
                ctx->enabled_steps = post_read_steps;
                bio->bi_private = ctx;
+               bio_set_op_attrs(bio, REQ_OP_READ,
+                       (f2fs_encrypted_inode(inode) ?
+                        REQ_NOENCRYPT :
+                        0));
 
                /* wait the page to be moved by cleaning */
                f2fs_wait_on_block_writeback(sbi, blkaddr);