From: lijiaming3 <lijiaming3@xxxxxxxxxx> Stoage devices have a long lifespan. Device performance over its lifespan is not constant and may deteriorate over time. To remedy this, JEDEC came up with the UFS File-Based-Optimization (FBO) extension (JC-64.1-22-67). The FBO feature improves this performance regression via physical defragmentation of the LBA ranges that are associated with specific files. This feature expects the following host-device dialog: 1) The host let the device know of lba range(s) of interest. Those ranges are typically associated with a specific file. One can obtain it from the iNode of the file and some offset calculations. 2) The host ask the device for the current physical fragmentation level of this file. 3) Should it requires, the host instruct the device to perform defragmentation. 4) Upon successful termination of the defragmentation phase, the host may ask for the new fragmentation level of the file. lijiaming3 (4): scsi:ufs:remove sanity check scsi:ufs:add File-Based Optimization descriptor scsi:ufs:add FBO module scsi:ufs:add fbo functionality Documentation/ABI/testing/sysfs-driver-ufs | 129 +++++ drivers/ufs/core/Kconfig | 12 + drivers/ufs/core/Makefile | 1 + drivers/ufs/core/ufs-sysfs.c | 26 ++ drivers/ufs/core/ufsfbo.c | 519 +++++++++++++++++++++ drivers/ufs/core/ufsfbo.h | 23 + drivers/ufs/core/ufshcd.c | 15 +- include/ufs/ufs.h | 16 + include/ufs/ufshcd.h | 1 + 9 files changed, 734 insertions(+), 8 deletions(-) create mode 100644 drivers/ufs/core/ufsfbo.c create mode 100644 drivers/ufs/core/ufsfbo.h -- 2.38.1