Skip to content

Commit

Permalink
9p: clean up packet dump code
Browse files Browse the repository at this point in the history
Switch to generic kernel hexdump library and cleanup macros to
be more consistent with the way we do normal debug prints.

Signed-off-by: Eric Van Hensbergen <[email protected]>
  • Loading branch information
ericvh committed Jul 23, 2011
1 parent 2053d67 commit e660a82
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 46 deletions.
6 changes: 6 additions & 0 deletions include/net/9p/9p.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
* @P9_DEBUG_FID: fid allocation/deallocation tracking
* @P9_DEBUG_PKT: packet marshalling/unmarshalling
* @P9_DEBUG_FSC: FS-cache tracing
* @P9_DEBUG_VPKT: Verbose packet debugging (full packet dump)
*
* These flags are passed at mount time to turn on various levels of
* verbosity and tracing which will be output to the system logs.
Expand All @@ -57,6 +58,7 @@ enum p9_debug_flags {
P9_DEBUG_FID = (1<<9),
P9_DEBUG_PKT = (1<<10),
P9_DEBUG_FSC = (1<<11),
P9_DEBUG_VPKT = (1<<12),
};

#ifdef CONFIG_NET_9P_DEBUG
Expand All @@ -74,10 +76,14 @@ do { \
} \
} while (0)

#define P9_DUMP_PKT(way, pdu) p9pdu_dump(way, pdu)

#else
#define P9_DPRINTK(level, format, arg...) do { } while (0)
#define P9_DUMP_PKT(way, pdu) do { } while (0)
#endif


