func RawWriteMetadata(volume *gfapi.Volume, file interface{}, buf []byte) error { var err error for index := 0; len(buf) > 0; index++ { var metadataName string if index == 0 { metadataName = "user.swift.metadata" } else { metadataName = "user.swift.metadata" + strconv.Itoa(index) } writelen := METADATA_CHUNK_SIZE if len(buf) < writelen { writelen = len(buf) } switch v := file.(type) { case string: err = volume.Setxattr(v, metadataName, buf[0:writelen], 0) case *gfapi.File: err = v.Setxattr(metadataName, buf[0:writelen], 0) case gfapi.Fd: err = v.Fsetxattr(metadataName, buf[0:writelen], 0) } if err != nil { return err } buf = buf[writelen:len(buf)] } return nil }