9ns: Remove the old mnt cache
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 16 Mar 2018 19:59:19 +0000 (15:59 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 30 Apr 2018 18:33:44 +0000 (14:33 -0400)
Plan 9 had a write-through, data only cache.  It would speed up reads,
and it assumed no one else was writing to the server, which is fine.
Since it was write-through, it never needed to sync to the backend.

The tree_file version of #mnt will use the TFS for its caching, so we
don't need the older caching layer - which actually didn't do anything
on Akaros.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/drivers/dev/mnt.c
kern/include/ns.h
kern/src/ns/Kbuild
kern/src/ns/cache.c [deleted file]

index 8eea469..c301d62 100644 (file)
@@ -132,8 +132,6 @@ static void mntinit(void)
        //fmtinstall('F', fcallfmt);
 /*     fmtinstall('D', dirfmt); */
 /*     fmtinstall('M', dirmodefmt);  */
-
-       cinit();
 }
 
 /*
@@ -575,9 +573,6 @@ static struct chan *mntopencreate(int type, struct chan *c, char *name,
        poperror();
        mntfree(r);
 
-       if (c->flag & CCACHE)
-               copen(c);
-
        return c;
 }
 
@@ -692,34 +687,15 @@ static size_t mntwstat(struct chan *c, uint8_t *dp, size_t n)
 static size_t mntread(struct chan *c, void *buf, size_t n, off64_t off)
 {
        uint8_t *p, *e;
-       int nc, cache, isdir, dirlen;
+       int nc, dirlen;
        int numdirent = 0;
 
-       isdir = 0;
-       cache = c->flag & CCACHE;
-       if (c->qid.type & QTDIR) {
-               cache = 0;
-               isdir = 1;
-       }
 
        p = buf;
-       if (cache) {
-               nc = cread(c, buf, n, off);
-               if (nc > 0) {
-                       n -= nc;
-                       if (n == 0)
-                               return nc;
-                       p += nc;
-                       off += nc;
-               }
-               n = mntrdwr(Tread, c, p, n, off);
-               cupdate(c, p, n, off);
-               return n + nc;
-       }
 
        n = mntrdwr(Tread, c, buf, n, off);
 
-       if (isdir) {
+       if (c->qid.type & QTDIR) {
                for (e = &p[n]; p + BIT16SZ < e; p += dirlen) {
                        dirlen = BIT16SZ + GBIT16(p);
                        if (p + dirlen > e){
@@ -751,15 +727,11 @@ size_t mntrdwr(int type, struct chan *c, void *buf, size_t n, off64_t off)
        struct mnt *m;
        struct mntrpc *r;                       /* TO DO: volatile struct { Mntrpc *r; } r; */
        char *uba;
-       int cache;
        uint32_t cnt, nr, nreq;
 
        m = mntchk(c);
        uba = buf;
        cnt = 0;
-       cache = c->flag & CCACHE;
-       if (c->qid.type & QTDIR)
-               cache = 0;
        for (;;) {
                r = mntralloc(c, m->msize);
                if (waserror()) {
@@ -782,8 +754,6 @@ size_t mntrdwr(int type, struct chan *c, void *buf, size_t n, off64_t off)
 
                if (type == Tread)
                        r->b = bl2mem((uint8_t *) uba, r->b, nr);
-               else if (cache)
-                       cwrite(c, (uint8_t *) uba, nr, off);
 
                poperror();
                mntfree(r);
index 9bb03b9..188a165 100644 (file)
@@ -787,7 +787,6 @@ void chanfree(struct chan *);
 void chanrec(struct mnt *);
 void checkalarms(void);
 void checkb(struct block *, char *unused_char_p_t);
-void cinit(void);
 struct chan *cclone(struct chan *);
 void cclose(struct chan *);
 void closeegrp(struct egrp *);
@@ -802,19 +801,14 @@ struct block *concatblock(struct block *);
 struct block *linearizeblock(struct block *b);
 void confinit(void);
 void cons_add_char(char c);
-void copen(struct chan *);
 struct block *copyblock(struct block *b, int mem_flags);
-int cread(struct chan *, uint8_t * unused_uint8_p_t, int unused_int, int64_t);
 struct chan *cunique(struct chan *);
 struct chan *createdir(struct chan *, struct mhead *);
 void cunmount(struct chan *, struct chan *);
-void cupdate(struct chan *, uint8_t * unused_uint8_p_t, int unused_int,
-                        int64_t);
 void cursorenable(void);
 void cursordisable(void);
 int cursoron(int);
 void cursoroff(int);
-void cwrite(struct chan *, uint8_t * unused_uint8_p_t, int unused_int, int64_t);
 struct chan *devattach(const char *name, char *spec);
 struct block *devbread(struct chan *, size_t, off64_t);
 size_t devbwrite(struct chan *, struct block *, off64_t);
index 06b0bb7..b58d1d7 100644 (file)
@@ -1,5 +1,4 @@
 obj-y                                          += allocb.o
-obj-y                                          += cache.o
 obj-y                                          += chan.o
 obj-y                                          += cleanname.o
 obj-y                                          += convD2M.o
diff --git a/kern/src/ns/cache.c b/kern/src/ns/cache.c
deleted file mode 100644 (file)
index fb9eb7e..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Copyright © 1994-1999 Lucent Technologies Inc.  All rights reserved.
- * Portions Copyright © 1997-1999 Vita Nuova Limited
- * Portions Copyright © 2000-2007 Vita Nuova Holdings Limited
- *                                (www.vitanuova.com)
- * Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others
- *
- * Modified for the Akaros operating system:
- * Copyright (c) 2013-2014 The Regents of the University of California
- * Copyright (c) 2013-2015 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE. */
-
-#include <slab.h>
-#include <kmalloc.h>
-#include <kref.h>
-#include <string.h>
-#include <stdio.h>
-#include <assert.h>
-#include <error.h>
-#include <cpio.h>
-#include <pmap.h>
-#include <smp.h>
-#include <net/ip.h>
-
-/*
- * no cache in hosted mode
- */
-void cinit(void)
-{
-}
-
-void copen(struct chan *c)
-{
-       c->flag &= ~CCACHE;
-}
-
-int cread(struct chan *c, uint8_t * b, int n, int64_t off)
-{
-       return 0;
-}
-
-void cwrite(struct chan *c, uint8_t * buf, int n, int64_t off)
-{
-}
-
-void cupdate(struct chan *c, uint8_t * buf, int n, int64_t off)
-{
-}