filed
Job queue using FUSE
git clone git://mccd.space/filed
| Log | Files | Refs | README | LICENSE |
setfattr.go (683B)
1 package main
2
3 import (
4 "context"
5 "git.sr.ht/~marcc/filed/store"
6 "log/slog"
7 "os"
8 "syscall"
9
10 "bazil.org/fuse"
11 )
12
13 func Setattr(store *store.Store, meta *store.FileMeta, ctx context.Context, req *fuse.SetattrRequest, resp *fuse.SetattrResponse) error {
14 if req.Valid.Mode() {
15 meta.Mode = uint32(req.Mode)
16 }
17
18 if req.Valid.Uid() {
19 meta.UID = req.Uid
20 }
21
22 if req.Valid.Gid() {
23 meta.GID = req.Gid
24 }
25
26 if err := store.UpsertFileMeta(*meta); err != nil {
27 slog.Error("STORE: Failed to save metadata", "error", err)
28 return syscall.EIO
29 }
30
31 resp.Attr.Inode = meta.Inode
32 resp.Attr.Mode = os.FileMode(meta.Mode)
33 resp.Attr.Uid = meta.UID
34 resp.Attr.Gid = meta.GID
35 return nil
36 }