summaryrefslogtreecommitdiffstats
path: root/drivers/target
diff options
context:
space:
mode:
authorAndy Grover <agrover@redhat.com>2013-05-16 19:40:58 +0200
committerNicholas Bellinger <nab@linux-iscsi.org>2013-06-14 09:04:43 +0200
commit3c8a6228d078553e32bffc59ed180d01ab1d998a (patch)
treed5a7bbc0ae4171237ca4b9d9004eddf6a3536676 /drivers/target
parenttarget: Simplify metadata handling when clearing aptpl metadata (diff)
downloadlinux-3c8a6228d078553e32bffc59ed180d01ab1d998a.tar.xz
linux-3c8a6228d078553e32bffc59ed180d01ab1d998a.zip
target: Unify __core_scsi3_update_aptpl_buf and core_scsi3_update_aptpl_buf
The __ version is only ever called from the regular version, so just inline it. It's not too much more complex to handle both spinlocks in the same function. Signed-off-by: Andy Grover <agrover@redhat.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/target')
-rw-r--r--drivers/target/target_core_pr.c32
1 files changed, 10 insertions, 22 deletions
diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c
index 2e10014c8c33..548fc2a4a7bf 100644
--- a/drivers/target/target_core_pr.c
+++ b/drivers/target/target_core_pr.c
@@ -1828,10 +1828,7 @@ out:
return ret;
}
-/*
- * Called with struct se_device->dev_reservation_lock held
- */
-static int __core_scsi3_update_aptpl_buf(
+static int core_scsi3_update_aptpl_buf(
struct se_device *dev,
unsigned char *buf,
u32 pr_aptpl_buf_len)
@@ -1842,13 +1839,15 @@ static int __core_scsi3_update_aptpl_buf(
unsigned char tmp[512], isid_buf[32];
ssize_t len = 0;
int reg_count = 0;
+ int ret = 0;
memset(buf, 0, pr_aptpl_buf_len);
+ spin_lock(&dev->dev_reservation_lock);
+ spin_lock(&dev->t10_pr.registration_lock);
/*
* Walk the registration list..
*/
- spin_lock(&dev->t10_pr.registration_lock);
list_for_each_entry(pr_reg, &dev->t10_pr.registration_list,
pr_reg_list) {
@@ -1894,8 +1893,8 @@ static int __core_scsi3_update_aptpl_buf(
if ((len + strlen(tmp) >= pr_aptpl_buf_len)) {
pr_err("Unable to update renaming"
" APTPL metadata\n");
- spin_unlock(&dev->t10_pr.registration_lock);
- return -EMSGSIZE;
+ ret = -EMSGSIZE;
+ goto out;
}
len += sprintf(buf+len, "%s", tmp);
@@ -1912,29 +1911,18 @@ static int __core_scsi3_update_aptpl_buf(
if ((len + strlen(tmp) >= pr_aptpl_buf_len)) {
pr_err("Unable to update renaming"
" APTPL metadata\n");
- spin_unlock(&dev->t10_pr.registration_lock);
- return -EMSGSIZE;
+ ret = -EMSGSIZE;
+ goto out;
}
len += sprintf(buf+len, "%s", tmp);
reg_count++;
}
- spin_unlock(&dev->t10_pr.registration_lock);
if (!reg_count)
len += sprintf(buf+len, "No Registrations or Reservations");
- return 0;
-}
-
-static int core_scsi3_update_aptpl_buf(
- struct se_device *dev,
- unsigned char *buf,
- u32 pr_aptpl_buf_len)
-{
- int ret;
-
- spin_lock(&dev->dev_reservation_lock);
- ret = __core_scsi3_update_aptpl_buf(dev, buf, pr_aptpl_buf_len);
+out:
+ spin_unlock(&dev->t10_pr.registration_lock);
spin_unlock(&dev->dev_reservation_lock);
return ret;