This is an automated email from the ASF dual-hosted git repository.

yasith pushed a commit to branch worktree-cleanup+lean-core
in repository https://gitbox.apache.org/repos/asf/airavata.git

commit 8f17d04ad153c1da01e33d79ff2d9bdbcbfc8694
Author: yasithdev <[email protected]>
AuthorDate: Mon Mar 30 08:32:35 2026 -0400

    cleanup: remove airavata-fuse module (unused)
---
 airavata-fuse/.gitignore                      |    4 -
 airavata-fuse/Makefile                        |   42 -
 airavata-fuse/README.md                       |   37 -
 airavata-fuse/src/grpcfs/adapters.go          |   81 -
 airavata-fuse/src/grpcfs/fs.go                |  249 ---
 airavata-fuse/src/grpcfs/go.mod               |   18 -
 airavata-fuse/src/grpcfs/go.sum               |   33 -
 airavata-fuse/src/grpcfs/grpc.go              |  129 --
 airavata-fuse/src/grpcfs/inode.go             |  166 --
 airavata-fuse/src/grpcfs/pb/grpcfs.pb.go      | 2319 -------------------------
 airavata-fuse/src/grpcfs/pb/grpcfs_grpc.pb.go |  396 -----
 airavata-fuse/src/grpcfs_client/go.mod        |   19 -
 airavata-fuse/src/grpcfs_client/go.sum        |   32 -
 airavata-fuse/src/grpcfs_client/main.go       |   82 -
 airavata-fuse/src/grpcfs_server/go.mod        |   20 -
 airavata-fuse/src/grpcfs_server/go.sum        |   26 -
 airavata-fuse/src/grpcfs_server/main.go       |  239 ---
 airavata-fuse/src/proto/grpcfs.proto          |  137 --
 18 files changed, 4029 deletions(-)