#define P9_EPRINTK(level, format, arg...) \
do { \
printk(level "9p: %s (%d): " \
Expand Down
39 changes: 20 additions & 19 deletions net/9p/client.c
Original file line number Diff line number Diff line change
Expand Up @@ -750,7 +750,7 @@ static int p9_client_version(struct p9_client *c)
err = p9pdu_readf(req->rc, c->proto_version, "ds", &msize, &version);
if (err) {
P9_DPRINTK(P9_DEBUG_9P, "version error %d\n", err);
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
goto error;
}

Expand Down Expand Up @@ -912,7 +912,7 @@ struct p9_fid *p9_client_attach(struct p9_client *clnt, struct p9_fid *afid,

err = p9pdu_readf(req->rc, clnt->proto_version, "Q", &qid);
if (err) {
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
p9_free_req(clnt, req);
goto error;
}
Expand Down Expand Up @@ -972,7 +972,7 @@ struct p9_fid *p9_client_walk(struct p9_fid *oldfid, uint16_t nwname,

err = p9pdu_readf(req->rc, clnt->proto_version, "R", &nwqids, &wqids);
if (err) {
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
p9_free_req(clnt, req);
goto clunk_fid;
}
Expand Down Expand Up @@ -1039,7 +1039,7 @@ int p9_client_open(struct p9_fid *fid, int mode)

err = p9pdu_readf(req->rc, clnt->proto_version, "Qd", &qid, &iounit);
if (err) {
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
goto free_and_error;
}

Expand Down Expand Up @@ -1082,7 +1082,7 @@ int p9_client_create_dotl(struct p9_fid *ofid, char *name, u32 flags, u32 mode,

err = p9pdu_readf(req->rc, clnt->proto_version, "Qd", qid, &iounit);
if (err) {
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
goto free_and_error;
}

Expand Down Expand Up @@ -1127,7 +1127,7 @@ int p9_client_fcreate(struct p9_fid *fid, char *name, u32 perm, int mode,

err = p9pdu_readf(req->rc, clnt->proto_version, "Qd", &qid, &iounit);
if (err) {
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
goto free_and_error;
}

Expand Down Expand Up @@ -1166,7 +1166,7 @@ int p9_client_symlink(struct p9_fid *dfid, char *name, char *symtgt, gid_t gid,

err = p9pdu_readf(req->rc, clnt->proto_version, "Q", qid);
if (err) {
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
goto free_and_error;
}

Expand Down Expand Up @@ -1319,11 +1319,12 @@ p9_client_read(struct p9_fid *fid, char *data, char __user *udata, u64 offset,

err = p9pdu_readf(req->rc, clnt->proto_version, "D", &count, &dataptr);
if (err) {
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
goto free_and_error;
}

P9_DPRINTK(P9_DEBUG_9P, "<<< RREAD count %d\n", count);
P9_DUMP_PKT(1, req->rc);

if (!req->tc->pbuf_size) {
if (data) {
Expand Down Expand Up @@ -1387,7 +1388,7 @@ p9_client_write(struct p9_fid *fid, char *data, const char __user *udata,

err = p9pdu_readf(req->rc, clnt->proto_version, "d", &count);
if (err) {
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
goto free_and_error;
}

Expand Down Expand Up @@ -1427,7 +1428,7 @@ struct p9_wstat *p9_client_stat(struct p9_fid *fid)

err = p9pdu_readf(req->rc, clnt->proto_version, "wS", &ignored, ret);
if (err) {
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
p9_free_req(clnt, req);
goto error;
}
Expand Down Expand Up @@ -1478,7 +1479,7 @@ struct p9_stat_dotl *p9_client_getattr_dotl(struct p9_fid *fid,

err = p9pdu_readf(req->rc, clnt->proto_version, "A", ret);
if (err) {
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
p9_free_req(clnt, req);
goto error;
}
Expand Down Expand Up @@ -1626,7 +1627,7 @@ int p9_client_statfs(struct p9_fid *fid, struct p9_rstatfs *sb)
&sb->bsize, &sb->blocks, &sb->bfree, &sb->bavail,
&sb->files, &sb->ffree, &sb->fsid, &sb->namelen);
if (err) {
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
p9_free_req(clnt, req);
goto error;
}
Expand Down Expand Up @@ -1702,7 +1703,7 @@ struct p9_fid *p9_client_xattrwalk(struct p9_fid *file_fid,
}
err = p9pdu_readf(req->rc, clnt->proto_version, "q", attr_size);
if (err) {
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
p9_free_req(clnt, req);
goto clunk_fid;
}
Expand Down Expand Up @@ -1781,7 +1782,7 @@ int p9_client_readdir(struct p9_fid *fid, char *data, u32 count, u64 offset)

err = p9pdu_readf(req->rc, clnt->proto_version, "D", &count, &dataptr);
if (err) {
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
goto free_and_error;
}

Expand Down Expand Up @@ -1818,7 +1819,7 @@ int p9_client_mknod_dotl(struct p9_fid *fid, char *name, int mode,

err = p9pdu_readf(req->rc, clnt->proto_version, "Q", qid);
if (err) {
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
goto error;
}
P9_DPRINTK(P9_DEBUG_9P, "<<< RMKNOD qid %x.%llx.%x\n", qid->type,
Expand Down Expand Up @@ -1849,7 +1850,7 @@ int p9_client_mkdir_dotl(struct p9_fid *fid, char *name, int mode,

err = p9pdu_readf(req->rc, clnt->proto_version, "Q", qid);
if (err) {
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
goto error;
}
P9_DPRINTK(P9_DEBUG_9P, "<<< RMKDIR qid %x.%llx.%x\n", qid->type,
Expand Down Expand Up @@ -1884,7 +1885,7 @@ int p9_client_lock_dotl(struct p9_fid *fid, struct p9_flock *flock, u8 *status)

err = p9pdu_readf(req->rc, clnt->proto_version, "b", status);
if (err) {
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
goto error;
}
P9_DPRINTK(P9_DEBUG_9P, "<<< RLOCK status %i\n", *status);
Expand Down Expand Up @@ -1917,7 +1918,7 @@ int p9_client_getlock_dotl(struct p9_fid *fid, struct p9_getlock *glock)
&glock->start, &glock->length, &glock->proc_id,
&glock->client_id);
if (err) {
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
goto error;
}
P9_DPRINTK(P9_DEBUG_9P, "<<< RGETLOCK type %i start %lld length %lld "
Expand Down Expand Up @@ -1945,7 +1946,7 @@ int p9_client_readlink(struct p9_fid *fid, char **target)

err = p9pdu_readf(req->rc, clnt->proto_version, "s", target);
if (err) {
p9pdu_dump(1, req->rc);
P9_DUMP_PKT(1, req->rc);
goto error;
}
P9_DPRINTK(P9_DEBUG_9P, "<<< RREADLINK target %s\n", *target);
Expand Down
44 changes: 17 additions & 27 deletions net/9p/protocol.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,30 +44,24 @@ p9pdu_writef(struct p9_fcall *pdu, int proto_version, const char *fmt, ...);
void
p9pdu_dump(int way, struct p9_fcall *pdu)
{
int i, n;
u8 *data = pdu->sdata;
int datalen = pdu->size;
char buf[255];
int buflen = 255;

i = n = 0;
if (datalen > (buflen-16))
datalen = buflen-16;
while (i < datalen) {
n += scnprintf(buf + n, buflen - n, "%02x ", data[i]);
if (i%4 == 3)
n += scnprintf(buf + n, buflen - n, " ");
if (i%32 == 31)
n += scnprintf(buf + n, buflen - n, "\n");

i++;
int len = pdu->size;

if ((p9_debug_level & P9_DEBUG_VPKT) != P9_DEBUG_VPKT) {
if ((p9_debug_level & P9_DEBUG_PKT) == P9_DEBUG_PKT) {
if (len > 32)
len = 32;
} else {
/* shouldn't happen */
return;
}
}
n += scnprintf(buf + n, buflen - n, "\n");

if (way)
P9_DPRINTK(P9_DEBUG_PKT, "[[[(%d) %s\n", datalen, buf);
print_hex_dump_bytes("[9P] ", DUMP_PREFIX_OFFSET, pdu->sdata,
len);
else
P9_DPRINTK(P9_DEBUG_PKT, "]]](%d) %s\n", datalen, buf);
print_hex_dump_bytes("]9P[ ", DUMP_PREFIX_OFFSET, pdu->sdata,
len);
}
#else
void
Expand Down Expand Up @@ -610,7 +604,7 @@ int p9stat_read(char *buf, int len, struct p9_wstat *st, int proto_version)
ret = p9pdu_readf(&fake_pdu, proto_version, "S", st);
if (ret) {
P9_DPRINTK(P9_DEBUG_9P, "<<< p9stat_read failed: %d\n", ret);
p9pdu_dump(1, &fake_pdu);
P9_DUMP_PKT(0, &fake_pdu);
}

return ret;
Expand All @@ -632,11 +626,7 @@ int p9pdu_finalize(struct p9_fcall *pdu)
err = p9pdu_writef(pdu, 0, "d", size);
pdu->size = size;

#ifdef CONFIG_NET_9P_DEBUG
if ((p9_debug_level & P9_DEBUG_PKT) == P9_DEBUG_PKT)
p9pdu_dump(0, pdu);
#endif

P9_DUMP_PKT(0, pdu);
P9_DPRINTK(P9_DEBUG_9P, ">>> size=%d type: %d tag: %d\n", pdu->size,
pdu->id, pdu->tag);

Expand Down Expand Up @@ -669,7 +659,7 @@ int p9dirent_read(char *buf, int len, struct p9_dirent *dirent,
&dirent->d_off, &dirent->d_type, &nameptr);
if (ret) {
P9_DPRINTK(P9_DEBUG_9P, "<<< p9dirent_read failed: %d\n", ret);
p9pdu_dump(1, &fake_pdu);
P9_DUMP_PKT(1, &fake_pdu);
goto out;
}

Expand Down

0 comments on commit e660a82

Please sign in to comment.