From 0607decdca51ee33c2caae288a44a82455149b51 Mon Sep 17 00:00:00 2001 From: Andy Grover Date: Thu, 16 May 2013 10:40:57 -0700 Subject: [PATCH] target: Simplify metadata handling when clearing aptpl metadata Simpler to just set buf in update_and_write_aptpl(), rather than passing down to ____core_scsi3_update_aptpl_buf(). Signed-off-by: Andy Grover Signed-off-by: Nicholas Bellinger --- drivers/target/target_core_pr.c | 39 ++++++++------------------------- 1 file changed, 9 insertions(+), 30 deletions(-) diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c index c797e79dc5c1..2e10014c8c33 100644 --- a/drivers/target/target_core_pr.c +++ b/drivers/target/target_core_pr.c @@ -1834,8 +1834,7 @@ out: static int __core_scsi3_update_aptpl_buf( struct se_device *dev, unsigned char *buf, - u32 pr_aptpl_buf_len, - int clear_aptpl_metadata) + u32 pr_aptpl_buf_len) { struct se_lun *lun; struct se_portal_group *tpg; @@ -1845,14 +1844,7 @@ static int __core_scsi3_update_aptpl_buf( int reg_count = 0; memset(buf, 0, pr_aptpl_buf_len); - /* - * Called to clear metadata once APTPL has been deactivated. - */ - if (clear_aptpl_metadata) { - snprintf(buf, pr_aptpl_buf_len, - "No Registrations or Reservations\n"); - return 0; - } + /* * Walk the registration list.. */ @@ -1937,14 +1929,12 @@ 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, - int clear_aptpl_metadata) + 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, - clear_aptpl_metadata); + ret = __core_scsi3_update_aptpl_buf(dev, buf, pr_aptpl_buf_len); spin_unlock(&dev->dev_reservation_lock); return ret; @@ -1997,32 +1987,21 @@ core_scsi3_update_and_write_aptpl(struct se_device *dev, unsigned char *in_buf, u32 in_pr_aptpl_buf_len) { unsigned char null_buf[64], *buf; - u32 pr_aptpl_buf_len; - int clear_aptpl_metadata = 0; int ret; /* * Can be called with a NULL pointer from PROUT service action CLEAR */ if (!in_buf) { - memset(null_buf, 0, 64); - buf = &null_buf[0]; - /* - * This will clear the APTPL metadata to: - * "No Registrations or Reservations" status - */ - pr_aptpl_buf_len = 64; - clear_aptpl_metadata = 1; + snprintf(null_buf, 64, "No Registrations or Reservations\n"); + buf = null_buf; } else { + ret = core_scsi3_update_aptpl_buf(dev, in_buf, in_pr_aptpl_buf_len); + if (ret != 0) + return ret; buf = in_buf; - pr_aptpl_buf_len = in_pr_aptpl_buf_len; } - ret = core_scsi3_update_aptpl_buf(dev, buf, pr_aptpl_buf_len, - clear_aptpl_metadata); - if (ret != 0) - return ret; - /* * __core_scsi3_write_aptpl_to_file() will call strlen() * on the passed buf to determine pr_aptpl_buf_len.