diff --git a/airavata-fuse/.gitignore b/airavata-fuse/.gitignore
deleted file mode 100644
index 69a71f8fcd..0000000000
--- a/airavata-fuse/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.DS_Store
-/bin
-/data
-/tmp
\ No newline at end of file
diff --git a/airavata-fuse/Makefile b/airavata-fuse/Makefile
deleted file mode 100644
index ccee4461d9..0000000000
--- a/airavata-fuse/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-all: init client server
-
-init:
-       rm -rf ./bin && mkdir ./bin
-
-protoc: protoc_init protoc_run
-
-protoc_init:
-       go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest; \
-       go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
-
-protoc_run:
-       cd src && protoc --go_out=. --go-grpc_out=. proto/*.proto
-
-client:
-       cd src/grpcfs_client && go mod tidy && go build -o ../../bin .
-
-server:
-       cd src/grpcfs_server && go mod tidy && go build -o ../../bin .
-
-run_server:
-       bin/server
-
-run_client:
-       bin/client -mount $$PWD/tmp -serve $$PWD/data
\ No newline at end of file
diff --git a/airavata-fuse/README.md b/airavata-fuse/README.md
deleted file mode 100644
index d3ed3c8a26..0000000000
--- a/airavata-fuse/README.md
+++ /dev/null
@@ -1,37 +0,0 @@
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
--->
-
-# FUSE Client/Server for Airavata
-
-```sh
-make
-```
-Upon running `make`, two binaries (`bin/server` and `bin/client`) will be 
created in the `bin/` folder
-
-# Running (Example)
-```bash
-make run_server
-# or
-bin/server
-```
-```bash
-make run_client
-# or
-bin/client -mount <path/to/mountpoint> -serve <path/to/source/folder>
-```
\ No newline at end of file
diff --git a/airavata-fuse/src/grpcfs/adapters.go 
b/airavata-fuse/src/grpcfs/adapters.go
deleted file mode 100644
index 2d2ca09187..0000000000
--- a/airavata-fuse/src/grpcfs/adapters.go
+++ /dev/null
@@ -1,81 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-
-//   http://www.apache.org/licenses/LICENSE-2.0
-
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-// Place for mapper structs/interfaces
-
-package grpcfs
-
-import (
-       pb "grpcfs/pb"
-       "io/fs"
-       "time"
-)
-
-type FileInfoBridge struct {
-       info pb.FileInfo
-}
-
-func (b *FileInfoBridge) Name() string {
-       return b.info.Name
-}
-
-func (b *FileInfoBridge) Size() int64 {
-       return b.info.Size
-}
-
-func (b *FileInfoBridge) Mode() fs.FileMode {
-       return fs.FileMode(b.info.Mode)
-}
-
-func (b *FileInfoBridge) ModTime() time.Time {
-       return b.info.ModTime.AsTime()
-}
-
-func (b *FileInfoBridge) IsDir() bool {
-       return b.info.IsDir
-}
-
-type Sys struct {
-       Ino uint64
-}
-
-func (b *FileInfoBridge) Sys() any {
-       return &Sys{
-               Ino: b.info.Ino,
-       }
-}
-
-type DirEntryBridge struct {
-       info pb.DirEntry
-}
-
-func (b *DirEntryBridge) Name() string {
-       return b.info.Name
-}
-
-func (b *DirEntryBridge) IsDir() bool {
-       return b.info.IsDir
-}
-
-func (b *DirEntryBridge) Type() fs.FileMode {
-       return fs.FileMode(b.info.FileMode)
-}
-
-func (b *DirEntryBridge) Info() (fs.FileInfo, error) {
-       info := &FileInfoBridge{info: *b.info.Info}
-       return info, nil
-}
diff --git a/airavata-fuse/src/grpcfs/fs.go b/airavata-fuse/src/grpcfs/fs.go
deleted file mode 100644
index 9ba343eec2..0000000000
--- a/airavata-fuse/src/grpcfs/fs.go
+++ /dev/null
@@ -1,249 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-
-//   http://www.apache.org/licenses/LICENSE-2.0
-
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-// place for fuse definitions
-
-package grpcfs
-
-import (
-       "context"
-       "log"
-       "os"
-       "sync"
-
-       pb "grpcfs/pb"
-
-       "github.com/jacobsa/fuse"
-       "github.com/jacobsa/fuse/fuseops"
-       "github.com/jacobsa/fuse/fuseutil"
-       "google.golang.org/grpc"
-       "google.golang.org/grpc/credentials/insecure"
-)
-
-type grpcFs struct {
-       fuseutil.NotImplementedFileSystem
-       root   string
-       inodes *sync.Map
-       logger *log.Logger
-       client pb.FuseServiceClient
-}
-
-var _ fuseutil.FileSystem = &grpcFs{}
-
-// Create a file system that mirrors an existing physical path, in a readonly 
mode
-func FuseServer(
-       grpcHost string,
-       root string,
-       logger *log.Logger) (server fuse.Server, err error) {
-
-       creds := insecure.NewCredentials()
-       conn, err := grpc.NewClient(grpcHost, 
grpc.WithTransportCredentials(creds))
-       if err != nil {
-               return nil, err
-       }
-       client := pb.NewFuseServiceClient(conn)
-
-       if _, err = getStat(client, context.TODO(), root); err != nil {
-               logger.Print("error in getStat() for FS root", err)
-               return nil, err
-       }
-
-       inodes := &sync.Map{}
-       rootInode := &inodeEntry{
-               id:     fuseops.RootInodeID,
-               path:   root,
-               client: client,
-       }
-       inodes.Store(rootInode.Id(), rootInode)
-       server = fuseutil.NewFileSystemServer(&grpcFs{
-               root:   root,
-               inodes: inodes,
-               logger: logger,
-               client: client,
-       })
-       return
-}
-
-func (fs *grpcFs) StatFS(
-       ctx context.Context,
-       op *fuseops.StatFSOp) error {
-
-       res, err := getStatFs(fs.client, ctx, fs.root)
-       if err != nil {
-               return err
-       }
-       op.BlockSize = res.BlockSize
-       op.Blocks = res.Blocks
-       op.BlocksAvailable = res.BlocksAvailable
-       op.BlocksFree = res.BlocksFree
-       op.Inodes = res.Inodes
-       op.InodesFree = res.InodesFree
-       op.IoSize = res.IoSize
-       return nil
-}
-
-func (fs *grpcFs) LookUpInode(
-       ctx context.Context,
-       op *fuseops.LookUpInodeOp) error {
-       fs.logger.Print("fs.LookUpInode - called. ", op)
-       entry, err := getOrCreateInode(fs.inodes, fs.client, ctx, op.Parent, 
op.Name)
-       if err == nil && entry == nil {
-               fs.logger.Print("fs.LookUpInode - file does not exist. ", 
op.Name)
-               return fuse.ENOENT
-       }
-       if err != nil {
-               fs.logger.Printf("fs.LookUpInode - '%v' on '%v': %v", entry, 
op.Name, err)
-               return fuse.EIO
-       }
-       outputEntry := &op.Entry
-       outputEntry.Child = entry.Id()
-       attributes, err := entry.Attributes()
-       if err != nil {
-               fs.logger.Printf("fs.LookUpInode.Attributes for '%v' on '%v': 
%v", entry, op.Name, err)
-               return fuse.EIO
-       }
-       outputEntry.Attributes = *attributes
-       return nil
-}
-
-func (fs *grpcFs) GetInodeAttributes(
-       ctx context.Context,
-       op *fuseops.GetInodeAttributesOp) error {
-       var entry, found = fs.inodes.Load(op.Inode)
-       if !found {
-               return fuse.ENOENT
-       }
-       attributes, err := entry.(Inode).Attributes()
-       if err != nil {
-               fs.logger.Printf("fs.GetInodeAttributes for '%v': %v", entry, 
err)
-               return fuse.EIO
-       }
-       op.Attributes = *attributes
-       return nil
-}
-
-func (fs *grpcFs) OpenDir(
-       ctx context.Context,
-       op *fuseops.OpenDirOp) error {
-       // Allow opening any directory.
-       return nil
-}
-
-func (fs *grpcFs) ReadDir(
-       ctx context.Context,
-       op *fuseops.ReadDirOp) error {
-       log.Print("fs.ReadDir - called. ", op.Inode)
-       var entry, found = fs.inodes.Load(op.Inode)
-       if !found {
-               log.Print("fs.ReadDir - requested dir not found. ", op.Inode)
-               return fuse.ENOENT
-       }
-       log.Print("fs.ReadDir - found requested dir. ", entry)
-       children, err := entry.(Inode).ListChildren(fs.inodes)
-       log.Print("fs.ReadDir - requested children. ", entry)
-       if err != nil {
-               fs.logger.Printf("fs.ReadDir - ListChildren of '%v' failed: 
%v", entry, err)
-               return fuse.EIO
-       }
-       fs.logger.Printf("fs.ReadDir - Got children of '%v': %v", entry, 
children)
-       if op.Offset > fuseops.DirOffset(len(children)) {
-               return nil
-       }
-
-       children = children[op.Offset:]
-
-       for _, child := range children {
-               bytesWritten := fuseutil.WriteDirent(op.Dst[op.BytesRead:], 
*child)
-               if bytesWritten == 0 {
-                       break
-               }
-               op.BytesRead += bytesWritten
-       }
-       return nil
-}
-
-func (fs *grpcFs) OpenFile(
-       ctx context.Context,
-       op *fuseops.OpenFileOp) error {
-
-       var _, found = fs.inodes.Load(op.Inode)
-       if !found {
-               return fuse.ENOENT
-       }
-       return nil
-
-}
-
-func (fs *grpcFs) ReadFile(
-       ctx context.Context,
-       op *fuseops.ReadFileOp) error {
-       var entry, found = fs.inodes.Load(op.Inode)
-       if !found {
-               return fuse.ENOENT
-       }
-       contents, err := entry.(Inode).Contents()
-       if err != nil {
-               fs.logger.Printf("fs.ReadFile - failed for '%v': %v", entry, 
err)
-               return fuse.EIO
-       }
-
-       if op.Offset > int64(len(contents)) {
-               return fuse.EIO
-       }
-
-       contents = contents[op.Offset:]
-       op.BytesRead = copy(op.Dst, contents)
-       return nil
-}
-
-func (fs *grpcFs) WriteFile(
-       ctx context.Context,
-       op *fuseops.WriteFileOp) error {
-       var entry, found = fs.inodes.Load(op.Inode)
-       if !found {
-               return fuse.ENOENT
-       }
-       path := entry.(Inode).Path()
-       fs.logger.Print("fs.WriteFile - called for", path)
-       res, err := writeFile(fs.client, ctx, path, op.Data, op.Offset)
-       if !res || (err != nil) {
-               fs.logger.Printf("fs.WriteFile - failed for '%v': %v", entry, 
err)
-               return fuse.EIO
-       }
-       return nil
-}
-
-func (fs *grpcFs) SetInodeAttributes(
-       ctx context.Context,
-       op *fuseops.SetInodeAttributesOp) error {
-       var entry, found = fs.inodes.Load(op.Inode)
-       if !found {
-               return fuse.ENOENT
-       }
-       path := entry.(Inode).Path()
-       fs.logger.Print("fs.SetInodeAttributes - called for ", path)
-       res, err := setInodeAttributes(fs.client, ctx, path, op.Size, 
(*uint32)(op.Mode), op.Atime, op.Mtime)
-       if (res == nil) || (err != nil) {
-               fs.logger.Printf("fs.SetInodeAttributes - failed for '%v': %v", 
entry, err)
-               return fuse.EIO
-       }
-       op.Attributes.Size = res.Size
-       op.Attributes.Mode = os.FileMode(res.FileMode)
-       op.Attributes.Atime = res.Atime.AsTime()
-       op.Attributes.Mtime = res.Mtime.AsTime()
-       return nil
-}
diff --git a/airavata-fuse/src/grpcfs/go.mod b/airavata-fuse/src/grpcfs/go.mod
deleted file mode 100644
index 43e72624d8..0000000000
--- a/airavata-fuse/src/grpcfs/go.mod
+++ /dev/null
@@ -1,18 +0,0 @@
-module grpcfs
-
-go 1.23.0
-
-toolchain go1.24.4
-
-require (
-       github.com/jacobsa/fuse v0.0.0-20250702080931-3e9d24d5e3ff
-       google.golang.org/grpc v1.73.0
-       google.golang.org/protobuf v1.36.6
-)
-
-require (
-       golang.org/x/net v0.41.0 // indirect
-       golang.org/x/sys v0.33.0 // indirect
-       golang.org/x/text v0.26.0 // indirect
-       google.golang.org/genproto/googleapis/rpc 
v0.0.0-20250603155806-513f23925822 // indirect
-)
diff --git a/airavata-fuse/src/grpcfs/go.sum b/airavata-fuse/src/grpcfs/go.sum
deleted file mode 100644
index a58795cbf0..0000000000
--- a/airavata-fuse/src/grpcfs/go.sum
+++ /dev/null
@@ -1,33 +0,0 @@
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-github.com/google/go-cmp v0.6.0/go.mod 
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
-github.com/jacobsa/fuse v0.0.0-20240626143436-8a36813dc074 
h1:rrmTkL654m7vQTYzi9NpEzAO7t0to5f1/jgkvSorVs8=
-github.com/jacobsa/fuse v0.0.0-20240626143436-8a36813dc074/go.mod 
h1:JYi9iIxdYNgxmMgLwtSHO/hmVnP2kfX1oc+mtx+XWLA=
-github.com/jacobsa/fuse v0.0.0-20250702080931-3e9d24d5e3ff 
h1:QamXUXyWL9hTh55v6lFJdJOJN9bjX9i2Ml4zHZQq//M=
-github.com/jacobsa/fuse v0.0.0-20250702080931-3e9d24d5e3ff/go.mod 
h1:fcpw1yk/suvFhB8rT9P+pst+NLboWsBLky9csooKjPc=
-github.com/kylelemons/godebug v1.1.0 
h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
-github.com/kylelemons/godebug v1.1.0/go.mod 
h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
-golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
-golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
-golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw=
-golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA=
-golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
-golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
-golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
-golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
-golang.org/x/text v0.15.0/go.mod 
h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
-golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M=
-golang.org/x/text v0.26.0/go.mod 
h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 
h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8=
-google.golang.org/genproto/googleapis/rpc 
v0.0.0-20240528184218-531527333157/go.mod 
h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 
h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE=
-google.golang.org/genproto/googleapis/rpc 
v0.0.0-20250603155806-513f23925822/go.mod 
h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
-google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc=
-google.golang.org/grpc v1.65.0/go.mod 
h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ=
-google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok=
-google.golang.org/grpc v1.73.0/go.mod 
h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc=
-google.golang.org/protobuf v1.34.2 
h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
-google.golang.org/protobuf v1.34.2/go.mod 
h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
-google.golang.org/protobuf v1.36.6 
h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
-google.golang.org/protobuf v1.36.6/go.mod 
h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
diff --git a/airavata-fuse/src/grpcfs/grpc.go b/airavata-fuse/src/grpcfs/grpc.go
deleted file mode 100644
index b4e1e74de4..0000000000
--- a/airavata-fuse/src/grpcfs/grpc.go
+++ /dev/null
@@ -1,129 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-
-//   http://www.apache.org/licenses/LICENSE-2.0
-
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-// place for grpc calls
-
-package grpcfs
-
-import (
-       "context"
-       pb "grpcfs/pb"
-       "io/fs"
-       "log"
-       "time"
-
-       "google.golang.org/protobuf/types/known/timestamppb"
-)
-
-var ctxt = &pb.RPCContext{}
-
-func getStatFs(fsClient pb.FuseServiceClient, ctx context.Context, root 
string) (*pb.StatFs, error) {
-       req := &pb.StatFsReq{
-               Name:    root,
-               Context: ctxt,
-       }
-       res, err := fsClient.StatFs(ctx, req)
-       if err != nil {
-               return nil, err
-       }
-       raw := res.Result
-       if raw == nil {
-               return nil, ctx.Err()
-       }
-       return raw, err
-}
-
-func getStat(fsClient pb.FuseServiceClient, ctx context.Context, path string) 
(fs.FileInfo, error) {
-       log.Print("grpc.getStat - path=", path)
-       req := &pb.FileInfoReq{
-               Name:    path,
-               Context: ctxt,
-       }
-       log.Print("grpc.getStat - calling fsClient.FileInfo for ", path)
-       res, err := fsClient.FileInfo(ctx, req)
-       if err != nil {
-               log.Print("grpc.getStat - fsClient.FileInfo raised error. ", 
err)
-               return nil, err
-       }
-       raw := res.Result
-       if raw == nil {
-               return nil, ctx.Err()
-       }
-       result := &FileInfoBridge{info: *raw}
-       return result, err
-}
-
-func readDir(fsClient pb.FuseServiceClient, ctx context.Context, path string) 
([]fs.DirEntry, error) {
-       req := &pb.ReadDirReq{
-               Name:    path,
-               Context: ctxt,
-       }
-       res, err := fsClient.ReadDir(ctx, req)
-       if err != nil {
-               log.Print("grpc.readDir - fsClient.ReadDir raised error. ", err)
-               return nil, err
-       }
-       raw := res.Result
-       var entries []fs.DirEntry
-       for _, entry := range raw {
-               entries = append(entries, &DirEntryBridge{info: *entry})
-       }
-       return entries, err
-}
-
-func readFile(fsClient pb.FuseServiceClient, ctx context.Context, path string) 
([]byte, error) {
-       req := &pb.ReadFileReq{
-               Name:    path,
-               Context: ctxt,
-       }
-       res, err := fsClient.ReadFile(ctx, req)
-       return res.Result.Dst, err
-}
-
-func writeFile(fsClient pb.FuseServiceClient, ctx context.Context, path 
string, data []byte, offset int64) (bool, error) {
-       req := &pb.WriteFileReq{
-               Name:    path,
-               Context: ctxt,
-       }
-       res, err := fsClient.WriteFile(ctx, req)
-       return res.Result, err
-}
-
-func setInodeAttributes(fsClient pb.FuseServiceClient, ctx context.Context, 
path string, size *uint64, mode *uint32, atime *time.Time, mtime *time.Time) 
(*pb.InodeAtt, error) {
-       var at *timestamppb.Timestamp
-       var mt *timestamppb.Timestamp
-       if atime != nil {
-               at = timestamppb.New(*atime)
-       }
-       if mtime != nil {
-               mt = timestamppb.New(*mtime)
-       }
-       req := &pb.SetInodeAttReq{
-               Name:     path,
-               Context:  ctxt,
-               Size:     size,
-               FileMode: mode,
-               ATime:    at,
-               MTime:    mt,
-       }
-       res, err := fsClient.SetInodeAtt(ctx, req)
-       if err != nil {
-               log.Print("grpc.setInodeAttributes - fsClient.SetInodeAtt 
raised error. ", err)
-               return nil, err
-       }
-       return res.Result, err
-}
diff --git a/airavata-fuse/src/grpcfs/inode.go 
b/airavata-fuse/src/grpcfs/inode.go
deleted file mode 100644
index 001523652a..0000000000
--- a/airavata-fuse/src/grpcfs/inode.go
+++ /dev/null
@@ -1,166 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-
-//   http://www.apache.org/licenses/LICENSE-2.0
-
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-// place for data-side helper functions
-
-package grpcfs
-
-import (
-       "context"
-       "fmt"
-       "grpcfs/pb"
-       "log"
-       "os"
-       "path/filepath"
-       "sync"
-       "sync/atomic"
-
-       "github.com/jacobsa/fuse/fuseops"
-       "github.com/jacobsa/fuse/fuseutil"
-)
-
-var (
-       uid                     = uint32(os.Getuid())
-       gid                     = uint32(os.Getgid())
-       allocatedInodeId uint64 = fuseops.RootInodeID
-)
-
-type Inode interface {
-       Id() fuseops.InodeID
-       Path() string
-       String() string
-       Attributes() (*fuseops.InodeAttributes, error)
-       ListChildren(inodes *sync.Map) ([]*fuseutil.Dirent, error)
-       Contents() ([]byte, error)
-}
-
-func getOrCreateInode(inodes *sync.Map, fsClient pb.FuseServiceClient, ctx 
context.Context, parentId fuseops.InodeID, name string) (Inode, error) {
-       log.Print("inode.getOrCreateInode - called. ", name)
-       parent, found := inodes.Load(parentId)
-       if !found {
-               log.Print("inode.getOrCreateInode - no parent Inode: ", 
parentId)
-               return nil, nil
-       }
-       parentPath := parent.(Inode).Path()
-       path := filepath.Join(parentPath, name)
-       log.Print("inode.getOrCreateInode - resolved path: ", path)
-
-       fileInfo, err := getStat(fsClient, ctx, path)
-       if err != nil {
-               log.Print("inode.getOrCreateInode - no path stats: ", path)
-               return nil, err
-       }
-       log.Print("inode.getOrCreateInode - got file stats: ", path, fileInfo)
-       // stat, _ := fileInfo.Sys().(*Sys)
-
-       entry, _ := NewInode(path, fsClient)
-       // entry := &inodeEntry{
-       //      id:     fuseops.InodeID(stat.Ino),
-       //      path:   path,
-       //      client: fsClient,
-       // }
-       storedEntry, _ := inodes.LoadOrStore(entry.Id(), entry)
-       return storedEntry.(Inode), nil
-}
-
-func nextInodeID() (next fuseops.InodeID) {
-       nextInodeId := atomic.AddUint64(&allocatedInodeId, 1)
-       return fuseops.InodeID(nextInodeId)
-}
-
-type inodeEntry struct {
-       id     fuseops.InodeID
-       path   string
-       client pb.FuseServiceClient
-}
-
-func NewInode(path string, client pb.FuseServiceClient) (Inode, error) {
-       return &inodeEntry{
-               id:     nextInodeID(),
-               path:   path,
-               client: client,
-       }, nil
-}
-
-func (in *inodeEntry) Id() fuseops.InodeID {
-       return in.id
-}
-
-func (in *inodeEntry) Path() string {
-       return in.path
-}
-
-func (in *inodeEntry) String() string {
-       return fmt.Sprintf("%v::%v", in.id, in.path)
-}
-
-func (in *inodeEntry) Attributes() (*fuseops.InodeAttributes, error) {
-       log.Print("inodeEntry.Attributes - called. ", in.path)
-       fileInfo, err := getStat(in.client, context.TODO(), in.path)
-       if err != nil {
-               return &fuseops.InodeAttributes{}, err
-       }
-
-       return &fuseops.InodeAttributes{
-               Size:  uint64(fileInfo.Size()),
-               Nlink: 1,
-               Mode:  fileInfo.Mode(),
-               Mtime: fileInfo.ModTime(),
-               Uid:   uid,
-               Gid:   gid,
-       }, nil
-}
-
-func (in *inodeEntry) ListChildren(inodes *sync.Map) ([]*fuseutil.Dirent, 
error) {
-       log.Print("inodeEntry.ListChildren - called. ", in.path)
-       children, err := readDir(in.client, context.TODO(), in.path)
-       if err != nil {
-               log.Print("inodeEntry.ListChildren - error in readDir. ", 
in.path)
-               return nil, err
-       }
-       dirents := []*fuseutil.Dirent{}
-       for i, child := range children {
-
-               childInode, err := getOrCreateInode(inodes, in.client, 
context.TODO(), in.id, child.Name())
-               if err != nil || childInode == nil {
-                       continue
-               }
-
-               var childType fuseutil.DirentType
-               if child.IsDir() {
-                       childType = fuseutil.DT_Directory
-               } else if child.Type()&os.ModeSymlink != 0 {
-                       childType = fuseutil.DT_Link
-               } else {
-                       childType = fuseutil.DT_File
-               }
-
-               dirents = append(dirents, &fuseutil.Dirent{
-                       Offset: fuseops.DirOffset(i + 1),
-                       Inode:  childInode.Id(),
-                       Name:   child.Name(),
-                       Type:   childType,
-               })
-       }
-       return dirents, nil
-}
-
-func (in *inodeEntry) Contents() ([]byte, error) {
-       log.Print("inodeEntry.Contents - called. ", in.path)
-       res, err := readFile(in.client, context.TODO(), in.path)
-       return res, err
-}
diff --git a/airavata-fuse/src/grpcfs/pb/grpcfs.pb.go 
b/airavata-fuse/src/grpcfs/pb/grpcfs.pb.go
deleted file mode 100644
index 7906f84738..0000000000
--- a/airavata-fuse/src/grpcfs/pb/grpcfs.pb.go
+++ /dev/null
@@ -1,2319 +0,0 @@
-//
-// Licensed to the Apache Software Foundation (ASF) under one or more
-// contributor license agreements.  See the NOTICE file distributed with
-// this work for additional information regarding copyright ownership.
-// The ASF licenses this file to You under the Apache License, Version 2.0
-// (the "License"); you may not use this file except in compliance with
-// the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-//     protoc-gen-go v1.34.2
-//     protoc        v4.24.4
-// source: proto/grpcfs.proto
-
-package pb
-
-import (
-       protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-       protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-       timestamppb "google.golang.org/protobuf/types/known/timestamppb"
-       reflect "reflect"
-       sync "sync"
-)
-
-const (
-       // Verify that this generated code is sufficiently up-to-date.
-       _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
-       // Verify that runtime/protoimpl is sufficiently up-to-date.
-       _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// RPC Helper Context - Define as needed
-type RPCContext struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       GatewayId   string `protobuf:"bytes,1,opt,name=GatewayId,proto3" 
json:"GatewayId,omitempty"`
-       AccessToken string `protobuf:"bytes,2,opt,name=AccessToken,proto3" 
json:"AccessToken,omitempty"`
-       AgentId     string `protobuf:"bytes,3,opt,name=AgentId,proto3" 
json:"AgentId,omitempty"`
-}
-
-func (x *RPCContext) Reset() {
-       *x = RPCContext{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[0]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *RPCContext) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RPCContext) ProtoMessage() {}
-
-func (x *RPCContext) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[0]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use RPCContext.ProtoReflect.Descriptor instead.
-func (*RPCContext) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *RPCContext) GetGatewayId() string {
-       if x != nil {
-               return x.GatewayId
-       }
-       return ""
-}
-
-func (x *RPCContext) GetAccessToken() string {
-       if x != nil {
-               return x.AccessToken
-       }
-       return ""
-}
-
-func (x *RPCContext) GetAgentId() string {
-       if x != nil {
-               return x.AgentId
-       }
-       return ""
-}
-
-// Primitive
-type OpContext struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       FuseId uint64 `protobuf:"varint,1,opt,name=FuseId,proto3" 
json:"FuseId,omitempty"`
-       Pid    uint64 `protobuf:"varint,2,opt,name=Pid,proto3" 
json:"Pid,omitempty"`
-       Uid    uint64 `protobuf:"varint,3,opt,name=Uid,proto3" 
json:"Uid,omitempty"`
-}
-
-func (x *OpContext) Reset() {
-       *x = OpContext{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[1]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *OpContext) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OpContext) ProtoMessage() {}
-
-func (x *OpContext) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[1]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use OpContext.ProtoReflect.Descriptor instead.
-func (*OpContext) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *OpContext) GetFuseId() uint64 {
-       if x != nil {
-               return x.FuseId
-       }
-       return 0
-}
-
-func (x *OpContext) GetPid() uint64 {
-       if x != nil {
-               return x.Pid
-       }
-       return 0
-}
-
-func (x *OpContext) GetUid() uint64 {
-       if x != nil {
-               return x.Uid
-       }
-       return 0
-}
-
-// Toplevel
-type StatFs struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       BlockSize       uint32 `protobuf:"varint,1,opt,name=BlockSize,proto3" 
json:"BlockSize,omitempty"`
-       Blocks          uint64 `protobuf:"varint,2,opt,name=Blocks,proto3" 
json:"Blocks,omitempty"`
-       BlocksFree      uint64 `protobuf:"varint,3,opt,name=BlocksFree,proto3" 
json:"BlocksFree,omitempty"`
-       BlocksAvailable uint64 
`protobuf:"varint,4,opt,name=BlocksAvailable,proto3" 
json:"BlocksAvailable,omitempty"`
-       IoSize          uint32 `protobuf:"varint,5,opt,name=IoSize,proto3" 
json:"IoSize,omitempty"`
-       Inodes          uint64 `protobuf:"varint,6,opt,name=Inodes,proto3" 
json:"Inodes,omitempty"`
-       InodesFree      uint64 `protobuf:"varint,7,opt,name=InodesFree,proto3" 
json:"InodesFree,omitempty"`
-}
-
-func (x *StatFs) Reset() {
-       *x = StatFs{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[2]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *StatFs) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*StatFs) ProtoMessage() {}
-
-func (x *StatFs) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[2]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use StatFs.ProtoReflect.Descriptor instead.
-func (*StatFs) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *StatFs) GetBlockSize() uint32 {
-       if x != nil {
-               return x.BlockSize
-       }
-       return 0
-}
-
-func (x *StatFs) GetBlocks() uint64 {
-       if x != nil {
-               return x.Blocks
-       }
-       return 0
-}
-
-func (x *StatFs) GetBlocksFree() uint64 {
-       if x != nil {
-               return x.BlocksFree
-       }
-       return 0
-}
-
-func (x *StatFs) GetBlocksAvailable() uint64 {
-       if x != nil {
-               return x.BlocksAvailable
-       }
-       return 0
-}
-
-func (x *StatFs) GetIoSize() uint32 {
-       if x != nil {
-               return x.IoSize
-       }
-       return 0
-}
-
-func (x *StatFs) GetInodes() uint64 {
-       if x != nil {
-               return x.Inodes
-       }
-       return 0
-}
-
-func (x *StatFs) GetInodesFree() uint64 {
-       if x != nil {
-               return x.InodesFree
-       }
-       return 0
-}
-
-type FileInfo struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Name    string                 `protobuf:"bytes,1,opt,name=Name,proto3" 
json:"Name,omitempty"`
-       Size    int64                  
`protobuf:"varint,2,opt,name=Size,proto3" json:"Size,omitempty"`
-       Mode    uint32                 
`protobuf:"varint,3,opt,name=Mode,proto3" json:"Mode,omitempty"`
-       ModTime *timestamppb.Timestamp 
`protobuf:"bytes,4,opt,name=ModTime,proto3" json:"ModTime,omitempty"`
-       IsDir   bool                   
`protobuf:"varint,5,opt,name=IsDir,proto3" json:"IsDir,omitempty"`
-       Ino     uint64                 `protobuf:"varint,6,opt,name=Ino,proto3" 
json:"Ino,omitempty"`
-}
-
-func (x *FileInfo) Reset() {
-       *x = FileInfo{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[3]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *FileInfo) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FileInfo) ProtoMessage() {}
-
-func (x *FileInfo) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[3]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use FileInfo.ProtoReflect.Descriptor instead.
-func (*FileInfo) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *FileInfo) GetName() string {
-       if x != nil {
-               return x.Name
-       }
-       return ""
-}
-
-func (x *FileInfo) GetSize() int64 {
-       if x != nil {
-               return x.Size
-       }
-       return 0
-}
-
-func (x *FileInfo) GetMode() uint32 {
-       if x != nil {
-               return x.Mode
-       }
-       return 0
-}
-
-func (x *FileInfo) GetModTime() *timestamppb.Timestamp {
-       if x != nil {
-               return x.ModTime
-       }
-       return nil
-}
-
-func (x *FileInfo) GetIsDir() bool {
-       if x != nil {
-               return x.IsDir
-       }
-       return false
-}
-
-func (x *FileInfo) GetIno() uint64 {
-       if x != nil {
-               return x.Ino
-       }
-       return 0
-}
-
-type OpenedDir struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Inode     uint64     `protobuf:"varint,1,opt,name=Inode,proto3" 
json:"Inode,omitempty"`
-       Handle    uint64     `protobuf:"varint,2,opt,name=Handle,proto3" 
json:"Handle,omitempty"`
-       OpContext *OpContext `protobuf:"bytes,3,opt,name=OpContext,proto3" 
json:"OpContext,omitempty"`
-       CacheDir  bool       `protobuf:"varint,4,opt,name=CacheDir,proto3" 
json:"CacheDir,omitempty"`
-       KeepCache bool       `protobuf:"varint,5,opt,name=KeepCache,proto3" 
json:"KeepCache,omitempty"`
-}
-
-func (x *OpenedDir) Reset() {
-       *x = OpenedDir{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[4]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *OpenedDir) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OpenedDir) ProtoMessage() {}
-
-func (x *OpenedDir) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[4]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use OpenedDir.ProtoReflect.Descriptor instead.
-func (*OpenedDir) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *OpenedDir) GetInode() uint64 {
-       if x != nil {
-               return x.Inode
-       }
-       return 0
-}
-
-func (x *OpenedDir) GetHandle() uint64 {
-       if x != nil {
-               return x.Handle
-       }
-       return 0
-}
-
-func (x *OpenedDir) GetOpContext() *OpContext {
-       if x != nil {
-               return x.OpContext
-       }
-       return nil
-}
-
-func (x *OpenedDir) GetCacheDir() bool {
-       if x != nil {
-               return x.CacheDir
-       }
-       return false
-}
-
-func (x *OpenedDir) GetKeepCache() bool {
-       if x != nil {
-               return x.KeepCache
-       }
-       return false
-}
-
-type OpenedFile struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Inode         uint64     `protobuf:"varint,1,opt,name=Inode,proto3" 
json:"Inode,omitempty"`
-       Handle        uint64     `protobuf:"varint,2,opt,name=Handle,proto3" 
json:"Handle,omitempty"`
-       KeepPageCache bool       
`protobuf:"varint,3,opt,name=KeepPageCache,proto3" 
json:"KeepPageCache,omitempty"`
-       UseDirectIO   bool       
`protobuf:"varint,4,opt,name=UseDirectIO,proto3" json:"UseDirectIO,omitempty"`
-       OpenFlags     uint32     `protobuf:"varint,5,opt,name=OpenFlags,proto3" 
json:"OpenFlags,omitempty"`
-       OpContext     *OpContext `protobuf:"bytes,6,opt,name=OpContext,proto3" 
json:"OpContext,omitempty"`
-}
-
-func (x *OpenedFile) Reset() {
-       *x = OpenedFile{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[5]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *OpenedFile) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OpenedFile) ProtoMessage() {}
-
-func (x *OpenedFile) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[5]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use OpenedFile.ProtoReflect.Descriptor instead.
-func (*OpenedFile) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *OpenedFile) GetInode() uint64 {
-       if x != nil {
-               return x.Inode
-       }
-       return 0
-}
-
-func (x *OpenedFile) GetHandle() uint64 {
-       if x != nil {
-               return x.Handle
-       }
-       return 0
-}
-
-func (x *OpenedFile) GetKeepPageCache() bool {
-       if x != nil {
-               return x.KeepPageCache
-       }
-       return false
-}
-
-func (x *OpenedFile) GetUseDirectIO() bool {
-       if x != nil {
-               return x.UseDirectIO
-       }
-       return false
-}
-
-func (x *OpenedFile) GetOpenFlags() uint32 {
-       if x != nil {
-               return x.OpenFlags
-       }
-       return 0
-}
-
-func (x *OpenedFile) GetOpContext() *OpContext {
-       if x != nil {
-               return x.OpContext
-       }
-       return nil
-}
-
-type DirEntry struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Name     string    `protobuf:"bytes,1,opt,name=Name,proto3" 
json:"Name,omitempty"`
-       IsDir    bool      `protobuf:"varint,2,opt,name=IsDir,proto3" 
json:"IsDir,omitempty"`
-       FileMode uint32    `protobuf:"varint,3,opt,name=FileMode,proto3" 
json:"FileMode,omitempty"`
-       Info     *FileInfo `protobuf:"bytes,4,opt,name=Info,proto3" 
json:"Info,omitempty"`
-}
-
-func (x *DirEntry) Reset() {
-       *x = DirEntry{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[6]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *DirEntry) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DirEntry) ProtoMessage() {}
-
-func (x *DirEntry) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[6]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use DirEntry.ProtoReflect.Descriptor instead.
-func (*DirEntry) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *DirEntry) GetName() string {
-       if x != nil {
-               return x.Name
-       }
-       return ""
-}
-
-func (x *DirEntry) GetIsDir() bool {
-       if x != nil {
-               return x.IsDir
-       }
-       return false
-}
-
-func (x *DirEntry) GetFileMode() uint32 {
-       if x != nil {
-               return x.FileMode
-       }
-       return 0
-}
-
-func (x *DirEntry) GetInfo() *FileInfo {
-       if x != nil {
-               return x.Info
-       }
-       return nil
-}
-
-type FileEntry struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Inode     uint64     `protobuf:"varint,1,opt,name=Inode,proto3" 
json:"Inode,omitempty"`
-       Handle    uint64     `protobuf:"varint,2,opt,name=Handle,proto3" 
json:"Handle,omitempty"`
-       Offset    int64      `protobuf:"varint,3,opt,name=Offset,proto3" 
json:"Offset,omitempty"`
-       Size      int64      `protobuf:"varint,4,opt,name=Size,proto3" 
json:"Size,omitempty"`
-       Dst       []byte     `protobuf:"bytes,5,opt,name=Dst,proto3" 
json:"Dst,omitempty"`
-       Data      [][]byte   `protobuf:"bytes,6,rep,name=Data,proto3" 
json:"Data,omitempty"`
-       BytesRead int32      `protobuf:"varint,7,opt,name=BytesRead,proto3" 
json:"BytesRead,omitempty"`
-       OpContext *OpContext `protobuf:"bytes,8,opt,name=OpContext,proto3" 
json:"OpContext,omitempty"`
-}
-
-func (x *FileEntry) Reset() {
-       *x = FileEntry{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[7]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *FileEntry) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FileEntry) ProtoMessage() {}
-
-func (x *FileEntry) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[7]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use FileEntry.ProtoReflect.Descriptor instead.
-func (*FileEntry) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *FileEntry) GetInode() uint64 {
-       if x != nil {
-               return x.Inode
-       }
-       return 0
-}
-
-func (x *FileEntry) GetHandle() uint64 {
-       if x != nil {
-               return x.Handle
-       }
-       return 0
-}
-
-func (x *FileEntry) GetOffset() int64 {
-       if x != nil {
-               return x.Offset
-       }
-       return 0
-}
-
-func (x *FileEntry) GetSize() int64 {
-       if x != nil {
-               return x.Size
-       }
-       return 0
-}
-
-func (x *FileEntry) GetDst() []byte {
-       if x != nil {
-               return x.Dst
-       }
-       return nil
-}
-
-func (x *FileEntry) GetData() [][]byte {
-       if x != nil {
-               return x.Data
-       }
-       return nil
-}
-
-func (x *FileEntry) GetBytesRead() int32 {
-       if x != nil {
-               return x.BytesRead
-       }
-       return 0
-}
-
-func (x *FileEntry) GetOpContext() *OpContext {
-       if x != nil {
-               return x.OpContext
-       }
-       return nil
-}
-
-type InodeAtt struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Size     uint64                 
`protobuf:"varint,1,opt,name=Size,proto3" json:"Size,omitempty"`
-       Nlink    uint32                 
`protobuf:"varint,2,opt,name=Nlink,proto3" json:"Nlink,omitempty"`
-       FileMode uint32                 
`protobuf:"varint,3,opt,name=FileMode,proto3" json:"FileMode,omitempty"`
-       Atime    *timestamppb.Timestamp 
`protobuf:"bytes,4,opt,name=Atime,proto3" json:"Atime,omitempty"`
-       Mtime    *timestamppb.Timestamp 
`protobuf:"bytes,5,opt,name=Mtime,proto3" json:"Mtime,omitempty"`
-       Ctime    *timestamppb.Timestamp 
`protobuf:"bytes,6,opt,name=Ctime,proto3" json:"Ctime,omitempty"`
-}
-
-func (x *InodeAtt) Reset() {
-       *x = InodeAtt{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[8]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *InodeAtt) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*InodeAtt) ProtoMessage() {}
-
-func (x *InodeAtt) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[8]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use InodeAtt.ProtoReflect.Descriptor instead.
-func (*InodeAtt) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *InodeAtt) GetSize() uint64 {
-       if x != nil {
-               return x.Size
-       }
-       return 0
-}
-
-func (x *InodeAtt) GetNlink() uint32 {
-       if x != nil {
-               return x.Nlink
-       }
-       return 0
-}
-
-func (x *InodeAtt) GetFileMode() uint32 {
-       if x != nil {
-               return x.FileMode
-       }
-       return 0
-}
-
-func (x *InodeAtt) GetAtime() *timestamppb.Timestamp {
-       if x != nil {
-               return x.Atime
-       }
-       return nil
-}
-
-func (x *InodeAtt) GetMtime() *timestamppb.Timestamp {
-       if x != nil {
-               return x.Mtime
-       }
-       return nil
-}
-
-func (x *InodeAtt) GetCtime() *timestamppb.Timestamp {
-       if x != nil {
-               return x.Ctime
-       }
-       return nil
-}
-
-// Request Bodies
-type StatFsReq struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Name    string      `protobuf:"bytes,1,opt,name=Name,proto3" 
json:"Name,omitempty"`
-       Context *RPCContext `protobuf:"bytes,2,opt,name=Context,proto3" 
json:"Context,omitempty"`
-}
-
-func (x *StatFsReq) Reset() {
-       *x = StatFsReq{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[9]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *StatFsReq) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*StatFsReq) ProtoMessage() {}
-
-func (x *StatFsReq) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[9]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use StatFsReq.ProtoReflect.Descriptor instead.
-func (*StatFsReq) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *StatFsReq) GetName() string {
-       if x != nil {
-               return x.Name
-       }
-       return ""
-}
-
-func (x *StatFsReq) GetContext() *RPCContext {
-       if x != nil {
-               return x.Context
-       }
-       return nil
-}
-
-type FileInfoReq struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Name    string      `protobuf:"bytes,1,opt,name=Name,proto3" 
json:"Name,omitempty"`
-       Context *RPCContext `protobuf:"bytes,2,opt,name=Context,proto3" 
json:"Context,omitempty"`
-}
-
-func (x *FileInfoReq) Reset() {
-       *x = FileInfoReq{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[10]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *FileInfoReq) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FileInfoReq) ProtoMessage() {}
-
-func (x *FileInfoReq) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[10]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use FileInfoReq.ProtoReflect.Descriptor instead.
-func (*FileInfoReq) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *FileInfoReq) GetName() string {
-       if x != nil {
-               return x.Name
-       }
-       return ""
-}
-
-func (x *FileInfoReq) GetContext() *RPCContext {
-       if x != nil {
-               return x.Context
-       }
-       return nil
-}
-
-type OpenDirReq struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Name    string      `protobuf:"bytes,1,opt,name=Name,proto3" 
json:"Name,omitempty"`
-       Context *RPCContext `protobuf:"bytes,2,opt,name=Context,proto3" 
json:"Context,omitempty"`
-}
-
-func (x *OpenDirReq) Reset() {
-       *x = OpenDirReq{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[11]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *OpenDirReq) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OpenDirReq) ProtoMessage() {}
-
-func (x *OpenDirReq) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[11]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use OpenDirReq.ProtoReflect.Descriptor instead.
-func (*OpenDirReq) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *OpenDirReq) GetName() string {
-       if x != nil {
-               return x.Name
-       }
-       return ""
-}
-
-func (x *OpenDirReq) GetContext() *RPCContext {
-       if x != nil {
-               return x.Context
-       }
-       return nil
-}
-
-type OpenFileReq struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Name    string      `protobuf:"bytes,1,opt,name=Name,proto3" 
json:"Name,omitempty"`
-       Context *RPCContext `protobuf:"bytes,2,opt,name=Context,proto3" 
json:"Context,omitempty"`
-}
-
-func (x *OpenFileReq) Reset() {
-       *x = OpenFileReq{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[12]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *OpenFileReq) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OpenFileReq) ProtoMessage() {}
-
-func (x *OpenFileReq) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[12]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use OpenFileReq.ProtoReflect.Descriptor instead.
-func (*OpenFileReq) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *OpenFileReq) GetName() string {
-       if x != nil {
-               return x.Name
-       }
-       return ""
-}
-
-func (x *OpenFileReq) GetContext() *RPCContext {
-       if x != nil {
-               return x.Context
-       }
-       return nil
-}
-
-type ReadDirReq struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Name    string      `protobuf:"bytes,1,opt,name=Name,proto3" 
json:"Name,omitempty"`
-       Context *RPCContext `protobuf:"bytes,2,opt,name=Context,proto3" 
json:"Context,omitempty"`
-}
-
-func (x *ReadDirReq) Reset() {
-       *x = ReadDirReq{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[13]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *ReadDirReq) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ReadDirReq) ProtoMessage() {}
-
-func (x *ReadDirReq) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[13]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use ReadDirReq.ProtoReflect.Descriptor instead.
-func (*ReadDirReq) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *ReadDirReq) GetName() string {
-       if x != nil {
-               return x.Name
-       }
-       return ""
-}
-
-func (x *ReadDirReq) GetContext() *RPCContext {
-       if x != nil {
-               return x.Context
-       }
-       return nil
-}
-
-type ReadFileReq struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Name    string      `protobuf:"bytes,1,opt,name=Name,proto3" 
json:"Name,omitempty"`
-       Context *RPCContext `protobuf:"bytes,2,opt,name=Context,proto3" 
json:"Context,omitempty"`
-}
-
-func (x *ReadFileReq) Reset() {
-       *x = ReadFileReq{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[14]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *ReadFileReq) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ReadFileReq) ProtoMessage() {}
-
-func (x *ReadFileReq) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[14]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use ReadFileReq.ProtoReflect.Descriptor instead.
-func (*ReadFileReq) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *ReadFileReq) GetName() string {
-       if x != nil {
-               return x.Name
-       }
-       return ""
-}
-
-func (x *ReadFileReq) GetContext() *RPCContext {
-       if x != nil {
-               return x.Context
-       }
-       return nil
-}
-
-type WriteFileReq struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Name    string      `protobuf:"bytes,1,opt,name=Name,proto3" 
json:"Name,omitempty"`
-       Context *RPCContext `protobuf:"bytes,2,opt,name=Context,proto3" 
json:"Context,omitempty"`
-       Data    []byte      `protobuf:"bytes,3,opt,name=Data,proto3" 
json:"Data,omitempty"`
-       Offset  int64       `protobuf:"varint,4,opt,name=Offset,proto3" 
json:"Offset,omitempty"`
-}
-
-func (x *WriteFileReq) Reset() {
-       *x = WriteFileReq{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[15]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *WriteFileReq) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WriteFileReq) ProtoMessage() {}
-
-func (x *WriteFileReq) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[15]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use WriteFileReq.ProtoReflect.Descriptor instead.
-func (*WriteFileReq) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *WriteFileReq) GetName() string {
-       if x != nil {
-               return x.Name
-       }
-       return ""
-}
-
-func (x *WriteFileReq) GetContext() *RPCContext {
-       if x != nil {
-               return x.Context
-       }
-       return nil
-}
-
-func (x *WriteFileReq) GetData() []byte {
-       if x != nil {
-               return x.Data
-       }
-       return nil
-}
-
-func (x *WriteFileReq) GetOffset() int64 {
-       if x != nil {
-               return x.Offset
-       }
-       return 0
-}
-
-type SetInodeAttReq struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Name     string                 
`protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
-       Context  *RPCContext            
`protobuf:"bytes,2,opt,name=Context,proto3" json:"Context,omitempty"`
-       Size     *uint64                
`protobuf:"varint,3,opt,name=Size,proto3,oneof" json:"Size,omitempty"`
-       FileMode *uint32                
`protobuf:"varint,4,opt,name=FileMode,proto3,oneof" json:"FileMode,omitempty"`
-       ATime    *timestamppb.Timestamp 
`protobuf:"bytes,5,opt,name=ATime,proto3,oneof" json:"ATime,omitempty"`
-       MTime    *timestamppb.Timestamp 
`protobuf:"bytes,6,opt,name=MTime,proto3,oneof" json:"MTime,omitempty"`
-}
-
-func (x *SetInodeAttReq) Reset() {
-       *x = SetInodeAttReq{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[16]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *SetInodeAttReq) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SetInodeAttReq) ProtoMessage() {}
-
-func (x *SetInodeAttReq) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[16]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use SetInodeAttReq.ProtoReflect.Descriptor instead.
-func (*SetInodeAttReq) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *SetInodeAttReq) GetName() string {
-       if x != nil {
-               return x.Name
-       }
-       return ""
-}
-
-func (x *SetInodeAttReq) GetContext() *RPCContext {
-       if x != nil {
-               return x.Context
-       }
-       return nil
-}
-
-func (x *SetInodeAttReq) GetSize() uint64 {
-       if x != nil && x.Size != nil {
-               return *x.Size
-       }
-       return 0
-}
-
-func (x *SetInodeAttReq) GetFileMode() uint32 {
-       if x != nil && x.FileMode != nil {
-               return *x.FileMode
-       }
-       return 0
-}
-
-func (x *SetInodeAttReq) GetATime() *timestamppb.Timestamp {
-       if x != nil {
-               return x.ATime
-       }
-       return nil
-}
-
-func (x *SetInodeAttReq) GetMTime() *timestamppb.Timestamp {
-       if x != nil {
-               return x.MTime
-       }
-       return nil
-}
-
-// Response Bodies
-type StatFsRes struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Result *StatFs `protobuf:"bytes,1,opt,name=Result,proto3" 
json:"Result,omitempty"`
-}
-
-func (x *StatFsRes) Reset() {
-       *x = StatFsRes{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[17]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *StatFsRes) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*StatFsRes) ProtoMessage() {}
-
-func (x *StatFsRes) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[17]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use StatFsRes.ProtoReflect.Descriptor instead.
-func (*StatFsRes) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *StatFsRes) GetResult() *StatFs {
-       if x != nil {
-               return x.Result
-       }
-       return nil
-}
-
-type FileInfoRes struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Result *FileInfo `protobuf:"bytes,1,opt,name=Result,proto3" 
json:"Result,omitempty"`
-}
-
-func (x *FileInfoRes) Reset() {
-       *x = FileInfoRes{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[18]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *FileInfoRes) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FileInfoRes) ProtoMessage() {}
-
-func (x *FileInfoRes) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[18]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use FileInfoRes.ProtoReflect.Descriptor instead.
-func (*FileInfoRes) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *FileInfoRes) GetResult() *FileInfo {
-       if x != nil {
-               return x.Result
-       }
-       return nil
-}
-
-type OpenDirRes struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Result *OpenedDir `protobuf:"bytes,1,opt,name=Result,proto3" 
json:"Result,omitempty"`
-}
-
-func (x *OpenDirRes) Reset() {
-       *x = OpenDirRes{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[19]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *OpenDirRes) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OpenDirRes) ProtoMessage() {}
-
-func (x *OpenDirRes) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[19]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use OpenDirRes.ProtoReflect.Descriptor instead.
-func (*OpenDirRes) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *OpenDirRes) GetResult() *OpenedDir {
-       if x != nil {
-               return x.Result
-       }
-       return nil
-}
-
-type OpenFileRes struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Result *OpenedFile `protobuf:"bytes,1,opt,name=Result,proto3" 
json:"Result,omitempty"`
-}
-
-func (x *OpenFileRes) Reset() {
-       *x = OpenFileRes{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[20]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *OpenFileRes) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OpenFileRes) ProtoMessage() {}
-
-func (x *OpenFileRes) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[20]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use OpenFileRes.ProtoReflect.Descriptor instead.
-func (*OpenFileRes) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *OpenFileRes) GetResult() *OpenedFile {
-       if x != nil {
-               return x.Result
-       }
-       return nil
-}
-
-type ReadDirRes struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Result []*DirEntry `protobuf:"bytes,1,rep,name=Result,proto3" 
json:"Result,omitempty"`
-}
-
-func (x *ReadDirRes) Reset() {
-       *x = ReadDirRes{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[21]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *ReadDirRes) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ReadDirRes) ProtoMessage() {}
-
-func (x *ReadDirRes) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[21]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use ReadDirRes.ProtoReflect.Descriptor instead.
-func (*ReadDirRes) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *ReadDirRes) GetResult() []*DirEntry {
-       if x != nil {
-               return x.Result
-       }
-       return nil
-}
-
-type ReadFileRes struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Result *FileEntry `protobuf:"bytes,1,opt,name=Result,proto3" 
json:"Result,omitempty"`
-}
-
-func (x *ReadFileRes) Reset() {
-       *x = ReadFileRes{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[22]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *ReadFileRes) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ReadFileRes) ProtoMessage() {}
-
-func (x *ReadFileRes) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[22]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use ReadFileRes.ProtoReflect.Descriptor instead.
-func (*ReadFileRes) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{22}
-}
-
-func (x *ReadFileRes) GetResult() *FileEntry {
-       if x != nil {
-               return x.Result
-       }
-       return nil
-}
-
-type WriteFileRes struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Result bool `protobuf:"varint,1,opt,name=Result,proto3" 
json:"Result,omitempty"`
-}
-
-func (x *WriteFileRes) Reset() {
-       *x = WriteFileRes{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[23]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *WriteFileRes) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WriteFileRes) ProtoMessage() {}
-
-func (x *WriteFileRes) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[23]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use WriteFileRes.ProtoReflect.Descriptor instead.
-func (*WriteFileRes) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *WriteFileRes) GetResult() bool {
-       if x != nil {
-               return x.Result
-       }
-       return false
-}
-
-type SetInodeAttRes struct {
-       state         protoimpl.MessageState
-       sizeCache     protoimpl.SizeCache
-       unknownFields protoimpl.UnknownFields
-
-       Result *InodeAtt `protobuf:"bytes,1,opt,name=Result,proto3" 
json:"Result,omitempty"`
-}
-
-func (x *SetInodeAttRes) Reset() {
-       *x = SetInodeAttRes{}
-       if protoimpl.UnsafeEnabled {
-               mi := &file_proto_grpcfs_proto_msgTypes[24]
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               ms.StoreMessageInfo(mi)
-       }
-}
-
-func (x *SetInodeAttRes) String() string {
-       return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SetInodeAttRes) ProtoMessage() {}
-
-func (x *SetInodeAttRes) ProtoReflect() protoreflect.Message {
-       mi := &file_proto_grpcfs_proto_msgTypes[24]
-       if protoimpl.UnsafeEnabled && x != nil {
-               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-               if ms.LoadMessageInfo() == nil {
-                       ms.StoreMessageInfo(mi)
-               }
-               return ms
-       }
-       return mi.MessageOf(x)
-}
-
-// Deprecated: Use SetInodeAttRes.ProtoReflect.Descriptor instead.
-func (*SetInodeAttRes) Descriptor() ([]byte, []int) {
-       return file_proto_grpcfs_proto_rawDescGZIP(), []int{24}
-}
-
-func (x *SetInodeAttRes) GetResult() *InodeAtt {
-       if x != nil {
-               return x.Result
-       }
-       return nil
-}
-
-var File_proto_grpcfs_proto protoreflect.FileDescriptor
-
-var file_proto_grpcfs_proto_rawDesc = []byte{
-       0x0a, 0x12, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 
0x66, 0x73, 0x2e, 0x70,
-       0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 
0x61, 0x63, 0x68, 0x65,
-       0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x66, 0x75, 
0x73, 0x65, 0x1a, 0x1f,
-       0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 
0x62, 0x75, 0x66, 0x2f,
-       0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 
0x6f, 0x74, 0x6f, 0x22,
-       0x66, 0x0a, 0x0a, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 
0x74, 0x12, 0x1c, 0x0a,
-       0x09, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x18, 0x01, 
0x20, 0x01, 0x28, 0x09,
-       0x52, 0x09, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 
0x20, 0x0a, 0x0b, 0x41,
-       0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 
0x20, 0x01, 0x28, 0x09,
-       0x52, 0x0b, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 
0x6e, 0x12, 0x18, 0x0a,
-       0x07, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 
0x28, 0x09, 0x52, 0x07,
-       0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x09, 0x4f, 
0x70, 0x43, 0x6f, 0x6e,
-       0x74, 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x46, 0x75, 0x73, 0x65, 
0x49, 0x64, 0x18, 0x01,
-       0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x46, 0x75, 0x73, 0x65, 0x49, 0x64, 
0x12, 0x10, 0x0a, 0x03,
-       0x50, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x50, 
0x69, 0x64, 0x12, 0x10,
-       0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 
0x03, 0x55, 0x69, 0x64,
-       0x22, 0xd8, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x46, 0x73, 0x12, 
0x1c, 0x0a, 0x09, 0x42,
-       0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 
0x28, 0x0d, 0x52, 0x09,
-       0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 
0x06, 0x42, 0x6c, 0x6f,
-       0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x42, 
0x6c, 0x6f, 0x63, 0x6b,
-       0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x46, 
0x72, 0x65, 0x65, 0x18,
-       0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 
0x73, 0x46, 0x72, 0x65,
-       0x65, 0x12, 0x28, 0x0a, 0x0f, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x41, 
0x76, 0x61, 0x69, 0x6c,
-       0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 
0x42, 0x6c, 0x6f, 0x63,
-       0x6b, 0x73, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 
0x16, 0x0a, 0x06, 0x49,
-       0x6f, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 
0x06, 0x49, 0x6f, 0x53,
-       0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6e, 0x6f, 0x64, 0x65, 
0x73, 0x18, 0x06, 0x20,
-       0x01, 0x28, 0x04, 0x52, 0x06, 0x49, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 
0x1e, 0x0a, 0x0a, 0x49,
-       0x6e, 0x6f, 0x64, 0x65, 0x73, 0x46, 0x72, 0x65, 0x65, 0x18, 0x07, 0x20, 
0x01, 0x28, 0x04, 0x52,
-       0x0a, 0x49, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x46, 0x72, 0x65, 0x65, 0x22, 
0xa4, 0x01, 0x0a, 0x08,
-       0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 
0x4e, 0x61, 0x6d, 0x65,
-       0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 
0x12, 0x12, 0x0a, 0x04,
-       0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 
0x53, 0x69, 0x7a, 0x65,
-       0x12, 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 
0x28, 0x0d, 0x52, 0x04,
-       0x4d, 0x6f, 0x64, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x4d, 0x6f, 0x64, 0x54, 
0x69, 0x6d, 0x65, 0x18,
-       0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 
0x6c, 0x65, 0x2e, 0x70,
-       0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 
0x73, 0x74, 0x61, 0x6d,
-       0x70, 0x52, 0x07, 0x4d, 0x6f, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 
0x0a, 0x05, 0x49, 0x73,
-       0x44, 0x69, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 
0x73, 0x44, 0x69, 0x72,
-       0x12, 0x10, 0x0a, 0x03, 0x49, 0x6e, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 
0x04, 0x52, 0x03, 0x49,
-       0x6e, 0x6f, 0x22, 0xb6, 0x01, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x6e, 0x65, 
0x64, 0x44, 0x69, 0x72,
-       0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 
0x01, 0x28, 0x04, 0x52,
-       0x05, 0x49, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x48, 0x61, 
0x6e, 0x64, 0x6c, 0x65,
-       0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x48, 0x61, 0x6e, 0x64, 
0x6c, 0x65, 0x12, 0x41,
-       0x0a, 0x09, 0x4f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 
0x03, 0x20, 0x01, 0x28,
-       0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 
0x68, 0x65, 0x2e, 0x61,
-       0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x66, 0x75, 0x73, 0x65, 
0x2e, 0x4f, 0x70, 0x43,
-       0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x09, 0x4f, 0x70, 0x43, 0x6f, 
0x6e, 0x74, 0x65, 0x78,
-       0x74, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x63, 0x68, 0x65, 0x44, 0x69, 
0x72, 0x18, 0x04, 0x20,
-       0x01, 0x28, 0x08, 0x52, 0x08, 0x43, 0x61, 0x63, 0x68, 0x65, 0x44, 0x69, 
0x72, 0x12, 0x1c, 0x0a,
-       0x09, 0x4b, 0x65, 0x65, 0x70, 0x43, 0x61, 0x63, 0x68, 0x65, 0x18, 0x05, 
0x20, 0x01, 0x28, 0x08,
-       0x52, 0x09, 0x4b, 0x65, 0x65, 0x70, 0x43, 0x61, 0x63, 0x68, 0x65, 0x22, 
0xe3, 0x01, 0x0a, 0x0a,
-       0x4f, 0x70, 0x65, 0x6e, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x14, 
0x0a, 0x05, 0x49, 0x6e,
-       0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x49, 
0x6e, 0x6f, 0x64, 0x65,
-       0x12, 0x16, 0x0a, 0x06, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x02, 
0x20, 0x01, 0x28, 0x04,
-       0x52, 0x06, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0d, 
0x4b, 0x65, 0x65, 0x70,
-       0x50, 0x61, 0x67, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x18, 0x03, 0x20, 
0x01, 0x28, 0x08, 0x52,
-       0x0d, 0x4b, 0x65, 0x65, 0x70, 0x50, 0x61, 0x67, 0x65, 0x43, 0x61, 0x63, 
0x68, 0x65, 0x12, 0x20,
-       0x0a, 0x0b, 0x55, 0x73, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x49, 
0x4f, 0x18, 0x04, 0x20,
-       0x01, 0x28, 0x08, 0x52, 0x0b, 0x55, 0x73, 0x65, 0x44, 0x69, 0x72, 0x65, 
0x63, 0x74, 0x49, 0x4f,
-       0x12, 0x1c, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x6c, 0x61, 0x67, 
0x73, 0x18, 0x05, 0x20,
-       0x01, 0x28, 0x0d, 0x52, 0x09, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x6c, 0x61, 
0x67, 0x73, 0x12, 0x41,
-       0x0a, 0x09, 0x4f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 
0x06, 0x20, 0x01, 0x28,
-       0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 
0x68, 0x65, 0x2e, 0x61,
-       0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x66, 0x75, 0x73, 0x65, 
0x2e, 0x4f, 0x70, 0x43,
-       0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x09, 0x4f, 0x70, 0x43, 0x6f, 
0x6e, 0x74, 0x65, 0x78,
-       0x74, 0x22, 0x88, 0x01, 0x0a, 0x08, 0x44, 0x69, 0x72, 0x45, 0x6e, 0x74, 
0x72, 0x79, 0x12, 0x12,
-       0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 
0x52, 0x04, 0x4e, 0x61,
-       0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x44, 0x69, 0x72, 0x18, 
0x02, 0x20, 0x01, 0x28,
-       0x08, 0x52, 0x05, 0x49, 0x73, 0x44, 0x69, 0x72, 0x12, 0x1a, 0x0a, 0x08, 
0x46, 0x69, 0x6c, 0x65,
-       0x4d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 
0x46, 0x69, 0x6c, 0x65,
-       0x4d, 0x6f, 0x64, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 
0x18, 0x04, 0x20, 0x01,
-       0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 
0x63, 0x68, 0x65, 0x2e,
-       0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x66, 0x75, 0x73, 
0x65, 0x2e, 0x46, 0x69,
-       0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 
0x22, 0xec, 0x01, 0x0a,
-       0x09, 0x46, 0x69, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x14, 
0x0a, 0x05, 0x49, 0x6e,
-       0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x49, 
0x6e, 0x6f, 0x64, 0x65,
-       0x12, 0x16, 0x0a, 0x06, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x02, 
0x20, 0x01, 0x28, 0x04,
-       0x52, 0x06, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 
0x4f, 0x66, 0x66, 0x73,
-       0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x4f, 0x66, 
0x66, 0x73, 0x65, 0x74,
-       0x12, 0x12, 0x0a, 0x04, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 
0x28, 0x03, 0x52, 0x04,
-       0x53, 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x73, 0x74, 0x18, 
0x05, 0x20, 0x01, 0x28,
-       0x0c, 0x52, 0x03, 0x44, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 
0x74, 0x61, 0x18, 0x06,
-       0x20, 0x03, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 
0x0a, 0x09, 0x42, 0x79,
-       0x74, 0x65, 0x73, 0x52, 0x65, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 
0x05, 0x52, 0x09, 0x42,
-       0x79, 0x74, 0x65, 0x73, 0x52, 0x65, 0x61, 0x64, 0x12, 0x41, 0x0a, 0x09, 
0x4f, 0x70, 0x43, 0x6f,
-       0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 
0x23, 0x2e, 0x6f, 0x72,
-       0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 
0x61, 0x76, 0x61, 0x74,
-       0x61, 0x2e, 0x66, 0x75, 0x73, 0x65, 0x2e, 0x4f, 0x70, 0x43, 0x6f, 0x6e, 
0x74, 0x65, 0x78, 0x74,
-       0x52, 0x09, 0x4f, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 
0xe6, 0x01, 0x0a, 0x08,
-       0x49, 0x6e, 0x6f, 0x64, 0x65, 0x41, 0x74, 0x74, 0x12, 0x12, 0x0a, 0x04, 
0x53, 0x69, 0x7a, 0x65,
-       0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x53, 0x69, 0x7a, 0x65, 
0x12, 0x14, 0x0a, 0x05,
-       0x4e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 
0x05, 0x4e, 0x6c, 0x69,
-       0x6e, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x6f, 
0x64, 0x65, 0x18, 0x03,
-       0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x4d, 0x6f, 
0x64, 0x65, 0x12, 0x30,
-       0x0a, 0x05, 0x41, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 
0x0b, 0x32, 0x1a, 0x2e,
-       0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 
0x62, 0x75, 0x66, 0x2e,
-       0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x41, 
0x74, 0x69, 0x6d, 0x65,
-       0x12, 0x30, 0x0a, 0x05, 0x4d, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 
0x01, 0x28, 0x0b, 0x32,
-       0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 
0x74, 0x6f, 0x62, 0x75,
-       0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 
0x05, 0x4d, 0x74, 0x69,
-       0x6d, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x43, 0x74, 0x69, 0x6d, 0x65, 0x18, 
0x06, 0x20, 0x01, 0x28,
-       0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 
0x72, 0x6f, 0x74, 0x6f,
-       0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 
0x70, 0x52, 0x05, 0x43,
-       0x74, 0x69, 0x6d, 0x65, 0x22, 0x5f, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 
0x46, 0x73, 0x52, 0x65,
-       0x71, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 
0x01, 0x28, 0x09, 0x52,
-       0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 
0x74, 0x65, 0x78, 0x74,
-       0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 
0x2e, 0x61, 0x70, 0x61,
-       0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 
0x2e, 0x66, 0x75, 0x73,
-       0x65, 0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 
0x52, 0x07, 0x43, 0x6f,
-       0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x61, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 
0x65, 0x49, 0x6e, 0x66,
-       0x6f, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 
0x18, 0x01, 0x20, 0x01,
-       0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x07, 
0x43, 0x6f, 0x6e, 0x74,
-       0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 
0x6f, 0x72, 0x67, 0x2e,
-       0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 
0x61, 0x74, 0x61, 0x2e,
-       0x66, 0x75, 0x73, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x6e, 0x74, 
0x65, 0x78, 0x74, 0x52,
-       0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x60, 0x0a, 0x0a, 
0x4f, 0x70, 0x65, 0x6e,
-       0x44, 0x69, 0x72, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 
0x6d, 0x65, 0x18, 0x01,
-       0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 
0x0a, 0x07, 0x43, 0x6f,
-       0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 
0x24, 0x2e, 0x6f, 0x72,
-       0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 
0x61, 0x76, 0x61, 0x74,
-       0x61, 0x2e, 0x66, 0x75, 0x73, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f, 
0x6e, 0x74, 0x65, 0x78,
-       0x74, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x61, 
0x0a, 0x0b, 0x4f, 0x70,
-       0x65, 0x6e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 
0x04, 0x4e, 0x61, 0x6d,
-       0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 
0x65, 0x12, 0x3e, 0x0a,
-       0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 
0x28, 0x0b, 0x32, 0x24,
-       0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 
0x61, 0x69, 0x72, 0x61,
-       0x76, 0x61, 0x74, 0x61, 0x2e, 0x66, 0x75, 0x73, 0x65, 0x2e, 0x52, 0x50, 
0x43, 0x43, 0x6f, 0x6e,
-       0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 
0x74, 0x22, 0x60, 0x0a,
-       0x0a, 0x52, 0x65, 0x61, 0x64, 0x44, 0x69, 0x72, 0x52, 0x65, 0x71, 0x12, 
0x12, 0x0a, 0x04, 0x4e,
-       0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 
0x61, 0x6d, 0x65, 0x12,
-       0x3e, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 
0x20, 0x01, 0x28, 0x0b,
-       0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 
0x65, 0x2e, 0x61, 0x69,
-       0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x66, 0x75, 0x73, 0x65, 0x2e, 
0x52, 0x50, 0x43, 0x43,
-       0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 
0x65, 0x78, 0x74, 0x22,
-       0x61, 0x0a, 0x0b, 0x52, 0x65, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52, 
0x65, 0x71, 0x12, 0x12,
-       0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 
0x52, 0x04, 0x4e, 0x61,
-       0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 
0x74, 0x18, 0x02, 0x20,
-       0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 
0x61, 0x63, 0x68, 0x65,
-       0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x66, 0x75, 
0x73, 0x65, 0x2e, 0x52,
-       0x50, 0x43, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x43, 
0x6f, 0x6e, 0x74, 0x65,
-       0x78, 0x74, 0x22, 0x8e, 0x01, 0x0a, 0x0c, 0x57, 0x72, 0x69, 0x74, 0x65, 
0x46, 0x69, 0x6c, 0x65,
-       0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 
0x01, 0x20, 0x01, 0x28,
-       0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x07, 0x43, 
0x6f, 0x6e, 0x74, 0x65,
-       0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 
0x72, 0x67, 0x2e, 0x61,
-       0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 
0x74, 0x61, 0x2e, 0x66,
-       0x75, 0x73, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x6e, 0x74, 0x65, 
0x78, 0x74, 0x52, 0x07,
-       0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x44, 
0x61, 0x74, 0x61, 0x18,
-       0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 
0x16, 0x0a, 0x06, 0x4f,
-       0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 
0x06, 0x4f, 0x66, 0x66,
-       0x73, 0x65, 0x74, 0x22, 0xb6, 0x02, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x49, 
0x6e, 0x6f, 0x64, 0x65,
-       0x41, 0x74, 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 
0x6d, 0x65, 0x18, 0x01,
-       0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 
0x0a, 0x07, 0x43, 0x6f,
-       0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 
0x24, 0x2e, 0x6f, 0x72,
-       0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 
0x61, 0x76, 0x61, 0x74,
-       0x61, 0x2e, 0x66, 0x75, 0x73, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f, 
0x6e, 0x74, 0x65, 0x78,
-       0x74, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x17, 
0x0a, 0x04, 0x53, 0x69,
-       0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x04, 
0x53, 0x69, 0x7a, 0x65,
-       0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x46, 0x69, 0x6c, 0x65, 0x4d, 
0x6f, 0x64, 0x65, 0x18,
-       0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x08, 0x46, 0x69, 0x6c, 
0x65, 0x4d, 0x6f, 0x64,
-       0x65, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x05, 0x41, 0x54, 0x69, 0x6d, 
0x65, 0x18, 0x05, 0x20,
-       0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 
0x2e, 0x70, 0x72, 0x6f,
-       0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 
0x61, 0x6d, 0x70, 0x48,
-       0x02, 0x52, 0x05, 0x41, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 
0x35, 0x0a, 0x05, 0x4d,
-       0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 
0x2e, 0x67, 0x6f, 0x6f,
-       0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 
0x2e, 0x54, 0x69, 0x6d,
-       0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x03, 0x52, 0x05, 0x4d, 0x54, 
0x69, 0x6d, 0x65, 0x88,
-       0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x53, 0x69, 0x7a, 0x65, 0x42, 
0x0b, 0x0a, 0x09, 0x5f,
-       0x46, 0x69, 0x6c, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x08, 0x0a, 0x06, 
0x5f, 0x41, 0x54, 0x69,
-       0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x4d, 0x54, 0x69, 0x6d, 0x65, 
0x22, 0x45, 0x0a, 0x09,
-       0x53, 0x74, 0x61, 0x74, 0x46, 0x73, 0x52, 0x65, 0x73, 0x12, 0x38, 0x0a, 
0x06, 0x52, 0x65, 0x73,
-       0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 
0x6f, 0x72, 0x67, 0x2e,
-       0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 
0x61, 0x74, 0x61, 0x2e,
-       0x66, 0x75, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x46, 0x73, 0x52, 
0x06, 0x52, 0x65, 0x73,
-       0x75, 0x6c, 0x74, 0x22, 0x49, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x49, 
0x6e, 0x66, 0x6f, 0x52,
-       0x65, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 
0x18, 0x01, 0x20, 0x01,
-       0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 
0x63, 0x68, 0x65, 0x2e,
-       0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x66, 0x75, 0x73, 
0x65, 0x2e, 0x46, 0x69,
-       0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x52, 0x65, 0x73, 0x75, 
0x6c, 0x74, 0x22, 0x49,
-       0x0a, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x44, 0x69, 0x72, 0x52, 0x65, 0x73, 
0x12, 0x3b, 0x0a, 0x06,
-       0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 
0x32, 0x23, 0x2e, 0x6f,
-       0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 
0x72, 0x61, 0x76, 0x61,
-       0x74, 0x61, 0x2e, 0x66, 0x75, 0x73, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 
0x65, 0x64, 0x44, 0x69,
-       0x72, 0x52, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x4b, 0x0a, 
0x0b, 0x4f, 0x70, 0x65,
-       0x6e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x06, 
0x52, 0x65, 0x73, 0x75,
-       0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 
0x72, 0x67, 0x2e, 0x61,
-       0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 
0x74, 0x61, 0x2e, 0x66,
-       0x75, 0x73, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x65, 0x64, 0x46, 0x69, 
0x6c, 0x65, 0x52, 0x06,
-       0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x48, 0x0a, 0x0a, 0x52, 0x65, 
0x61, 0x64, 0x44, 0x69,
-       0x72, 0x52, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 
0x6c, 0x74, 0x18, 0x01,
-       0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 
0x70, 0x61, 0x63, 0x68,
-       0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x66, 
0x75, 0x73, 0x65, 0x2e,
-       0x44, 0x69, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x52, 0x65, 
0x73, 0x75, 0x6c, 0x74,
-       0x22, 0x4a, 0x0a, 0x0b, 0x52, 0x65, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 
0x52, 0x65, 0x73, 0x12,
-       0x3b, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 
0x01, 0x28, 0x0b, 0x32,
-       0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 
0x2e, 0x61, 0x69, 0x72,
-       0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x66, 0x75, 0x73, 0x65, 0x2e, 0x46, 
0x69, 0x6c, 0x65, 0x45,
-       0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 
0x22, 0x26, 0x0a, 0x0c,
-       0x57, 0x72, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 
0x12, 0x16, 0x0a, 0x06,
-       0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 
0x52, 0x06, 0x52, 0x65,
-       0x73, 0x75, 0x6c, 0x74, 0x22, 0x4c, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x49, 
0x6e, 0x6f, 0x64, 0x65,
-       0x41, 0x74, 0x74, 0x52, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x52, 0x65, 
0x73, 0x75, 0x6c, 0x74,
-       0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x72, 0x67, 
0x2e, 0x61, 0x70, 0x61,
-       0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 
0x2e, 0x66, 0x75, 0x73,
-       0x65, 0x2e, 0x49, 0x6e, 0x6f, 0x64, 0x65, 0x41, 0x74, 0x74, 0x52, 0x06, 
0x52, 0x65, 0x73, 0x75,
-       0x6c, 0x74, 0x32, 0xed, 0x05, 0x0a, 0x0b, 0x46, 0x75, 0x73, 0x65, 0x53, 
0x65, 0x72, 0x76, 0x69,
-       0x63, 0x65, 0x12, 0x54, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x46, 0x73, 
0x12, 0x23, 0x2e, 0x6f,
-       0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 
0x72, 0x61, 0x76, 0x61,
-       0x74, 0x61, 0x2e, 0x66, 0x75, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 
0x46, 0x73, 0x52, 0x65,
-       0x71, 0x1a, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 
0x68, 0x65, 0x2e, 0x61,
-       0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x66, 0x75, 0x73, 0x65, 
0x2e, 0x53, 0x74, 0x61,
-       0x74, 0x46, 0x73, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x08, 
0x46, 0x69, 0x6c, 0x65,
-       0x49, 0x6e, 0x66, 0x6f, 0x12, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 
0x70, 0x61, 0x63, 0x68,
-       0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x66, 
0x75, 0x73, 0x65, 0x2e,
-       0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 
0x25, 0x2e, 0x6f, 0x72,
-       0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 
0x61, 0x76, 0x61, 0x74,
-       0x61, 0x2e, 0x66, 0x75, 0x73, 0x65, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x49, 
0x6e, 0x66, 0x6f, 0x52,
-       0x65, 0x73, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x07, 0x4f, 0x70, 0x65, 0x6e, 
0x44, 0x69, 0x72, 0x12,
-       0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 
0x2e, 0x61, 0x69, 0x72,
-       0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x66, 0x75, 0x73, 0x65, 0x2e, 0x4f, 
0x70, 0x65, 0x6e, 0x44,
-       0x69, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 
0x61, 0x70, 0x61, 0x63,
-       0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 
0x66, 0x75, 0x73, 0x65,
-       0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x44, 0x69, 0x72, 0x52, 0x65, 0x73, 0x22, 
0x00, 0x12, 0x5a, 0x0a,
-       0x08, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x25, 0x2e, 
0x6f, 0x72, 0x67, 0x2e,
-       0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 
0x61, 0x74, 0x61, 0x2e,
-       0x66, 0x75, 0x73, 0x65, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x69, 0x6c, 
0x65, 0x52, 0x65, 0x71,
-       0x1a, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 
0x65, 0x2e, 0x61, 0x69,
-       0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x66, 0x75, 0x73, 0x65, 0x2e, 
0x4f, 0x70, 0x65, 0x6e,
-       0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x22, 0x00, 0x12, 0x57, 0x0a, 
0x07, 0x52, 0x65, 0x61,
-       0x64, 0x44, 0x69, 0x72, 0x12, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 
0x70, 0x61, 0x63, 0x68,
-       0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x66, 
0x75, 0x73, 0x65, 0x2e,
-       0x52, 0x65, 0x61, 0x64, 0x44, 0x69, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x24, 
0x2e, 0x6f, 0x72, 0x67,
-       0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 
0x76, 0x61, 0x74, 0x61,
-       0x2e, 0x66, 0x75, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x44, 0x69, 
0x72, 0x52, 0x65, 0x73,
-       0x22, 0x00, 0x12, 0x5a, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x64, 0x46, 0x69, 
0x6c, 0x65, 0x12, 0x25,
-       0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 
0x61, 0x69, 0x72, 0x61,
-       0x76, 0x61, 0x74, 0x61, 0x2e, 0x66, 0x75, 0x73, 0x65, 0x2e, 0x52, 0x65, 
0x61, 0x64, 0x46, 0x69,
-       0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 
0x61, 0x70, 0x61, 0x63,
-       0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 
0x66, 0x75, 0x73, 0x65,
-       0x2e, 0x52, 0x65, 0x61, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 
0x22, 0x00, 0x12, 0x5d,
-       0x0a, 0x09, 0x57, 0x72, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 
0x26, 0x2e, 0x6f, 0x72,
-       0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 
0x61, 0x76, 0x61, 0x74,
-       0x61, 0x2e, 0x66, 0x75, 0x73, 0x65, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 
0x46, 0x69, 0x6c, 0x65,
-       0x52, 0x65, 0x71, 0x1a, 0x26, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 
0x61, 0x63, 0x68, 0x65,
-       0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 0x2e, 0x66, 0x75, 
0x73, 0x65, 0x2e, 0x57,
-       0x72, 0x69, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x22, 
0x00, 0x12, 0x63, 0x0a,
-       0x0b, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x6f, 0x64, 0x65, 0x41, 0x74, 0x74, 
0x12, 0x28, 0x2e, 0x6f,
-       0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 
0x72, 0x61, 0x76, 0x61,
-       0x74, 0x61, 0x2e, 0x66, 0x75, 0x73, 0x65, 0x2e, 0x53, 0x65, 0x74, 0x49, 
0x6e, 0x6f, 0x64, 0x65,
-       0x41, 0x74, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x28, 0x2e, 0x6f, 0x72, 0x67, 
0x2e, 0x61, 0x70, 0x61,
-       0x63, 0x68, 0x65, 0x2e, 0x61, 0x69, 0x72, 0x61, 0x76, 0x61, 0x74, 0x61, 
0x2e, 0x66, 0x75, 0x73,
-       0x65, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x6f, 0x64, 0x65, 0x41, 0x74, 
0x74, 0x52, 0x65, 0x73,
-       0x22, 0x00, 0x42, 0x0b, 0x5a, 0x09, 0x67, 0x72, 0x70, 0x63, 0x66, 0x73, 
0x2f, 0x70, 0x62, 0x62,
-       0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-       file_proto_grpcfs_proto_rawDescOnce sync.Once
-       file_proto_grpcfs_proto_rawDescData = file_proto_grpcfs_proto_rawDesc
-)
-
-func file_proto_grpcfs_proto_rawDescGZIP() []byte {
-       file_proto_grpcfs_proto_rawDescOnce.Do(func() {
-               file_proto_grpcfs_proto_rawDescData = 
protoimpl.X.CompressGZIP(file_proto_grpcfs_proto_rawDescData)
-       })
-       return file_proto_grpcfs_proto_rawDescData
-}
-
-var file_proto_grpcfs_proto_msgTypes = make([]protoimpl.MessageInfo, 25)
-var file_proto_grpcfs_proto_goTypes = []any{
-       (*RPCContext)(nil),            // 0: org.apache.airavata.fuse.RPCContext
-       (*OpContext)(nil),             // 1: org.apache.airavata.fuse.OpContext
-       (*StatFs)(nil),                // 2: org.apache.airavata.fuse.StatFs
-       (*FileInfo)(nil),              // 3: org.apache.airavata.fuse.FileInfo
-       (*OpenedDir)(nil),             // 4: org.apache.airavata.fuse.OpenedDir
-       (*OpenedFile)(nil),            // 5: org.apache.airavata.fuse.OpenedFile
-       (*DirEntry)(nil),              // 6: org.apache.airavata.fuse.DirEntry
-       (*FileEntry)(nil),             // 7: org.apache.airavata.fuse.FileEntry
-       (*InodeAtt)(nil),              // 8: org.apache.airavata.fuse.InodeAtt
-       (*StatFsReq)(nil),             // 9: org.apache.airavata.fuse.StatFsReq
-       (*FileInfoReq)(nil),           // 10: 
org.apache.airavata.fuse.FileInfoReq
-       (*OpenDirReq)(nil),            // 11: 
org.apache.airavata.fuse.OpenDirReq
-       (*OpenFileReq)(nil),           // 12: 
org.apache.airavata.fuse.OpenFileReq
-       (*ReadDirReq)(nil),            // 13: 
org.apache.airavata.fuse.ReadDirReq
-       (*ReadFileReq)(nil),           // 14: 
org.apache.airavata.fuse.ReadFileReq
-       (*WriteFileReq)(nil),          // 15: 
org.apache.airavata.fuse.WriteFileReq
-       (*SetInodeAttReq)(nil),        // 16: 
org.apache.airavata.fuse.SetInodeAttReq
-       (*StatFsRes)(nil),             // 17: org.apache.airavata.fuse.StatFsRes
-       (*FileInfoRes)(nil),           // 18: 
org.apache.airavata.fuse.FileInfoRes
-       (*OpenDirRes)(nil),            // 19: 
org.apache.airavata.fuse.OpenDirRes
-       (*OpenFileRes)(nil),           // 20: 
org.apache.airavata.fuse.OpenFileRes
-       (*ReadDirRes)(nil),            // 21: 
org.apache.airavata.fuse.ReadDirRes
-       (*ReadFileRes)(nil),           // 22: 
org.apache.airavata.fuse.ReadFileRes
-       (*WriteFileRes)(nil),          // 23: 
org.apache.airavata.fuse.WriteFileRes
-       (*SetInodeAttRes)(nil),        // 24: 
org.apache.airavata.fuse.SetInodeAttRes
-       (*timestamppb.Timestamp)(nil), // 25: google.protobuf.Timestamp
-}
-var file_proto_grpcfs_proto_depIdxs = []int32{
-       25, // 0: org.apache.airavata.fuse.FileInfo.ModTime:type_name -> 
google.protobuf.Timestamp
-       1,  // 1: org.apache.airavata.fuse.OpenedDir.OpContext:type_name -> 
org.apache.airavata.fuse.OpContext
-       1,  // 2: org.apache.airavata.fuse.OpenedFile.OpContext:type_name -> 
org.apache.airavata.fuse.OpContext
-       3,  // 3: org.apache.airavata.fuse.DirEntry.Info:type_name -> 
org.apache.airavata.fuse.FileInfo
-       1,  // 4: org.apache.airavata.fuse.FileEntry.OpContext:type_name -> 
org.apache.airavata.fuse.OpContext
-       25, // 5: org.apache.airavata.fuse.InodeAtt.Atime:type_name -> 
google.protobuf.Timestamp
-       25, // 6: org.apache.airavata.fuse.InodeAtt.Mtime:type_name -> 
google.protobuf.Timestamp
-       25, // 7: org.apache.airavata.fuse.InodeAtt.Ctime:type_name -> 
google.protobuf.Timestamp
-       0,  // 8: org.apache.airavata.fuse.StatFsReq.Context:type_name -> 
org.apache.airavata.fuse.RPCContext
-       0,  // 9: org.apache.airavata.fuse.FileInfoReq.Context:type_name -> 
org.apache.airavata.fuse.RPCContext
-       0,  // 10: org.apache.airavata.fuse.OpenDirReq.Context:type_name -> 
org.apache.airavata.fuse.RPCContext
-       0,  // 11: org.apache.airavata.fuse.OpenFileReq.Context:type_name -> 
org.apache.airavata.fuse.RPCContext
-       0,  // 12: org.apache.airavata.fuse.ReadDirReq.Context:type_name -> 
org.apache.airavata.fuse.RPCContext
-       0,  // 13: org.apache.airavata.fuse.ReadFileReq.Context:type_name -> 
org.apache.airavata.fuse.RPCContext
-       0,  // 14: org.apache.airavata.fuse.WriteFileReq.Context:type_name -> 
org.apache.airavata.fuse.RPCContext
-       0,  // 15: org.apache.airavata.fuse.SetInodeAttReq.Context:type_name -> 
org.apache.airavata.fuse.RPCContext
-       25, // 16: org.apache.airavata.fuse.SetInodeAttReq.ATime:type_name -> 
google.protobuf.Timestamp
-       25, // 17: org.apache.airavata.fuse.SetInodeAttReq.MTime:type_name -> 
google.protobuf.Timestamp
-       2,  // 18: org.apache.airavata.fuse.StatFsRes.Result:type_name -> 
org.apache.airavata.fuse.StatFs
-       3,  // 19: org.apache.airavata.fuse.FileInfoRes.Result:type_name -> 
org.apache.airavata.fuse.FileInfo
-       4,  // 20: org.apache.airavata.fuse.OpenDirRes.Result:type_name -> 
org.apache.airavata.fuse.OpenedDir
-       5,  // 21: org.apache.airavata.fuse.OpenFileRes.Result:type_name -> 
org.apache.airavata.fuse.OpenedFile
-       6,  // 22: org.apache.airavata.fuse.ReadDirRes.Result:type_name -> 
org.apache.airavata.fuse.DirEntry
-       7,  // 23: org.apache.airavata.fuse.ReadFileRes.Result:type_name -> 
org.apache.airavata.fuse.FileEntry
-       8,  // 24: org.apache.airavata.fuse.SetInodeAttRes.Result:type_name -> 
org.apache.airavata.fuse.InodeAtt
-       9,  // 25: org.apache.airavata.fuse.FuseService.StatFs:input_type -> 
org.apache.airavata.fuse.StatFsReq
-       10, // 26: org.apache.airavata.fuse.FuseService.FileInfo:input_type -> 
org.apache.airavata.fuse.FileInfoReq
-       11, // 27: org.apache.airavata.fuse.FuseService.OpenDir:input_type -> 
org.apache.airavata.fuse.OpenDirReq
-       12, // 28: org.apache.airavata.fuse.FuseService.OpenFile:input_type -> 
org.apache.airavata.fuse.OpenFileReq
-       13, // 29: org.apache.airavata.fuse.FuseService.ReadDir:input_type -> 
org.apache.airavata.fuse.ReadDirReq
-       14, // 30: org.apache.airavata.fuse.FuseService.ReadFile:input_type -> 
org.apache.airavata.fuse.ReadFileReq
-       15, // 31: org.apache.airavata.fuse.FuseService.WriteFile:input_type -> 
org.apache.airavata.fuse.WriteFileReq
-       16, // 32: org.apache.airavata.fuse.FuseService.SetInodeAtt:input_type 
-> org.apache.airavata.fuse.SetInodeAttReq
-       17, // 33: org.apache.airavata.fuse.FuseService.StatFs:output_type -> 
org.apache.airavata.fuse.StatFsRes
-       18, // 34: org.apache.airavata.fuse.FuseService.FileInfo:output_type -> 
org.apache.airavata.fuse.FileInfoRes
-       19, // 35: org.apache.airavata.fuse.FuseService.OpenDir:output_type -> 
org.apache.airavata.fuse.OpenDirRes
-       20, // 36: org.apache.airavata.fuse.FuseService.OpenFile:output_type -> 
org.apache.airavata.fuse.OpenFileRes
-       21, // 37: org.apache.airavata.fuse.FuseService.ReadDir:output_type -> 
org.apache.airavata.fuse.ReadDirRes
-       22, // 38: org.apache.airavata.fuse.FuseService.ReadFile:output_type -> 
org.apache.airavata.fuse.ReadFileRes
-       23, // 39: org.apache.airavata.fuse.FuseService.WriteFile:output_type 
-> org.apache.airavata.fuse.WriteFileRes
-       24, // 40: org.apache.airavata.fuse.FuseService.SetInodeAtt:output_type 
-> org.apache.airavata.fuse.SetInodeAttRes
-       33, // [33:41] is the sub-list for method output_type
-       25, // [25:33] is the sub-list for method input_type
-       25, // [25:25] is the sub-list for extension type_name
-       25, // [25:25] is the sub-list for extension extendee
-       0,  // [0:25] is the sub-list for field type_name
-}
-
-func init() { file_proto_grpcfs_proto_init() }
-func file_proto_grpcfs_proto_init() {
-       if File_proto_grpcfs_proto != nil {
-               return
-       }
-       if !protoimpl.UnsafeEnabled {
-               file_proto_grpcfs_proto_msgTypes[0].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*RPCContext); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[1].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*OpContext); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[2].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*StatFs); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[3].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*FileInfo); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[4].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*OpenedDir); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[5].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*OpenedFile); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[6].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*DirEntry); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[7].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*FileEntry); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[8].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*InodeAtt); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[9].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*StatFsReq); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[10].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*FileInfoReq); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[11].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*OpenDirReq); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[12].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*OpenFileReq); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[13].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*ReadDirReq); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[14].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*ReadFileReq); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[15].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*WriteFileReq); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[16].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*SetInodeAttReq); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[17].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*StatFsRes); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[18].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*FileInfoRes); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[19].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*OpenDirRes); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[20].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*OpenFileRes); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[21].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*ReadDirRes); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[22].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*ReadFileRes); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[23].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*WriteFileRes); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-               file_proto_grpcfs_proto_msgTypes[24].Exporter = func(v any, i 
int) any {
-                       switch v := v.(*SetInodeAttRes); i {
-                       case 0:
-                               return &v.state
-                       case 1:
-                               return &v.sizeCache
-                       case 2:
-                               return &v.unknownFields
-                       default:
-                               return nil
-                       }
-               }
-       }
-       file_proto_grpcfs_proto_msgTypes[16].OneofWrappers = []any{}
-       type x struct{}
-       out := protoimpl.TypeBuilder{
-               File: protoimpl.DescBuilder{
-                       GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-                       RawDescriptor: file_proto_grpcfs_proto_rawDesc,
-                       NumEnums:      0,
-                       NumMessages:   25,
-                       NumExtensions: 0,
-                       NumServices:   1,
-               },
-               GoTypes:           file_proto_grpcfs_proto_goTypes,
-               DependencyIndexes: file_proto_grpcfs_proto_depIdxs,
-               MessageInfos:      file_proto_grpcfs_proto_msgTypes,
-       }.Build()
-       File_proto_grpcfs_proto = out.File
-       file_proto_grpcfs_proto_rawDesc = nil
-       file_proto_grpcfs_proto_goTypes = nil
-       file_proto_grpcfs_proto_depIdxs = nil
-}
diff --git a/airavata-fuse/src/grpcfs/pb/grpcfs_grpc.pb.go 
b/airavata-fuse/src/grpcfs/pb/grpcfs_grpc.pb.go
deleted file mode 100644
index df7e06ac18..0000000000
--- a/airavata-fuse/src/grpcfs/pb/grpcfs_grpc.pb.go
+++ /dev/null
@@ -1,396 +0,0 @@
-//
-// Licensed to the Apache Software Foundation (ASF) under one or more
-// contributor license agreements.  See the NOTICE file distributed with
-// this work for additional information regarding copyright ownership.
-// The ASF licenses this file to You under the Apache License, Version 2.0
-// (the "License"); you may not use this file except in compliance with
-// the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
-// versions:
-// - protoc-gen-go-grpc v1.4.0
-// - protoc             v4.24.4
-// source: proto/grpcfs.proto
-
-package pb
-
-import (
-       context "context"
-       grpc "google.golang.org/grpc"
-       codes "google.golang.org/grpc/codes"
-       status "google.golang.org/grpc/status"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-// Requires gRPC-Go v1.62.0 or later.
-const _ = grpc.SupportPackageIsVersion8
-
-const (
-       FuseService_StatFs_FullMethodName      = 
"/org.apache.airavata.fuse.FuseService/StatFs"
-       FuseService_FileInfo_FullMethodName    = 
"/org.apache.airavata.fuse.FuseService/FileInfo"
-       FuseService_OpenDir_FullMethodName     = 
"/org.apache.airavata.fuse.FuseService/OpenDir"
-       FuseService_OpenFile_FullMethodName    = 
"/org.apache.airavata.fuse.FuseService/OpenFile"
-       FuseService_ReadDir_FullMethodName     = 
"/org.apache.airavata.fuse.FuseService/ReadDir"
-       FuseService_ReadFile_FullMethodName    = 
"/org.apache.airavata.fuse.FuseService/ReadFile"
-       FuseService_WriteFile_FullMethodName   = 
"/org.apache.airavata.fuse.FuseService/WriteFile"
-       FuseService_SetInodeAtt_FullMethodName = 
"/org.apache.airavata.fuse.FuseService/SetInodeAtt"
-)
-
-// FuseServiceClient is the client API for FuseService service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please 
refer to 
https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-//
-// Service Definition
-type FuseServiceClient interface {
-       StatFs(ctx context.Context, in *StatFsReq, opts ...grpc.CallOption) 
(*StatFsRes, error)
-       FileInfo(ctx context.Context, in *FileInfoReq, opts ...grpc.CallOption) 
(*FileInfoRes, error)
-       OpenDir(ctx context.Context, in *OpenDirReq, opts ...grpc.CallOption) 
(*OpenDirRes, error)
-       OpenFile(ctx context.Context, in *OpenFileReq, opts ...grpc.CallOption) 
(*OpenFileRes, error)
-       ReadDir(ctx context.Context, in *ReadDirReq, opts ...grpc.CallOption) 
(*ReadDirRes, error)
-       ReadFile(ctx context.Context, in *ReadFileReq, opts ...grpc.CallOption) 
(*ReadFileRes, error)
-       WriteFile(ctx context.Context, in *WriteFileReq, opts 
...grpc.CallOption) (*WriteFileRes, error)
-       SetInodeAtt(ctx context.Context, in *SetInodeAttReq, opts 
...grpc.CallOption) (*SetInodeAttRes, error)
-}
-
-type fuseServiceClient struct {
-       cc grpc.ClientConnInterface
-}
-
-func NewFuseServiceClient(cc grpc.ClientConnInterface) FuseServiceClient {
-       return &fuseServiceClient{cc}
-}
-
-func (c *fuseServiceClient) StatFs(ctx context.Context, in *StatFsReq, opts 
...grpc.CallOption) (*StatFsRes, error) {
-       cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
-       out := new(StatFsRes)
-       err := c.cc.Invoke(ctx, FuseService_StatFs_FullMethodName, in, out, 
cOpts...)
-       if err != nil {
-               return nil, err
-       }
-       return out, nil
-}
-
-func (c *fuseServiceClient) FileInfo(ctx context.Context, in *FileInfoReq, 
opts ...grpc.CallOption) (*FileInfoRes, error) {
-       cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
-       out := new(FileInfoRes)
-       err := c.cc.Invoke(ctx, FuseService_FileInfo_FullMethodName, in, out, 
cOpts...)
-       if err != nil {
-               return nil, err
-       }
-       return out, nil
-}
-
-func (c *fuseServiceClient) OpenDir(ctx context.Context, in *OpenDirReq, opts 
...grpc.CallOption) (*OpenDirRes, error) {
-       cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
-       out := new(OpenDirRes)
-       err := c.cc.Invoke(ctx, FuseService_OpenDir_FullMethodName, in, out, 
cOpts...)
-       if err != nil {
-               return nil, err
-       }
-       return out, nil
-}
-
-func (c *fuseServiceClient) OpenFile(ctx context.Context, in *OpenFileReq, 
opts ...grpc.CallOption) (*OpenFileRes, error) {
-       cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
-       out := new(OpenFileRes)
-       err := c.cc.Invoke(ctx, FuseService_OpenFile_FullMethodName, in, out, 
cOpts...)
-       if err != nil {
-               return nil, err
-       }
-       return out, nil
-}
-
-func (c *fuseServiceClient) ReadDir(ctx context.Context, in *ReadDirReq, opts 
...grpc.CallOption) (*ReadDirRes, error) {
-       cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
-       out := new(ReadDirRes)
-       err := c.cc.Invoke(ctx, FuseService_ReadDir_FullMethodName, in, out, 
cOpts...)
-       if err != nil {
-               return nil, err
-       }
-       return out, nil
-}
-
-func (c *fuseServiceClient) ReadFile(ctx context.Context, in *ReadFileReq, 
opts ...grpc.CallOption) (*ReadFileRes, error) {
-       cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
-       out := new(ReadFileRes)
-       err := c.cc.Invoke(ctx, FuseService_ReadFile_FullMethodName, in, out, 
cOpts...)
-       if err != nil {
-               return nil, err
-       }
-       return out, nil
-}
-
-func (c *fuseServiceClient) WriteFile(ctx context.Context, in *WriteFileReq, 
opts ...grpc.CallOption) (*WriteFileRes, error) {
-       cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
-       out := new(WriteFileRes)
-       err := c.cc.Invoke(ctx, FuseService_WriteFile_FullMethodName, in, out, 
cOpts...)
-       if err != nil {
-               return nil, err
-       }
-       return out, nil
-}
-
-func (c *fuseServiceClient) SetInodeAtt(ctx context.Context, in 
*SetInodeAttReq, opts ...grpc.CallOption) (*SetInodeAttRes, error) {
-       cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
-       out := new(SetInodeAttRes)
-       err := c.cc.Invoke(ctx, FuseService_SetInodeAtt_FullMethodName, in, 
out, cOpts...)
-       if err != nil {
-               return nil, err
-       }
-       return out, nil
-}
-
-// FuseServiceServer is the server API for FuseService service.
-// All implementations must embed UnimplementedFuseServiceServer
-// for forward compatibility
-//
-// Service Definition
-type FuseServiceServer interface {
-       StatFs(context.Context, *StatFsReq) (*StatFsRes, error)
-       FileInfo(context.Context, *FileInfoReq) (*FileInfoRes, error)
-       OpenDir(context.Context, *OpenDirReq) (*OpenDirRes, error)
-       OpenFile(context.Context, *OpenFileReq) (*OpenFileRes, error)
-       ReadDir(context.Context, *ReadDirReq) (*ReadDirRes, error)
-       ReadFile(context.Context, *ReadFileReq) (*ReadFileRes, error)
-       WriteFile(context.Context, *WriteFileReq) (*WriteFileRes, error)
-       SetInodeAtt(context.Context, *SetInodeAttReq) (*SetInodeAttRes, error)
-       mustEmbedUnimplementedFuseServiceServer()
-}
-
-// UnimplementedFuseServiceServer must be embedded to have forward compatible 
implementations.
-type UnimplementedFuseServiceServer struct {
-}
-
-func (UnimplementedFuseServiceServer) StatFs(context.Context, *StatFsReq) 
(*StatFsRes, error) {
-       return nil, status.Errorf(codes.Unimplemented, "method StatFs not 
implemented")
-}
-func (UnimplementedFuseServiceServer) FileInfo(context.Context, *FileInfoReq) 
(*FileInfoRes, error) {
-       return nil, status.Errorf(codes.Unimplemented, "method FileInfo not 
implemented")
-}
-func (UnimplementedFuseServiceServer) OpenDir(context.Context, *OpenDirReq) 
(*OpenDirRes, error) {
-       return nil, status.Errorf(codes.Unimplemented, "method OpenDir not 
implemented")
-}
-func (UnimplementedFuseServiceServer) OpenFile(context.Context, *OpenFileReq) 
(*OpenFileRes, error) {
-       return nil, status.Errorf(codes.Unimplemented, "method OpenFile not 
implemented")
-}
-func (UnimplementedFuseServiceServer) ReadDir(context.Context, *ReadDirReq) 
(*ReadDirRes, error) {
-       return nil, status.Errorf(codes.Unimplemented, "method ReadDir not 
implemented")
-}
-func (UnimplementedFuseServiceServer) ReadFile(context.Context, *ReadFileReq) 
(*ReadFileRes, error) {
-       return nil, status.Errorf(codes.Unimplemented, "method ReadFile not 
implemented")
-}
-func (UnimplementedFuseServiceServer) WriteFile(context.Context, 
*WriteFileReq) (*WriteFileRes, error) {
-       return nil, status.Errorf(codes.Unimplemented, "method WriteFile not 
implemented")
-}
-func (UnimplementedFuseServiceServer) SetInodeAtt(context.Context, 
*SetInodeAttReq) (*SetInodeAttRes, error) {
-       return nil, status.Errorf(codes.Unimplemented, "method SetInodeAtt not 
implemented")
-}
-func (UnimplementedFuseServiceServer) 
mustEmbedUnimplementedFuseServiceServer() {}
-
-// UnsafeFuseServiceServer may be embedded to opt out of forward compatibility 
for this service.
-// Use of this interface is not recommended, as added methods to 
FuseServiceServer will
-// result in compilation errors.
-type UnsafeFuseServiceServer interface {
-       mustEmbedUnimplementedFuseServiceServer()
-}
-
-func RegisterFuseServiceServer(s grpc.ServiceRegistrar, srv FuseServiceServer) 
{
-       s.RegisterService(&FuseService_ServiceDesc, srv)
-}
-
-func _FuseService_StatFs_Handler(srv interface{}, ctx context.Context, dec 
func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, 
error) {
-       in := new(StatFsReq)
-       if err := dec(in); err != nil {
-               return nil, err
-       }
-       if interceptor == nil {
-               return srv.(FuseServiceServer).StatFs(ctx, in)
-       }
-       info := &grpc.UnaryServerInfo{
-               Server:     srv,
-               FullMethod: FuseService_StatFs_FullMethodName,
-       }
-       handler := func(ctx context.Context, req interface{}) (interface{}, 
error) {
-               return srv.(FuseServiceServer).StatFs(ctx, req.(*StatFsReq))
-       }
-       return interceptor(ctx, in, info, handler)
-}
-
-func _FuseService_FileInfo_Handler(srv interface{}, ctx context.Context, dec 
func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, 
error) {
-       in := new(FileInfoReq)
-       if err := dec(in); err != nil {
-               return nil, err
-       }
-       if interceptor == nil {
-               return srv.(FuseServiceServer).FileInfo(ctx, in)
-       }
-       info := &grpc.UnaryServerInfo{
-               Server:     srv,
-               FullMethod: FuseService_FileInfo_FullMethodName,
-       }
-       handler := func(ctx context.Context, req interface{}) (interface{}, 
error) {
-               return srv.(FuseServiceServer).FileInfo(ctx, req.(*FileInfoReq))
-       }
-       return interceptor(ctx, in, info, handler)
-}
-
-func _FuseService_OpenDir_Handler(srv interface{}, ctx context.Context, dec 
func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, 
error) {
-       in := new(OpenDirReq)
-       if err := dec(in); err != nil {
-               return nil, err
-       }
-       if interceptor == nil {
-               return srv.(FuseServiceServer).OpenDir(ctx, in)
-       }
-       info := &grpc.UnaryServerInfo{
-               Server:     srv,
-               FullMethod: FuseService_OpenDir_FullMethodName,
-       }
-       handler := func(ctx context.Context, req interface{}) (interface{}, 
error) {
-               return srv.(FuseServiceServer).OpenDir(ctx, req.(*OpenDirReq))
-       }
-       return interceptor(ctx, in, info, handler)
-}
-
-func _FuseService_OpenFile_Handler(srv interface{}, ctx context.Context, dec 
func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, 
error) {
-       in := new(OpenFileReq)
-       if err := dec(in); err != nil {
-               return nil, err
-       }
-       if interceptor == nil {
-               return srv.(FuseServiceServer).OpenFile(ctx, in)
-       }
-       info := &grpc.UnaryServerInfo{
-               Server:     srv,
-               FullMethod: FuseService_OpenFile_FullMethodName,
-       }
-       handler := func(ctx context.Context, req interface{}) (interface{}, 
error) {
-               return srv.(FuseServiceServer).OpenFile(ctx, req.(*OpenFileReq))
-       }
-       return interceptor(ctx, in, info, handler)
-}
-
-func _FuseService_ReadDir_Handler(srv interface{}, ctx context.Context, dec 
func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, 
error) {
-       in := new(ReadDirReq)
-       if err := dec(in); err != nil {
-               return nil, err
-       }
-       if interceptor == nil {
-               return srv.(FuseServiceServer).ReadDir(ctx, in)
-       }
-       info := &grpc.UnaryServerInfo{
-               Server:     srv,
-               FullMethod: FuseService_ReadDir_FullMethodName,
-       }
-       handler := func(ctx context.Context, req interface{}) (interface{}, 
error) {
-               return srv.(FuseServiceServer).ReadDir(ctx, req.(*ReadDirReq))
-       }
-       return interceptor(ctx, in, info, handler)
-}
-
-func _FuseService_ReadFile_Handler(srv interface{}, ctx context.Context, dec 
func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, 
error) {
-       in := new(ReadFileReq)
-       if err := dec(in); err != nil {
-               return nil, err
-       }
-       if interceptor == nil {
-               return srv.(FuseServiceServer).ReadFile(ctx, in)
-       }
-       info := &grpc.UnaryServerInfo{
-               Server:     srv,
-               FullMethod: FuseService_ReadFile_FullMethodName,
-       }
-       handler := func(ctx context.Context, req interface{}) (interface{}, 
error) {
-               return srv.(FuseServiceServer).ReadFile(ctx, req.(*ReadFileReq))
-       }
-       return interceptor(ctx, in, info, handler)
-}
-
-func _FuseService_WriteFile_Handler(srv interface{}, ctx context.Context, dec 
func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, 
error) {
-       in := new(WriteFileReq)
-       if err := dec(in); err != nil {
-               return nil, err
-       }
-       if interceptor == nil {
-               return srv.(FuseServiceServer).WriteFile(ctx, in)
-       }
-       info := &grpc.UnaryServerInfo{
-               Server:     srv,
-               FullMethod: FuseService_WriteFile_FullMethodName,
-       }
-       handler := func(ctx context.Context, req interface{}) (interface{}, 
error) {
-               return srv.(FuseServiceServer).WriteFile(ctx, 
req.(*WriteFileReq))
-       }
-       return interceptor(ctx, in, info, handler)
-}
-
-func _FuseService_SetInodeAtt_Handler(srv interface{}, ctx context.Context, 
dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) 
(interface{}, error) {
-       in := new(SetInodeAttReq)
-       if err := dec(in); err != nil {
-               return nil, err
-       }
-       if interceptor == nil {
-               return srv.(FuseServiceServer).SetInodeAtt(ctx, in)
-       }
-       info := &grpc.UnaryServerInfo{
-               Server:     srv,
-               FullMethod: FuseService_SetInodeAtt_FullMethodName,
-       }
-       handler := func(ctx context.Context, req interface{}) (interface{}, 
error) {
-               return srv.(FuseServiceServer).SetInodeAtt(ctx, 
req.(*SetInodeAttReq))
-       }
-       return interceptor(ctx, in, info, handler)
-}
-
-// FuseService_ServiceDesc is the grpc.ServiceDesc for FuseService service.
-// It's only intended for direct use with grpc.RegisterService,
-// and not to be introspected or modified (even as a copy)
-var FuseService_ServiceDesc = grpc.ServiceDesc{
-       ServiceName: "org.apache.airavata.fuse.FuseService",
-       HandlerType: (*FuseServiceServer)(nil),
-       Methods: []grpc.MethodDesc{
-               {
-                       MethodName: "StatFs",
-                       Handler:    _FuseService_StatFs_Handler,
-               },
-               {
-                       MethodName: "FileInfo",
-                       Handler:    _FuseService_FileInfo_Handler,
-               },
-               {
-                       MethodName: "OpenDir",
-                       Handler:    _FuseService_OpenDir_Handler,
-               },
-               {
-                       MethodName: "OpenFile",
-                       Handler:    _FuseService_OpenFile_Handler,
-               },
-               {
-                       MethodName: "ReadDir",
-                       Handler:    _FuseService_ReadDir_Handler,
-               },
-               {
-                       MethodName: "ReadFile",
-                       Handler:    _FuseService_ReadFile_Handler,
-               },
-               {
-                       MethodName: "WriteFile",
-                       Handler:    _FuseService_WriteFile_Handler,
-               },
-               {
-                       MethodName: "SetInodeAtt",
-                       Handler:    _FuseService_SetInodeAtt_Handler,
-               },
-       },
-       Streams:  []grpc.StreamDesc{},
-       Metadata: "proto/grpcfs.proto",
-}
diff --git a/airavata-fuse/src/grpcfs_client/go.mod 
b/airavata-fuse/src/grpcfs_client/go.mod
deleted file mode 100644
index 475beda4a8..0000000000
--- a/airavata-fuse/src/grpcfs_client/go.mod
+++ /dev/null
@@ -1,19 +0,0 @@
-module client
-
-go 1.23.0
-
-replace grpcfs => ../grpcfs
-
-require (
-       github.com/jacobsa/fuse v0.0.0-20250702080931-3e9d24d5e3ff
-       grpcfs v0.0.0-00010101000000-000000000000
-)
-
-require (
-       golang.org/x/net v0.41.0 // indirect
-       golang.org/x/sys v0.33.0 // indirect
-       golang.org/x/text v0.26.0 // indirect
-       google.golang.org/genproto/googleapis/rpc 
v0.0.0-20250603155806-513f23925822 // indirect
-       google.golang.org/grpc v1.73.0 // indirect
-       google.golang.org/protobuf v1.36.6 // indirect
-)
diff --git a/airavata-fuse/src/grpcfs_client/go.sum 
b/airavata-fuse/src/grpcfs_client/go.sum
deleted file mode 100644
index f12bf1a44e..0000000000
--- a/airavata-fuse/src/grpcfs_client/go.sum
+++ /dev/null
@@ -1,32 +0,0 @@
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-github.com/google/go-cmp v0.6.0/go.mod 
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/jacobsa/fuse v0.0.0-20240626143436-8a36813dc074 
h1:rrmTkL654m7vQTYzi9NpEzAO7t0to5f1/jgkvSorVs8=
-github.com/jacobsa/fuse v0.0.0-20240626143436-8a36813dc074/go.mod 
h1:JYi9iIxdYNgxmMgLwtSHO/hmVnP2kfX1oc+mtx+XWLA=
-github.com/jacobsa/fuse v0.0.0-20250702080931-3e9d24d5e3ff 
h1:QamXUXyWL9hTh55v6lFJdJOJN9bjX9i2Ml4zHZQq//M=
-github.com/jacobsa/fuse v0.0.0-20250702080931-3e9d24d5e3ff/go.mod 
h1:fcpw1yk/suvFhB8rT9P+pst+NLboWsBLky9csooKjPc=
-github.com/kylelemons/godebug v1.1.0 
h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
-github.com/kylelemons/godebug v1.1.0/go.mod 
h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
-golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
-golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
-golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw=
-golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA=
-golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
-golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
-golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
-golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
-golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
-golang.org/x/text v0.23.0/go.mod 
h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
-golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M=
-golang.org/x/text v0.26.0/go.mod 
h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 
h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8=
-google.golang.org/genproto/googleapis/rpc 
v0.0.0-20240528184218-531527333157/go.mod 
h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 
h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE=
-google.golang.org/genproto/googleapis/rpc 
v0.0.0-20250603155806-513f23925822/go.mod 
h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
-google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc=
-google.golang.org/grpc v1.65.0/go.mod 
h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ=
-google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok=
-google.golang.org/grpc v1.73.0/go.mod 
h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc=
-google.golang.org/protobuf v1.34.2 
h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
-google.golang.org/protobuf v1.34.2/go.mod 
h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
-google.golang.org/protobuf v1.36.6 
h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
-google.golang.org/protobuf v1.36.6/go.mod 
h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
diff --git a/airavata-fuse/src/grpcfs_client/main.go 
b/airavata-fuse/src/grpcfs_client/main.go
deleted file mode 100644
index d4e8e2e4ab..0000000000
--- a/airavata-fuse/src/grpcfs_client/main.go
+++ /dev/null
@@ -1,82 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-
-//   http://www.apache.org/licenses/LICENSE-2.0
-
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package main
-
-import (
-       "flag"
-       "log"
-       "os"
-       "os/signal"
-       "path/filepath"
-
-       "grpcfs"
-
-       "github.com/jacobsa/fuse"
-)
-
-var logger = log.Default()
-
-func handleErrIfAny(err error, message string) {
-       if err != nil {
-               logger.Fatalf("%s: %v\n", message, err)
-       }
-}
-
-func logState(message string, v ...any) {
-       logger.Print(message, v)
-}
-
-func main() {
-
-       var mountPoint string
-       var servePath string
-
-       flag.StringVar(&mountPoint, "mount", "", "Mount point")
-       flag.StringVar(&servePath, "serve", "", "Path to serve")
-       flag.Parse()
-
-       if mountPoint == "" || servePath == "" {
-               logger.Fatal("Please specify both mount point and path to 
serve")
-       }
-
-       mountPoint, err := filepath.Abs(mountPoint)
-       handleErrIfAny(err, "Invalid mount point")
-
-       server, err := grpcfs.FuseServer("127.0.0.1:19900", servePath, logger)
-       handleErrIfAny(err, "Error starting fuse server")
-
-       cfg := &fuse.MountConfig{
-               FSName:      "grpcFS",
-               Subtype:     "airavata",
-               VolumeName:  "GRPC FS - Airavata",
-               ReadOnly:    false,
-               ErrorLogger: logger,
-       }
-       mfs, err := fuse.Mount(mountPoint, server, cfg)
-       handleErrIfAny(err, "Error when mounting fs")
-
-       logState("running until interrupt", mfs)
-       sigCh := make(chan os.Signal, 1)
-       signal.Notify(sigCh, os.Interrupt)
-       <-sigCh
-       logState("interrupt received, terminating.")
-
-       if err := fuse.Unmount(mountPoint); err != nil {
-               logger.Fatalf("Unmount fail: %v\n", err)
-       }
-}
diff --git a/airavata-fuse/src/grpcfs_server/go.mod 
b/airavata-fuse/src/grpcfs_server/go.mod
deleted file mode 100644
index bc6fdebefd..0000000000
--- a/airavata-fuse/src/grpcfs_server/go.mod
+++ /dev/null
@@ -1,20 +0,0 @@
-module server
-
-go 1.23.0
-
-toolchain go1.24.4
-
-replace grpcfs => ../grpcfs
-
-require (
-       golang.org/x/sys v0.33.0
-       google.golang.org/grpc v1.73.0
-       google.golang.org/protobuf v1.36.6
-       grpcfs v0.0.0-00010101000000-000000000000
-)
-
-require (
-       golang.org/x/net v0.41.0 // indirect
-       golang.org/x/text v0.26.0 // indirect
-       google.golang.org/genproto/googleapis/rpc 
v0.0.0-20250603155806-513f23925822 // indirect
-)
diff --git a/airavata-fuse/src/grpcfs_server/go.sum 
b/airavata-fuse/src/grpcfs_server/go.sum
deleted file mode 100644
index 0e36a27794..0000000000
--- a/airavata-fuse/src/grpcfs_server/go.sum
+++ /dev/null
@@ -1,26 +0,0 @@
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-github.com/google/go-cmp v0.6.0/go.mod 
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=
-golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
-golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw=
-golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA=
-golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
-golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
-golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
-golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
-golang.org/x/text v0.15.0/go.mod 
h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
-golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M=
-golang.org/x/text v0.26.0/go.mod 
h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 
h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8=
-google.golang.org/genproto/googleapis/rpc 
v0.0.0-20240528184218-531527333157/go.mod 
h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 
h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE=
-google.golang.org/genproto/googleapis/rpc 
v0.0.0-20250603155806-513f23925822/go.mod 
h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
-google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc=
-google.golang.org/grpc v1.65.0/go.mod 
h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ=
-google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok=
-google.golang.org/grpc v1.73.0/go.mod 
h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc=
-google.golang.org/protobuf v1.34.2 
h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
-google.golang.org/protobuf v1.34.2/go.mod 
h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
-google.golang.org/protobuf v1.36.6 
h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
-google.golang.org/protobuf v1.36.6/go.mod 
h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
diff --git a/airavata-fuse/src/grpcfs_server/main.go 
b/airavata-fuse/src/grpcfs_server/main.go
deleted file mode 100644
index 686ceb065e..0000000000
--- a/airavata-fuse/src/grpcfs_server/main.go
+++ /dev/null
@@ -1,239 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-
-//   http://www.apache.org/licenses/LICENSE-2.0
-
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package main
-
-import (
-       "context"
-       "grpcfs/pb"
-       "log"
-       "net"
-       "os"
-       "os/signal"
-       "syscall"
-
-       "golang.org/x/sys/unix"
-
-       "google.golang.org/grpc"
-       "google.golang.org/protobuf/types/known/timestamppb"
-)
-
-var logger = log.Default()
-
-func handleErr(err error, message string) error {
-       if err != nil {
-               logger.Printf("%s: %v\n", message, err)
-               return err
-       }
-       return nil
-}
-
-func logState(message string, v ...any) {
-       logger.Print(message, v)
-}
-
-type server struct {
-       pb.FuseServiceServer
-}
-
-func (s *server) StatFs(ctx context.Context, req *pb.StatFsReq) 
(*pb.StatFsRes, error) {
-       path := req.Name
-       rpcCtx := req.Context
-       logger.Print("received valid StatFS request. ", path, rpcCtx)
-       stat := &unix.Statfs_t{}
-       unix.Statfs(req.Name, stat)
-       res := &pb.StatFsRes{
-               Result: &pb.StatFs{
-                       BlockSize:       uint32(stat.Bsize),
-                       Blocks:          stat.Blocks,
-                       BlocksFree:      stat.Bfree,
-                       BlocksAvailable: stat.Bavail,
-                       IoSize:          uint32(stat.Bsize),
-                       InodesFree:      stat.Ffree,
-                       Inodes:          stat.Files,
-               },
-       }
-       return res, nil
-}
-
-func (s *server) FileInfo(ctx context.Context, req *pb.FileInfoReq) 
(*pb.FileInfoRes, error) {
-       path := req.Name
-       rpcCtx := req.Context
-       logger.Print("received valid FileInfo request. ", path, rpcCtx)
-       fileInfo, err := os.Stat(path)
-       if handleErr(err, "os.Stat failed") != nil {
-               return nil, err
-       }
-       stat := fileInfo.Sys().(*syscall.Stat_t)
-       res := &pb.FileInfoRes{
-               Result: &pb.FileInfo{
-                       Name:    fileInfo.Name(),
-                       Size:    fileInfo.Size(),
-                       Mode:    uint32(fileInfo.Mode()),
-                       ModTime: timestamppb.New(fileInfo.ModTime()),
-                       IsDir:   fileInfo.IsDir(),
-                       Ino:     stat.Ino,
-               },
-       }
-       logger.Print("responded valid FileInfo. ", res.Result)
-       return res, nil
-}
-
-// TODO implement any locks here
-func (s *server) OpenDir(ctx context.Context, req *pb.OpenDirReq) 
(*pb.OpenDirRes, error) {
-       path := req.Name
-       rpcCtx := req.Context
-       logger.Print("received valid OpenDir request. ", path, rpcCtx)
-       res := &pb.OpenDirRes{
-               Result: &pb.OpenedDir{},
-       }
-       return res, nil
-}
-
-// TODO implement any locks here
-func (s *server) OpenFile(ctx context.Context, req *pb.OpenFileReq) 
(*pb.OpenFileRes, error) {
-       path := req.Name
-       rpcCtx := req.Context
-       logger.Print("received valid OpenFile request. ", path, rpcCtx)
-       res := &pb.OpenFileRes{
-               Result: &pb.OpenedFile{},
-       }
-       return res, nil
-}
-
-func (s *server) ReadDir(ctx context.Context, req *pb.ReadDirReq) 
(*pb.ReadDirRes, error) {
-       path := req.Name
-       rpcCtx := req.Context
-       logger.Print("received valid ReadDir request. ", path, rpcCtx)
-       entries, err := os.ReadDir(path)
-       if handleErr(err, "os.ReadDir failed") != nil {
-               return nil, err
-       }
-       resEntries := []*pb.DirEntry{}
-       for _, entry := range entries {
-               info, err := entry.Info()
-               if handleErr(err, "entry.Info() failed") != nil {
-                       return nil, err
-               }
-               obj := pb.DirEntry{
-                       Name:     entry.Name(),
-                       IsDir:    entry.IsDir(),
-                       FileMode: uint32(entry.Type()),
-                       Info: &pb.FileInfo{
-                               Name:    info.Name(),
-                               Size:    info.Size(),
-                               Mode:    uint32(info.Mode()),
-                               ModTime: timestamppb.New(info.ModTime()),
-                               IsDir:   info.IsDir(),
-                               Ino:     info.Sys().(*syscall.Stat_t).Ino,
-                       },
-               }
-               resEntries = append(resEntries, &obj)
-       }
-       res := &pb.ReadDirRes{
-               Result: resEntries,
-       }
-
-       return res, nil
-}
-
-func (s *server) ReadFile(ctx context.Context, req *pb.ReadFileReq) 
(*pb.ReadFileRes, error) {
-       path := req.Name
-       rpcCtx := req.Context
-       logger.Print("received valid ReadFile request. ", path, rpcCtx)
-       file, err := os.ReadFile(path)
-       if handleErr(err, "os.Stat failed") != nil {
-               return nil, err
-       }
-       // Only Dst is used
-       res := &pb.ReadFileRes{
-               Result: &pb.FileEntry{
-                       Dst: file,
-               },
-       }
-       return res, nil
-}
-
-func (s *server) WriteFile(ctx context.Context, req *pb.WriteFileReq) 
(*pb.WriteFileRes, error) {
-       path := req.Name
-       rpcCtx := req.Context
-       data := req.Data
-       offset := req.Offset
-       // TODO properly use offset
-       logger.Print("received valid WriteFile request. ", path, rpcCtx, offset)
-       err := os.WriteFile(path, data, 0666)
-       if handleErr(err, "os.WriteFile failed") != nil {
-               return nil, err
-       }
-       res := &pb.WriteFileRes{
-               Result: true,
-       }
-       return res, nil
-}
-
-func (s *server) SetInodeAtt(ctx context.Context, req *pb.SetInodeAttReq) 
(*pb.SetInodeAttRes, error) {
-       path := req.Name
-       rpcCtx := req.Context
-       // updated values
-       size := req.Size
-       mode := req.FileMode
-       atime := req.ATime
-       mtime := req.MTime
-       logger.Print("received valid SetInodeAtt request. ", path, rpcCtx, 
size, mode, atime, mtime)
-       if size != nil {
-               os.Truncate(path, int64(*size))
-       }
-       if mode != nil {
-               os.Chmod(path, os.FileMode(*mode))
-       }
-       if (atime != nil) && (mtime != nil) {
-               os.Chtimes(path, atime.AsTime(), mtime.AsTime())
-       }
-       // once updated, get and return latest values
-       fileInfo, err := os.Stat(path)
-       if handleErr(err, "os.Stat failed") != nil {
-               return nil, err
-       }
-       res := &pb.SetInodeAttRes{
-               Result: &pb.InodeAtt{
-                       Size:     uint64(fileInfo.Size()),
-                       FileMode: uint32(fileInfo.Mode()),
-                       Mtime:    timestamppb.New(fileInfo.ModTime()),
-                       Atime:    timestamppb.New(fileInfo.ModTime()),
-               },
-       }
-       return res, nil
-}
-
-func main() {
-
-       listener, err := net.Listen("tcp", "127.0.0.1:50000")
-       if handleErr(err, "Could not start GRPC server") != nil {
-               os.Exit(1)
-       }
-
-       s := grpc.NewServer()
-       pb.RegisterFuseServiceServer(s, &server{})
-
-       go s.Serve(listener)
-       logState("running until interrupt")
-
-       sigCh := make(chan os.Signal, 1)
-       signal.Notify(sigCh, os.Interrupt)
-       <-sigCh
-       logState("interrupt received, terminating.")
-}
diff --git a/airavata-fuse/src/proto/grpcfs.proto 
b/airavata-fuse/src/proto/grpcfs.proto
deleted file mode 100644
index 10a2d80adc..0000000000
--- a/airavata-fuse/src/proto/grpcfs.proto
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto3";
-
-package org.apache.airavata.fuse;
-
-import "google/protobuf/timestamp.proto";
-
-option go_package="grpcfs/pb";
-
-// RPC Helper Context - Define as needed
-message RPCContext {
-       string GatewayId = 1;
-       string AccessToken = 2;
-       string AgentId = 3;
-}
-
-// Primitive
-message OpContext { uint64 FuseId = 1; uint64 Pid = 2; uint64 Uid = 3; }
-
-// Toplevel
-message StatFs {
-       uint32 BlockSize = 1;
-       uint64 Blocks = 2;
-    uint64 BlocksFree = 3;
-    uint64 BlocksAvailable = 4;
-       uint32 IoSize = 5;
-       uint64 Inodes = 6;
-       uint64 InodesFree = 7;
-}
-
-message FileInfo {
-       string Name = 1;
-       int64 Size = 2;
-       uint32 Mode = 3;
-       google.protobuf.Timestamp ModTime = 4;
-       bool IsDir = 5;
-       uint64 Ino = 6;
-}
-
-message OpenedDir {
-       uint64 Inode = 1;
-       uint64 Handle = 2;
-       OpContext OpContext = 3;
-       bool CacheDir = 4;
-       bool KeepCache = 5;
-}
-
-message OpenedFile {
-       uint64 Inode = 1;
-       uint64 Handle = 2;
-       bool KeepPageCache = 3;
-       bool UseDirectIO = 4;
-       uint32 OpenFlags = 5;
-       OpContext OpContext = 6;
-}
-
-message DirEntry {
-       string Name = 1;
-       bool IsDir = 2;
-       uint32 FileMode = 3;
-       FileInfo Info = 4;
-}
-
-message FileEntry {
-       uint64 Inode = 1;
-       uint64 Handle = 2;
-       int64 Offset = 3;
-       int64 Size = 4;
-       bytes Dst = 5;
-       repeated bytes Data = 6;
-       int32 BytesRead = 7;
-       OpContext OpContext = 8;
-}
-
-message InodeAtt {
-       uint64 Size = 1;
-       uint32 Nlink = 2;
-       uint32 FileMode = 3;
-       google.protobuf.Timestamp Atime = 4;
-       google.protobuf.Timestamp Mtime = 5;
-       google.protobuf.Timestamp Ctime = 6;
-}
-
-// Request Bodies
-message StatFsReq { string Name = 1; RPCContext Context = 2; }
-message FileInfoReq { string Name = 1; RPCContext Context = 2; }
-message OpenDirReq { string Name = 1; RPCContext Context = 2; }
-message OpenFileReq { string Name = 1; RPCContext Context = 2; }
-message ReadDirReq { string Name = 1; RPCContext Context = 2; }
-message ReadFileReq { string Name = 1; RPCContext Context = 2; }
-message WriteFileReq { string Name = 1; RPCContext Context = 2; bytes Data = 
3; int64 Offset = 4; }
-message SetInodeAttReq {
-       string Name = 1;
-       RPCContext Context = 2;
-       optional uint64 Size = 3;
-       optional uint32 FileMode = 4;
-       optional google.protobuf.Timestamp ATime = 5;
-       optional google.protobuf.Timestamp MTime = 6;
-}
-
-// Response Bodies
-message StatFsRes { StatFs Result = 1; }
-message FileInfoRes { FileInfo Result = 1; }
-message OpenDirRes { OpenedDir Result = 1; }
-message OpenFileRes { OpenedFile Result = 1; }
-message ReadDirRes { repeated DirEntry Result = 1; }
-message ReadFileRes { FileEntry Result = 1; }
-message WriteFileRes { bool Result = 1; }
-message SetInodeAttRes {InodeAtt Result = 1;}
-
-// Service Definition
-service FuseService {
-       rpc StatFs(StatFsReq) returns (StatFsRes) {}
-       rpc FileInfo(FileInfoReq) returns (FileInfoRes) {}
-       rpc OpenDir(OpenDirReq) returns (OpenDirRes) {}
-       rpc OpenFile(OpenFileReq) returns (OpenFileRes) {}
-       rpc ReadDir(ReadDirReq) returns (ReadDirRes) {}
-       rpc ReadFile(ReadFileReq) returns (ReadFileRes) {}
-       rpc WriteFile(WriteFileReq) returns (WriteFileRes) {}
-       rpc SetInodeAtt(SetInodeAttReq) returns (SetInodeAttRes) {}
-}


Reply via email to