From 98658e06f56ea8343243484a05ccfe26a53e43e1 Mon Sep 17 00:00:00 2001 From: Boaz Harrosh Date: Tue, 19 Oct 2010 14:20:31 +0200 Subject: [PATCH] --- yaml --- r: 221507 b: refs/heads/master c: ec6a0a41b57feb54b3830918a8fb07147c2ee778 h: refs/heads/master i: 221505: 0f6a0a5d29b6719ca21ce6785de7123c1d232aaa 221503: 7c5164418e46e0c83a9e32b2ef056606c5a235c1 v: v3 --- [refs] | 2 +- trunk/drivers/scsi/osd/osd_initiator.c | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index ca1c9bbd99e2..d6d9e9b3ce41 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 391cbf46f25ccbeb1a0ffd76c76765ffc9a6fb22 +refs/heads/master: ec6a0a41b57feb54b3830918a8fb07147c2ee778 diff --git a/trunk/drivers/scsi/osd/osd_initiator.c b/trunk/drivers/scsi/osd/osd_initiator.c index e88bbdde49c5..771ab121acc7 100644 --- a/trunk/drivers/scsi/osd/osd_initiator.c +++ b/trunk/drivers/scsi/osd/osd_initiator.c @@ -1218,17 +1218,18 @@ int osd_req_add_get_attr_page(struct osd_request *or, or->get_attr.buff = attar_page; or->get_attr.total_bytes = max_page_len; - or->set_attr.buff = set_one_attr->val_ptr; - or->set_attr.total_bytes = set_one_attr->len; - cdbh->attrs_page.get_attr_page = cpu_to_be32(page_id); cdbh->attrs_page.get_attr_alloc_length = cpu_to_be32(max_page_len); - /* ocdb->attrs_page.get_attr_offset; */ + + if (!set_one_attr || !set_one_attr->attr_page) + return 0; /* The set is optional */ + + or->set_attr.buff = set_one_attr->val_ptr; + or->set_attr.total_bytes = set_one_attr->len; cdbh->attrs_page.set_attr_page = cpu_to_be32(set_one_attr->attr_page); cdbh->attrs_page.set_attr_id = cpu_to_be32(set_one_attr->attr_id); cdbh->attrs_page.set_attr_length = cpu_to_be32(set_one_attr->len); - /* ocdb->attrs_page.set_attr_offset; */ return 0; } EXPORT_SYMBOL(osd_req_add_get_attr_page); @@ -1248,11 +1249,14 @@ static int _osd_req_finalize_attr_page(struct osd_request *or) if (ret) return ret; + if (or->set_attr.total_bytes == 0) + return 0; + /* set one value */ cdbh->attrs_page.set_attr_offset = osd_req_encode_offset(or, or->out.total_bytes, &out_padding); - ret = _req_append_segment(or, out_padding, &or->enc_get_attr, NULL, + ret = _req_append_segment(or, out_padding, &or->set_attr, NULL, &or->out); return ret; }