Re: [PATCH] IB/iser: Prevent invalidating wrong MR

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Dec 19, 2023 at 09:23:11AM +0200, Sergey Gorenko wrote:
> The iser_reg_resources structure has two pointers to MR but only one
> mr_valid field. The implementation assumes that we use only *sig_mr when
> pi_enable is true. Otherwise, we use only *mr. However, it is only
> sometimes correct. Read commands without protection information occur
> even when pi_enble is true. For example, the following SCSI commands
> have a Data-In buffer but never have protection information: READ
> CAPACITY (16), INQUIRY, MODE SENSE(6), MAINTENANCE IN. So, we use
> *sig_mr for some SCSI commands and *mr for the other SCSI commands.
> 
> In most cases, it works fine because the remote invalidation is applied.
> However, there are two cases when the remote invalidation is not
> applicable.
>  1. Small write commands when all data is sent as an immediate.
>  2. The target does not support the remote invalidation feature.
> 
> The lazy invalidation is used if the remote invalidation is impossible.
> Since, at the lazy invalidation, we always invalidate the MR we want to
> use, the wrong MR may be invalidated.
> 
> To fix the issue, we need a field per MR that indicates the MR needs
> invalidation. Since the ib_mr structure already has such a field, let's
> use ib_mr.need_inval instead of iser_reg_resources.mr_valid.
> 
> Fixes: b76a439982f8 ("IB/iser: Use IB_WR_REG_MR_INTEGRITY for PI handover")
> Acked-by: Max Gurtovoy <mgurtovoy@xxxxxxxxxx>
> Signed-off-by: Sergey Gorenko <sergeygo@xxxxxxxxxx>
> ---
>  drivers/infiniband/ulp/iser/iscsi_iser.h     | 2 --
>  drivers/infiniband/ulp/iser/iser_initiator.c | 5 ++++-
>  drivers/infiniband/ulp/iser/iser_memory.c    | 8 ++++----
>  drivers/infiniband/ulp/iser/iser_verbs.c     | 1 -
>  4 files changed, 8 insertions(+), 8 deletions(-)

Applied to for-next, thanks

Jason




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux