diff options
author | Jaegeuk Kim <jaegeuk@google.com> | 2022-05-28 00:26:37 -0700 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@google.com> | 2022-06-09 23:05:56 +0000 |
commit | 48d34d7c8a084dcdd3d2cd3d4f4ccf1734f0056c (patch) | |
tree | a07510f317b4b1c6cccfe6c65b343d63c4c47792 | |
parent | 477b9106d107e66d6a8a56aac5abec5ecd3025a2 (diff) | |
download | gs-48d34d7c8a084dcdd3d2cd3d4f4ccf1734f0056c.tar.gz |
scsi: ufs: exynos: disable FUA
With this, we can get better performance on O_DIRECT|O_DSYNC.
4 64 256 1024 2048
FUA_OFF 536.535 522.337 842.079 877.03 875.347
FUA 1031.06 1256.87 1075.17 1216.36 1028.24
-- FUA_OFF
f2fs_io-6604 [006] .... 35.714856: f2fs_datawrite_start: entry_name /test, offset 0, bytes 4096, cmdline f2fs_io, pid 6604, i_size 4096, ino 8308
f2fs_io-6604 [006] .n.. 35.714857: f2fs_direct_IO_enter: dev = (254,44), ino = 8308 pos = 0 len = 4096 ki_flags = 20002 ki_hint = 0 ki_ioprio = 0 rw = 1
f2fs_io-6604 [006] .... 35.714926: iomap_apply: dev 254:44 ino 0x2074 pos 0 length 4096 flags WRITE|DIRECT (0x11) ops f2fs_iomap_ops caller __iomap_dio_rw+0x250/0x534 actor iomap_dio_actor.f07a67ec145002f006d46ed4cbd93ed8.cfi_jt
f2fs_io-6604 [006] .... 35.714994: f2fs_map_blocks: dev = (254,44), ino = 8308, file offset = 0, start blkaddr = 0x258f73, len = 0x1, flags = 16, seg_type = 1, may_create = 1, multidevice = 0, create = 1, flag = 3, err = 0
f2fs_io-6604 [006] .N.. 35.715001: iomap_apply_dstmap: dev 254:44 ino 0x2074 bdev 254:44 addr 10082529280 offset 0 length 4096 type MAPPED flags MERGED
f2fs_io-6604 [006] .... 35.715056: block_bio_queue: 254,44 WS 19692440 + 8 [f2fs_io]
f2fs_io-6604 [006] .... 35.715111: block_bio_remap: 8,0 WS 19692440 + 8 <- (254,44) 19692440
f2fs_io-6604 [006] .... 35.715113: block_bio_remap: 8,0 WS 38759112 + 8 <- (259,15) 19692440
f2fs_io-6604 [006] .... 35.715149: block_bio_queue: 8,0 WS 38759112 + 8 [f2fs_io]
f2fs_io-6604 [006] ...1 35.715235: block_rq_issue: 8,0 WS 4096 () 38759112 + 8 [f2fs_io]
f2fs_io-6604 [006] .N.1 35.715272: ufshcd_command: send_req: 14700000.ufs: tag: 20, DB: 0x0, size: 4096, IS: 0, LBA: 38759112, opcode: 0x2a (WRITE_10), group_id: 0x11
f2fs_io-6604 [006] .... 35.715361: f2fs_sync_file_enter: dev = (254,44), ino = 8308, pino = 3, i_mode = 0x81ed, i_size = 4096, i_nlink = 1, i_blocks = 8, i_advise = 0x0
f2fs_io-6604 [006] .... 35.715400: f2fs_sync_file_exit: dev = (254,44), ino = 8308, cp_reason: no needed, datasync = 1, ret = 0
f2fs_io-6604 [006] .N.. 35.715408: f2fs_direct_IO_exit: dev = (254,44), ino = 8308 pos = 0 len = 4096 rw = 1 ret = 4096
f2fs_io-6604 [006] .... 35.715448: f2fs_datawrite_end: ino 8308, offset 0, bytes 4096
-- FUA
f2fs_io-7124 [001] .... 274.221659: f2fs_datawrite_start: entry_name /test, offset 0, bytes 4096, cmdline f2fs_io, pid 7124, i_size 2097152, ino 8308
f2fs_io-7124 [001] .... 274.221698: f2fs_direct_IO_enter: dev = (254,44), ino = 8308 pos = 0 len = 4096 ki_flags = 20002 ki_hint = 0 ki_ioprio = 0 rw = 1
f2fs_io-7124 [001] .... 274.221705: iomap_apply: dev 254:44 ino 0x2074 pos 0 length 4096 flags WRITE|DIRECT (0x11) ops f2fs_iomap_ops caller __iomap_dio_rw+0x250/0x534 actor iomap_dio_actor.f07a67ec145002f006d46ed4cbd93ed8.cfi_jt
f2fs_io-7124 [001] .... 274.221725: f2fs_map_blocks: dev = (254,44), ino = 8308, file offset = 0, start blkaddr = 0x2594ed, len = 0x1, flags = 16, seg_type = 1, may_create = 1, multidevice = 0, create = 1, flag = 3, err = 0
f2fs_io-7124 [001] .... 274.221728: iomap_apply_dstmap: dev 254:44 ino 0x2074 bdev 254:44 addr 10088271872 offset 0 length 4096 type MAPPED flags MERGED
f2fs_io-7124 [004] .... 274.222307: block_bio_queue: 254,44 WFS 19703656 + 8 [f2fs_io]
f2fs_io-7124 [004] .... 274.222383: block_bio_remap: 8,0 WFS 19703656 + 8 <- (254,44) 19703656
f2fs_io-7124 [004] .... 274.222385: block_bio_remap: 8,0 WFS 38770328 + 8 <- (259,15) 19703656
f2fs_io-7124 [004] .... 274.222401: block_bio_queue: 8,0 WFS 38770328 + 8 [f2fs_io]
<...>-278 [004] .... 274.222435: block_rq_issue: 8,0 WFS 4096 () 38770328 + 8 [kworker/4:1H]
<...>-278 [004] .... 274.222468: ufshcd_command: send_req: 14700000.ufs: tag: 4, DB: 0x0, size: 4096, IS: 0, LBA: 38770328, opcode: 0x2a (WRITE_10), group_id: 0x11
<idle>-0 [003] d.h1 274.222734: ufshcd_command: complete_rsp: 14700000.ufs: tag: 4, DB: 0x0, size: 4096, IS: 0, LBA: 38770328, opcode: 0x2a (WRITE_10), group_id: 0x11
<idle>-0 [004] ..s1 274.223083: block_rq_complete: 8,0 WFS () 38770328 + 8 [0]
f2fs_io-7124 [004] .... 274.223127: f2fs_direct_IO_exit: dev = (254,44), ino = 8308 pos = 0 len = 4096 rw = 1 ret = 4096
f2fs_io-7124 [004] .... 274.223128: f2fs_datawrite_end: ino 8308, offset 0, bytes 4096
f2fs_io-7124 [004] .... 274.223129: f2fs_file_write_iter: dev = (254,44), ino = 8308, offset = 0, length = 4096, written(err) = 4096
Bug: 234498884
Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
Change-Id: I7fe72b60386083e0cf864eda56a0a6dc793b73f0
-rw-r--r-- | drivers/scsi/ufs/ufs-pixel.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/scsi/ufs/ufs-pixel.c b/drivers/scsi/ufs/ufs-pixel.c index 0dbd1ed4553c..cf3665912a28 100644 --- a/drivers/scsi/ufs/ufs-pixel.c +++ b/drivers/scsi/ufs/ufs-pixel.c @@ -1629,6 +1629,12 @@ static void pixel_ufs_update_sysfs(void *data, struct ufs_hba *hba) queue_work(system_highpri_wq, &ufs->update_sysfs_work); } +static void pixel_ufs_update_sdev(void *data, struct scsi_device *sdev) +{ + /* do not use slow FUA */ + sdev->broken_fua = 1; +} + void pixel_print_cmd_log(struct ufs_hba *hba) { struct exynos_ufs *ufs = to_exynos_ufs(hba); @@ -1695,6 +1701,11 @@ int pixel_init(struct ufs_hba *hba) if (ret) return ret; + ret = register_trace_android_vh_ufs_update_sdev( + pixel_ufs_update_sdev, NULL); + if (ret) + return ret; + pixel_ufs_init_cmd_log(hba); INIT_WORK(&ufs->update_sysfs_work, pixel_ufs_update_sysfs_work); |