OSDN Git Service

target/file: Fix UNMAP with DIF protection support
authorAkinobu Mita <akinobu.mita@gmail.com>
Mon, 13 Apr 2015 14:21:58 +0000 (23:21 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 6 May 2015 20:03:53 +0000 (22:03 +0200)
commit1d6b56f309d72a9ce2be3129f41c4a1138693091
treef4a374adfe9c275e73f421c5f32e894590a2bff3
parent54afccf4a4f42da1ef3eca9b56ed8dd25a8d7f1c
target/file: Fix UNMAP with DIF protection support

commit 64d240b721b21e266ffde645ec965c3b6d1c551f upstream.

When UNMAP command is issued with DIF protection support enabled,
the protection info for the unmapped region is remain unchanged.
So READ command for the region causes data integrity failure.

This fixes it by invalidating protection info for the unmapped region
by filling with 0xff pattern.  This change also adds helper function
fd_do_prot_fill() in order to reduce code duplication with existing
fd_format_prot().

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Reviewed-by: Sagi Grimberg <sagig@mellanox.com>
Reviewed-by: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/target/target_core_file.c