cs.c: install format specifier for %F
authorRonald G. Minnich <rminnich@gmail.com>
Thu, 25 Sep 2014 03:06:29 +0000 (03:06 +0000)
committerRonald G. Minnich <rminnich@gmail.com>
Thu, 25 Sep 2014 03:08:27 +0000 (03:08 +0000)
This makes the debug output usable:
CS:Twalk tag 1d fid 21 newfid 24 nwname 1 0:cs CS:Rwalk tag 1d nwqid 1d 0:(0000000000000001x 2d )  22CS:Job done
CS:Topen tag 1d fid 24d mode 2CS:Ropen tag 1d qid (0000000000000001x 2d ) iounit 0d  24CS:Job done
CS:Twrite tag 1d fid 24 offset 0 count 17d 'tcp!localhost!ssh'CS:write tcp!localhost!sshCS:Rwrite tag 1d count 17d 11CS:Job done
CS:Tread tag 1d fid 24 offset 0 count 127dCS:Rread tag 1d count 27d '/net/tcp/clone 127.0.0.1!22' 38CS:Job done
CS:Tread tag 1d fid 24 offset 27 count 127dCS:Rread tag 1d count 0d <no data> 11CS:Job done
CS:Tclunk tag 1d fid 24dCS:Rclunk tag 1d 7CS:Job done

This shows where we could make things better: an addition to the protocol, namely, Treadfile, would reduce this overhead
from 6 packets to 1.

And if we could make that a top-level system call, well ...

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
tests/cs.c

index 9bd58ae..5e67434 100644 (file)
@@ -251,6 +251,7 @@ main(int argc, char *argv[])
        argv0 = argv[0];
        justsetname = 0;
        setnetmtpt(mntpt, sizeof(mntpt), NULL);
+       register_printf_specifier('F', printf_fcall, printf_fcall_info);
        ext[0] = 0;
        argc--, argv++;
        while (argc && **argv == '-'){
@@ -518,6 +519,8 @@ io(void)
                        error(1, 0, "%s: %r","mount read");
                job = newjob();
                if(convM2S(mdata, n, &job->request) != n){
+                       fprintf(stderr, "convM2S went south: format error %ux %ux %ux %ux %ux",
+                               mdata[0], mdata[1], mdata[2], mdata[3], mdata[4]);
                        error(1, 0, "format error %ux %ux %ux %ux %ux",
                                mdata[0], mdata[1], mdata[2], mdata[3], mdata[4]);
                        freejob(job);