summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaegeuk Kim <jaegeuk@google.com>2022-05-28 00:26:37 -0700
committerJaegeuk Kim <jaegeuk@google.com>2022-06-09 23:05:56 +0000
commit48d34d7c8a084dcdd3d2cd3d4f4ccf1734f0056c (patch)
treea07510f317b4b1c6cccfe6c65b343d63c4c47792
parent477b9106d107e66d6a8a56aac5abec5ecd3025a2 (diff)
downloadgs-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.c11
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);