target: Fix PR_APTPL_BUF_LEN buffer size limitation
authorNicholas Bellinger <nab@linux-iscsi.org>
Thu, 12 Feb 2015 02:34:40 +0000 (18:34 -0800)
committerNicholas Bellinger <nab@linux-iscsi.org>
Thu, 12 Feb 2015 20:24:12 +0000 (12:24 -0800)
commitf161d4b44d7cc1dc66b53365215227db356378b1
treefc7a5791374458619b4cd7aa8de799927de84617
parent3fd7b60f2c7418239d586e359e0c6d8503e10646
target: Fix PR_APTPL_BUF_LEN buffer size limitation

This patch addresses the original PR_APTPL_BUF_LEN = 8k limitiation
for write-out of PR APTPL metadata that Martin has recently been
running into.

It changes core_scsi3_update_and_write_aptpl() to use vzalloc'ed
memory instead of kzalloc, and increases the default hardcoded
length to 256k.

It also adds logic in core_scsi3_update_and_write_aptpl() to double
the original length upon core_scsi3_update_aptpl_buf() failure, and
retries until the vzalloc'ed buffer is large enough to accommodate
the outgoing APTPL metadata.

Reported-by: Martin Svec <martin.svec@zoner.cz>
Cc: stable@vger.kernel.org
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_pr.c
include/target/target_core_base.h