From 40ec6f883f4b485275f0482e2cf9c82588c46827 Mon Sep 17 00:00:00 2001 From: Boaz Harrosh Date: Wed, 29 Sep 2010 14:33:26 +0200 Subject: [PATCH] {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 --- osd-target/osd-sense.c | 30 +++++++++++++++--------------- osd-target/target-sense.h | 39 ++++++++++++++++++++++++++++----------- 2 files changed, 43 insertions(+), 26 deletions(-) diff --git a/osd-target/osd-sense.c b/osd-target/osd-sense.c index 77ce353..0bf3fa0 100644 --- a/osd-target/osd-sense.c +++ b/osd-target/osd-sense.c @@ -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; @@ -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; } @@ -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) @@ -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; @@ -82,14 +82,14 @@ 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; } @@ -97,14 +97,14 @@ int sense_basic_build(uint8_t *sense, uint8_t key, uint16_t code, /* * 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; } @@ -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; diff --git a/osd-target/target-sense.h b/osd-target/target-sense.h index 5c6a52d..6733c40 100644 --- a/osd-target/target-sense.h +++ b/osd-target/target-sense.h @@ -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)