9ns: Add #gtfs
[akaros.git] / kern / src / ns / dev.c
index 50cab9b..f041e67 100644 (file)
@@ -26,8 +26,6 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  * SOFTWARE. */
 
-#include <vfs.h>
-#include <kfs.h>
 #include <slab.h>
 #include <kmalloc.h>
 #include <kref.h>
@@ -270,14 +268,10 @@ Accept:
                                        printd("DEVWALK -1, i was %d, want path %p\n", i,
                                                   c->qid.path);
 Notfound:
-                                       if (j == 0)
-                                               error(ENOENT, "could not find name %s, dev %s", n,
+                                       set_error(ENOENT, "could not find name %s, dev %s", n,
                                                      c->type == -1 ? "no dev" : devtab[c->type].name);
-                                       /* TODO: I think we don't need to just set_error here.  I
-                                        * got this once when hacking on namec/walk and didn't
-                                        * set_error() in an error case.  This was for symlinks on
-                                        * #kfs bound on #root. */
-                                       set_error(ENOENT, "tell brho you saw this in an error");
+                                       if (j == 0)
+                                               error_jmp();
                                        goto Done;
                                case 0:
                                        printd("DEVWALK continue, i was %d\n", i);
@@ -308,6 +302,9 @@ Done:
        } else if (wq->clone) {
                /* attach cloned channel to same device */
                wq->clone->type = c->type;
+       } else {
+               /* Not sure this is possible, would like to know. */
+               warn_once("had enough names, but still no wq->clone");
        }
        return wq;
 }
@@ -324,9 +321,8 @@ size_t dev_make_stat(struct chan *c, struct dir *dir, uint8_t *dp, size_t n)
        return n;
 }
 
-int
-devstat(struct chan *c, uint8_t * db, int n,
-               struct dirtab *tab, int ntab, Devgen * gen)
+size_t devstat(struct chan *c, uint8_t *db, size_t n, struct dirtab *tab,
+               int ntab, Devgen *gen)
 {
        int i;
        struct dir dir;
@@ -451,7 +447,7 @@ void devcreate(struct chan *c, char *unused_char_p_t, int unused_int,
        error(EPERM, ERROR_FIXME);
 }
 
-struct block *devbread(struct chan *c, long n, uint32_t offset)
+struct block *devbread(struct chan *c, size_t n, off64_t offset)
 {
        ERRSTACK(1);
        struct block *bp;
@@ -468,7 +464,7 @@ struct block *devbread(struct chan *c, long n, uint32_t offset)
        return bp;
 }
 
-long devbwrite(struct chan *c, struct block *bp, uint32_t offset)
+size_t devbwrite(struct chan *c, struct block *bp, off64_t offset)
 {
        ERRSTACK(1);
        long n;
@@ -489,7 +485,7 @@ void devremove(struct chan *c)
        error(EPERM, ERROR_FIXME);
 }
 
-int devwstat(struct chan *c, uint8_t * unused_uint8_p_t, int i)
+size_t devwstat(struct chan *c, uint8_t *unused_uint8_p_t, size_t i)
 {
        error(EPERM, ERROR_FIXME);
        return 0;