filed

Job queue using FUSE

git clone git://mccd.space/filed

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 }