Ming, > What I meant is to use one totally ufshpb private command allocated > from private slab to replace the spawned request, which is sent to > ufshcd_queuecommand() directly, so forward progress is guaranteed if > the blk-mq request's tag can be reused for issuing this private > command. This approach takes a bit effort, but avoids tags > reservation. Yep, I was just noting that error handling was a better example than the ioctl given the context. > 1) how many queue depth for the hba? If it is small, even 1 reservation > can affect performance. Indeed. But there is no free lunch. > 2) how many inflight write buffer commands are to be supported? Or how > many is enough for obtaining expected performance? If the number is > big, reserved tags can't work. That really is something the UFS developers need to work out. I am not sure whether permanently pinning down memory is a bigger problem than queue tags being a finite resource. -- Martin K. Petersen Oracle Linux Engineering