Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
{REVIEWME} Add a File:lineno to osd_set_sense prints
It is easier to debug if we know what was the source line
of the error.

FIXME: Do it better so it goes a way in none-debug build

Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
  • Loading branch information
Boaz Harrosh committed Sep 29, 2010
1 parent 873bb15 commit 40ec6f8
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 26 deletions.
30 changes: 15 additions & 15 deletions osd-target/osd-sense.c
Expand Up @@ -27,8 +27,8 @@
* Descriptor format sense data. See spc3 p 31. Returns length of
* buffer used so far.
*/
int sense_header_build(uint8_t *data, int len, uint8_t key, uint16_t code,
uint8_t additional_len)
int _sense_header_build(uint8_t *data, int len, uint8_t key, uint16_t code,
uint8_t additional_len, const char *file, int line)
{
if (len < 8)
return 0;
Expand All @@ -37,8 +37,8 @@ int sense_header_build(uint8_t *data, int len, uint8_t key, uint16_t code,
data[2] = ASC(code);
data[3] = ASCQ(code);
data[7] = additional_len; /* additional length, beyond these 8 bytes */
osd_warning("sense_header_build key=%d code=%x additional_len=%d",
key, code, additional_len);
osd_warning("%s:%d: _sense_header_build key=%d code=%x additional_len=%d",
file, line, key, code, additional_len);

return 8;
}
Expand All @@ -48,7 +48,7 @@ int sense_header_build(uint8_t *data, int len, uint8_t key, uint16_t code,
* of these, then perhaps some others. This goes just beyond the 8
* byte sense header above. The length of this is 32. osd2r01 Sec 4.14.2.1
*/
int sense_info_build(uint8_t *data, int len, uint32_t not_init_funcs,
static int sense_info_build(uint8_t *data, int len, uint32_t not_init_funcs,
uint32_t completed_funcs, uint64_t pid, uint64_t oid)
{
if (len < 32)
Expand All @@ -66,7 +66,7 @@ int sense_info_build(uint8_t *data, int len, uint32_t not_init_funcs,
/*
* SPC-3 command-specific information sense data descriptor. p. 33.
*/
int sense_csi_build(uint8_t *data, int len, uint64_t csi)
static int sense_csi_build(uint8_t *data, int len, uint64_t csi)
{
if (len < 12)
return 0;
Expand All @@ -82,29 +82,29 @@ int sense_csi_build(uint8_t *data, int len, uint64_t csi)
* and just a header and basic info descriptor are required. Assumes full 252
* byte sense buffer.
*/
int sense_basic_build(uint8_t *sense, uint8_t key, uint16_t code,
uint64_t pid, uint64_t oid)
int _sense_basic_build(uint8_t *sense, uint8_t key, uint16_t code,
uint64_t pid, uint64_t oid, const char *file, int line)
{
uint8_t off = 0;
uint8_t len = OSD_MAX_SENSE;
uint32_t nifunc = 0x303010b0; /* non-reserved bits */

off = sense_header_build(sense+off, len-off, key, code, 32);
off = _sense_header_build(sense+off, len-off, key, code, 32, file, line);
off += sense_info_build(sense+off, len-off, nifunc, 0, pid, oid);
return off;
}

/*
* Same as basic_build? Delete one.
*/
int sense_build_sdd(uint8_t *sense, uint8_t key, uint16_t code,
uint64_t pid, uint64_t oid)
int _sense_build_sdd(uint8_t *sense, uint8_t key, uint16_t code,
uint64_t pid, uint64_t oid, const char *file, int line)
{
uint8_t off = 0;
uint8_t len = OSD_MAX_SENSE;
uint32_t nifunc = 0x303010b0; /* non-reserved bits */

off = sense_header_build(sense+off, len-off, key, code, 32);
off = _sense_header_build(sense+off, len-off, key, code, 32, file, line);
off += sense_info_build(sense+off, len-off, nifunc, 0, pid, oid);
return off;
}
Expand All @@ -113,14 +113,14 @@ int sense_build_sdd(uint8_t *sense, uint8_t key, uint16_t code,
* Sense header, info section with pid and oid, and "info" section
* with an arbitrary u64.
*/
int sense_build_sdd_csi(uint8_t *sense, uint8_t key, uint16_t code,
uint64_t pid, uint64_t oid, uint64_t csi)
int _sense_build_sdd_csi(uint8_t *sense, uint8_t key, uint16_t code,
uint64_t pid, uint64_t oid, uint64_t csi, const char *file, int line)
{
uint8_t off = 0;
uint8_t len = OSD_MAX_SENSE;
uint32_t nifunc = 0x303010b0; /* non-reserved bits */

off = sense_header_build(sense+off, len-off, key, code, 44);
off = _sense_header_build(sense+off, len-off, key, code, 44, file, line);
off += sense_info_build(sense+off, len-off, nifunc, 0, pid, oid);
off += sense_csi_build(sense+off, len-off, csi);
return off;
Expand Down
39 changes: 28 additions & 11 deletions osd-target/target-sense.h
Expand Up @@ -18,17 +18,34 @@
#ifndef __TARGET_SENSE_H
#define __TARGET_SENSE_H

int sense_header_build(uint8_t *data, int len, uint8_t key, uint16_t code,
uint8_t additional_len);
int sense_info_build(uint8_t *data, int len, uint32_t not_init_funcs,
uint32_t completed_funcs, uint64_t pid, uint64_t oid);
int sense_csi_build(uint8_t *data, int len, uint64_t csi);
int sense_basic_build(uint8_t *sense, uint8_t key, uint16_t code,
uint64_t pid, uint64_t oid);
int sense_build_sdd(uint8_t *sense, uint8_t key, uint16_t code,
uint64_t pid, uint64_t oid);
int sense_build_sdd_csi(uint8_t *sense, uint8_t key, uint16_t code,
uint64_t pid, uint64_t oid, uint64_t csi);
#define sense_header_build(data, len, key, code, additional_len) \
_sense_header_build(data, len, key, code, additional_len, __FILE__, __LINE__)
int _sense_header_build(uint8_t *data, int len, uint8_t key, uint16_t code,
uint8_t additional_len, const char *file, int line);

/*#define sense_info_build(data, len, not_init_funcs, completed_funcs, pid, oid) \
_sense_info_build(data, len, not_init_funcs, completed_funcs, pid, oid, __FILE__, __LINE__)
int _sense_info_build(uint8_t *data, int len, uint32_t not_init_funcs,
uint32_t completed_funcs, uint64_t pid, uint64_t oid, const char *file, int line);
*/
/*#define sense_csi_build(data, len, csi) \
_sense_csi_build(data, len, csi, __FILE__, __LINE__)
int _sense_csi_build(uint8_t *data, int len, uint64_t csi, const char *file, int line);
*/
#define sense_basic_build(sense, key, code, pid, oid) \
_sense_basic_build(sense, key, code, pid, oid, __FILE__, __LINE__)
int _sense_basic_build(uint8_t *sense, uint8_t key, uint16_t code,
uint64_t pid, uint64_t oid, const char *file, int line);

#define sense_build_sdd(sense, key, code, pid, oid) \
_sense_build_sdd(sense, key, code, pid, oid, __FILE__, __LINE__)
int _sense_build_sdd(uint8_t *sense, uint8_t key, uint16_t code,
uint64_t pid, uint64_t oid, const char *file, int line);

#define sense_build_sdd_csi(sense, key, code, pid, oid, csi) \
_sense_build_sdd_csi(sense, key, code, pid, oid, csi, __FILE__, __LINE__)
int _sense_build_sdd_csi(uint8_t *sense, uint8_t key, uint16_t code,
uint64_t pid, uint64_t oid, uint64_t csi, const char *file, int line);

#define ASC(x) ((x & 0xFF00) >> 8)
#define ASCQ(x) (x & 0x00FF)
Expand Down

0 comments on commit 40ec6f8

Please sign in to comment.