9p: Add additional debug flags and open modes
authorEric Van Hensbergen <ericvh@kernel.org>
Sun, 18 Dec 2022 18:03:54 +0000 (18:03 +0000)
committerEric Van Hensbergen <ericvh@kernel.org>
Mon, 27 Mar 2023 02:33:48 +0000 (02:33 +0000)
Add some additional debug flags to assist with debugging
cache changes.  Also add some additional open modes so we
can track cache state in fids more directly.

Signed-off-by: Eric Van Hensbergen <ericvh@kernel.org>
include/net/9p/9p.h
net/9p/client.c

index 429adf6be29cd00a46ca8541dd1ee28b81043da1..60cad0d200a4b2ad183d4e78a01a3e4f6ce9ee48 100644 (file)
@@ -42,6 +42,8 @@ enum p9_debug_flags {
        P9_DEBUG_PKT =          (1<<10),
        P9_DEBUG_FSC =          (1<<11),
        P9_DEBUG_VPKT =         (1<<12),
+       P9_DEBUG_CACHE =        (1<<13),
+       P9_DEBUG_MMAP =         (1<<14),
 };
 
 #ifdef CONFIG_NET_9P_DEBUG
@@ -213,6 +215,10 @@ enum p9_open_mode_t {
        P9_ORCLOSE = 0x40,
        P9_OAPPEND = 0x80,
        P9_OEXCL = 0x1000,
+       P9L_MODE_MASK = 0x1FFF, /* don't send anything under this to server */
+       P9L_DIRECT = 0x2000, /* cache disabled */
+       P9L_NOWRITECACHE = 0x4000, /* no write caching  */
+       P9L_LOOSE = 0x8000, /* loose cache */
 };
 
 /**
index 2adcb5e7b0e29e54fc104e0a58a7a11781f1f9a6..a3340268ec8dbdd11ee87fccdf7b61fb4091630c 100644 (file)
@@ -1230,9 +1230,9 @@ int p9_client_open(struct p9_fid *fid, int mode)
                return -EINVAL;
 
        if (p9_is_proto_dotl(clnt))
-               req = p9_client_rpc(clnt, P9_TLOPEN, "dd", fid->fid, mode);
+               req = p9_client_rpc(clnt, P9_TLOPEN, "dd", fid->fid, mode & P9L_MODE_MASK);
        else
-               req = p9_client_rpc(clnt, P9_TOPEN, "db", fid->fid, mode);
+               req = p9_client_rpc(clnt, P9_TOPEN, "db", fid->fid, mode & P9L_MODE_MASK);
        if (IS_ERR(req)) {
                err = PTR_ERR(req);
                goto error;
@@ -1277,7 +1277,7 @@ int p9_client_create_dotl(struct p9_fid *ofid, const char *name, u32 flags,
                return -EINVAL;
 
        req = p9_client_rpc(clnt, P9_TLCREATE, "dsddg", ofid->fid, name, flags,
-                           mode, gid);
+                           mode & P9L_MODE_MASK, gid);
        if (IS_ERR(req)) {
                err = PTR_ERR(req);
                goto error;
@@ -1321,7 +1321,7 @@ int p9_client_fcreate(struct p9_fid *fid, const char *name, u32 perm, int mode,
                return -EINVAL;
 
        req = p9_client_rpc(clnt, P9_TCREATE, "dsdb?s", fid->fid, name, perm,
-                           mode, extension);
+                           mode & P9L_MODE_MASK, extension);
        if (IS_ERR(req)) {
                err = PTR_ERR(req);
                goto error;