diff options
author | pjd <pjd@FreeBSD.org> | 2004-02-11 18:21:32 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2004-02-11 18:21:32 +0000 |
commit | c681583fbc8e0ff0d3f54a2ce41b3a5a14917315 (patch) | |
tree | ae4981c67b129f44f81748d7104bcfdf9166b968 /sys/geom | |
parent | 920753994a7214f33c6eb260960a56e05a24885e (diff) | |
download | FreeBSD-src-c681583fbc8e0ff0d3f54a2ce41b3a5a14917315.zip FreeBSD-src-c681583fbc8e0ff0d3f54a2ce41b3a5a14917315.tar.gz |
Added g_print_bio() function to print informations about given bio.
Approved by: phk, scottl (mentor)
Diffstat (limited to 'sys/geom')
-rw-r--r-- | sys/geom/geom.h | 1 | ||||
-rw-r--r-- | sys/geom/geom_io.c | 34 |
2 files changed, 35 insertions, 0 deletions
diff --git a/sys/geom/geom.h b/sys/geom/geom.h index 656f320..264c029 100644 --- a/sys/geom/geom.h +++ b/sys/geom/geom.h @@ -230,6 +230,7 @@ void g_io_request(struct bio *bp, struct g_consumer *cp); struct bio *g_new_bio(void); void * g_read_data(struct g_consumer *cp, off_t offset, off_t length, int *error); int g_write_data(struct g_consumer *cp, off_t offset, void *ptr, off_t length); +void g_print_bio(struct bio *bp); /* geom_kern.c / geom_kernsim.c */ diff --git a/sys/geom/geom_io.c b/sys/geom/geom_io.c index 28c3b32..507069b 100644 --- a/sys/geom/geom_io.c +++ b/sys/geom/geom_io.c @@ -457,3 +457,37 @@ g_write_data(struct g_consumer *cp, off_t offset, void *ptr, off_t length) g_destroy_bio(bp); return (error); } + +void +g_print_bio(struct bio *bp) +{ + const char *pname, *cmd = NULL; + + if (bp->bio_to != NULL) + pname = bp->bio_to->name; + else + pname = "[unknown]"; + + switch (bp->bio_cmd) { + case BIO_GETATTR: + cmd = "GETATTR"; + printf("%s[%s(attr=%s)]", pname, cmd, bp->bio_attribute); + return; + case BIO_READ: + cmd = "READ"; + case BIO_WRITE: + if (cmd == NULL) + cmd = "WRITE"; + case BIO_DELETE: + if (cmd == NULL) + cmd = "DELETE"; + printf("%s[%s(offset=%jd, length=%jd)]", pname, cmd, + (intmax_t)bp->bio_offset, (intmax_t)bp->bio_length); + return; + default: + cmd = "UNKNOWN"; + printf("%s[%s()]", pname, cmd); + return; + } + /* NOTREACHED */ +} |