diff options
| author | Alex Elder <elder@dreamhost.com> | 2012-11-01 11:17:15 -0400 |
|---|---|---|
| committer | Alex Elder <elder@inktank.com> | 2013-01-17 15:09:29 -0500 |
| commit | 06ecc6cbf7a60cd5abd9fd2bda8ae69b395c2be3 (patch) | |
| tree | 610f63f8ac47f0ce6e33fed2b784e5b259515ea6 /drivers/block/rbd.c | |
| parent | dd5f049dbdf973d9bceebef1fd73647a5ede6732 (diff) | |
rbd: define and use rbd_warn()
Define a new function rbd_warn() that produces a boilerplate warning
message, identifying in the resulting message the affected rbd
device in the best way available. Use it in a few places that now
use pr_warning().
Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Diffstat (limited to 'drivers/block/rbd.c')
| -rw-r--r-- | drivers/block/rbd.c | 43 |
1 files changed, 33 insertions, 10 deletions
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index d97611e2b4ee..635b81d0ebdb 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c | |||
| @@ -294,6 +294,33 @@ static struct device rbd_root_dev = { | |||
| 294 | .release = rbd_root_dev_release, | 294 | .release = rbd_root_dev_release, |
| 295 | }; | 295 | }; |
| 296 | 296 | ||
| 297 | static __printf(2, 3) | ||
| 298 | void rbd_warn(struct rbd_device *rbd_dev, const char *fmt, ...) | ||
| 299 | { | ||
| 300 | struct va_format vaf; | ||
| 301 | va_list args; | ||
| 302 | |||
| 303 | va_start(args, fmt); | ||
| 304 | vaf.fmt = fmt; | ||
| 305 | vaf.va = &args; | ||
| 306 | |||
| 307 | if (!rbd_dev) | ||
| 308 | printk(KERN_WARNING "%s: %pV\n", RBD_DRV_NAME, &vaf); | ||
| 309 | else if (rbd_dev->disk) | ||
| 310 | printk(KERN_WARNING "%s: %s: %pV\n", | ||
| 311 | RBD_DRV_NAME, rbd_dev->disk->disk_name, &vaf); | ||
| 312 | else if (rbd_dev->spec && rbd_dev->spec->image_name) | ||
| 313 | printk(KERN_WARNING "%s: image %s: %pV\n", | ||
| 314 | RBD_DRV_NAME, rbd_dev->spec->image_name, &vaf); | ||
| 315 | else if (rbd_dev->spec && rbd_dev->spec->image_id) | ||
| 316 | printk(KERN_WARNING "%s: id %s: %pV\n", | ||
| 317 | RBD_DRV_NAME, rbd_dev->spec->image_id, &vaf); | ||
| 318 | else /* punt */ | ||
| 319 | printk(KERN_WARNING "%s: rbd_dev %p: %pV\n", | ||
| 320 | RBD_DRV_NAME, rbd_dev, &vaf); | ||
| 321 | va_end(args); | ||
| 322 | } | ||
| 323 | |||
| 297 | #ifdef RBD_DEBUG | 324 | #ifdef RBD_DEBUG |
| 298 | #define rbd_assert(expr) \ | 325 | #define rbd_assert(expr) \ |
| 299 | if (unlikely(!(expr))) { \ | 326 | if (unlikely(!(expr))) { \ |
| @@ -1403,8 +1430,8 @@ static void rbd_watch_cb(u64 ver, u64 notify_id, u8 opcode, void *data) | |||
| 1403 | (unsigned int) opcode); | 1430 | (unsigned int) opcode); |
| 1404 | rc = rbd_dev_refresh(rbd_dev, &hver); | 1431 | rc = rbd_dev_refresh(rbd_dev, &hver); |
| 1405 | if (rc) | 1432 | if (rc) |
| 1406 | pr_warning(RBD_DRV_NAME "%d got notification but failed to " | 1433 | rbd_warn(rbd_dev, "got notification but failed to " |
| 1407 | " update snaps: %d\n", rbd_dev->major, rc); | 1434 | " update snaps: %d\n", rc); |
| 1408 | 1435 | ||
| 1409 | rbd_req_sync_notify_ack(rbd_dev, hver, notify_id); | 1436 | rbd_req_sync_notify_ack(rbd_dev, hver, notify_id); |
| 1410 | } | 1437 | } |
| @@ -1767,15 +1794,13 @@ rbd_dev_v1_header_read(struct rbd_device *rbd_dev, u64 *version) | |||
| 1767 | goto out_err; | 1794 | goto out_err; |
| 1768 | if (WARN_ON((size_t) ret < size)) { | 1795 | if (WARN_ON((size_t) ret < size)) { |
| 1769 | ret = -ENXIO; | 1796 | ret = -ENXIO; |
| 1770 | pr_warning("short header read for image %s" | 1797 | rbd_warn(rbd_dev, "short header read (want %zd got %d)", |
| 1771 | " (want %zd got %d)\n", | 1798 | size, ret); |
| 1772 | rbd_dev->spec->image_name, size, ret); | ||
| 1773 | goto out_err; | 1799 | goto out_err; |
| 1774 | } | 1800 | } |
| 1775 | if (!rbd_dev_ondisk_valid(ondisk)) { | 1801 | if (!rbd_dev_ondisk_valid(ondisk)) { |
| 1776 | ret = -ENXIO; | 1802 | ret = -ENXIO; |
| 1777 | pr_warning("invalid header for image %s\n", | 1803 | rbd_warn(rbd_dev, "invalid header"); |
| 1778 | rbd_dev->spec->image_name); | ||
| 1779 | goto out_err; | 1804 | goto out_err; |
| 1780 | } | 1805 | } |
| 1781 | 1806 | ||
| @@ -2630,9 +2655,7 @@ static int rbd_dev_probe_update_spec(struct rbd_device *rbd_dev) | |||
| 2630 | if (name) | 2655 | if (name) |
| 2631 | rbd_dev->spec->image_name = (char *) name; | 2656 | rbd_dev->spec->image_name = (char *) name; |
| 2632 | else | 2657 | else |
| 2633 | pr_warning(RBD_DRV_NAME "%d " | 2658 | rbd_warn(rbd_dev, "unable to get image name"); |
| 2634 | "unable to get image name for image id %s\n", | ||
| 2635 | rbd_dev->major, rbd_dev->spec->image_id); | ||
| 2636 | 2659 | ||
| 2637 | /* Look up the snapshot name. */ | 2660 | /* Look up the snapshot name. */ |
| 2638 | 2661 | ||
