// automatically generated by stateify.

package gofer

import (
	"gvisor.dev/gvisor/pkg/state"
)

func (x *fifo) beforeSave() {}
func (x *fifo) save(m state.Map) {
	x.beforeSave()
	m.Save("InodeOperations", &x.InodeOperations)
	m.Save("fileIops", &x.fileIops)
}

func (x *fifo) afterLoad() {}
func (x *fifo) load(m state.Map) {
	m.Load("InodeOperations", &x.InodeOperations)
	m.Load("fileIops", &x.fileIops)
}

func (x *fileOperations) beforeSave() {}
func (x *fileOperations) save(m state.Map) {
	x.beforeSave()
	m.Save("inodeOperations", &x.inodeOperations)
	m.Save("dirCursor", &x.dirCursor)
	m.Save("flags", &x.flags)
}

func (x *fileOperations) load(m state.Map) {
	m.LoadWait("inodeOperations", &x.inodeOperations)
	m.Load("dirCursor", &x.dirCursor)
	m.LoadWait("flags", &x.flags)
	m.AfterLoad(x.afterLoad)
}

func (x *filesystem) beforeSave() {}
func (x *filesystem) save(m state.Map) {
	x.beforeSave()
}

func (x *filesystem) afterLoad() {}
func (x *filesystem) load(m state.Map) {
}

func (x *inodeOperations) beforeSave() {}
func (x *inodeOperations) save(m state.Map) {
	x.beforeSave()
	m.Save("fileState", &x.fileState)
	m.Save("cachingInodeOps", &x.cachingInodeOps)
}

func (x *inodeOperations) afterLoad() {}
func (x *inodeOperations) load(m state.Map) {
	m.LoadWait("fileState", &x.fileState)
	m.Load("cachingInodeOps", &x.cachingInodeOps)
}

func (x *inodeFileState) save(m state.Map) {
	x.beforeSave()
	var loading struct{} = x.saveLoading()
	m.SaveValue("loading", loading)
	m.Save("s", &x.s)
	m.Save("sattr", &x.sattr)
	m.Save("savedUAttr", &x.savedUAttr)
	m.Save("hostMappable", &x.hostMappable)
}

func (x *inodeFileState) load(m state.Map) {
	m.LoadWait("s", &x.s)
	m.LoadWait("sattr", &x.sattr)
	m.Load("savedUAttr", &x.savedUAttr)
	m.Load("hostMappable", &x.hostMappable)
	m.LoadValue("loading", new(struct{}), func(y interface{}) { x.loadLoading(y.(struct{})) })
	m.AfterLoad(x.afterLoad)
}

func (x *overrideInfo) beforeSave() {}
func (x *overrideInfo) save(m state.Map) {
	x.beforeSave()
	m.Save("dirent", &x.dirent)
	m.Save("endpoint", &x.endpoint)
	m.Save("inode", &x.inode)
}

func (x *overrideInfo) afterLoad() {}
func (x *overrideInfo) load(m state.Map) {
	m.Load("dirent", &x.dirent)
	m.Load("endpoint", &x.endpoint)
	m.Load("inode", &x.inode)
}

func (x *overrideMaps) beforeSave() {}
func (x *overrideMaps) save(m state.Map) {
	x.beforeSave()
	m.Save("pathMap", &x.pathMap)
}

func (x *overrideMaps) afterLoad() {}
func (x *overrideMaps) load(m state.Map) {
	m.Load("pathMap", &x.pathMap)
}

func (x *session) save(m state.Map) {
	x.beforeSave()
	m.Save("AtomicRefCount", &x.AtomicRefCount)
	m.Save("msize", &x.msize)
	m.Save("version", &x.version)
	m.Save("cachePolicy", &x.cachePolicy)
	m.Save("aname", &x.aname)
	m.Save("superBlockFlags", &x.superBlockFlags)
	m.Save("limitHostFDTranslation", &x.limitHostFDTranslation)
	m.Save("overlayfsStaleRead", &x.overlayfsStaleRead)
	m.Save("connID", &x.connID)
	m.Save("inodeMappings", &x.inodeMappings)
	m.Save("mounter", &x.mounter)
	m.Save("overrides", &x.overrides)
}

func (x *session) load(m state.Map) {
	m.Load("AtomicRefCount", &x.AtomicRefCount)
	m.LoadWait("msize", &x.msize)
	m.LoadWait("version", &x.version)
	m.LoadWait("cachePolicy", &x.cachePolicy)
	m.LoadWait("aname", &x.aname)
	m.LoadWait("superBlockFlags", &x.superBlockFlags)
	m.Load("limitHostFDTranslation", &x.limitHostFDTranslation)
	m.Load("overlayfsStaleRead", &x.overlayfsStaleRead)
	m.LoadWait("connID", &x.connID)
	m.LoadWait("inodeMappings", &x.inodeMappings)
	m.LoadWait("mounter", &x.mounter)
	m.LoadWait("overrides", &x.overrides)
	m.AfterLoad(x.afterLoad)
}

func init() {
	state.Register("pkg/sentry/fs/gofer.fifo", (*fifo)(nil), state.Fns{Save: (*fifo).save, Load: (*fifo).load})
	state.Register("pkg/sentry/fs/gofer.fileOperations", (*fileOperations)(nil), state.Fns{Save: (*fileOperations).save, Load: (*fileOperations).load})
	state.Register("pkg/sentry/fs/gofer.filesystem", (*filesystem)(nil), state.Fns{Save: (*filesystem).save, Load: (*filesystem).load})
	state.Register("pkg/sentry/fs/gofer.inodeOperations", (*inodeOperations)(nil), state.Fns{Save: (*inodeOperations).save, Load: (*inodeOperations).load})
	state.Register("pkg/sentry/fs/gofer.inodeFileState", (*inodeFileState)(nil), state.Fns{Save: (*inodeFileState).save, Load: (*inodeFileState).load})
	state.Register("pkg/sentry/fs/gofer.overrideInfo", (*overrideInfo)(nil), state.Fns{Save: (*overrideInfo).save, Load: (*overrideInfo).load})
	state.Register("pkg/sentry/fs/gofer.overrideMaps", (*overrideMaps)(nil), state.Fns{Save: (*overrideMaps).save, Load: (*overrideMaps).load})
	state.Register("pkg/sentry/fs/gofer.session", (*session)(nil), state.Fns{Save: (*session).save, Load: (*session).load})
}