#ifndef _SYS_FSTRANS_H #define _SYS_FSTRANS_H struct fscow_handler; enum fstrans_lock { FSTRANS_LOCK_SHARED = 1, FSTRANS_LOCK_LAZY = 2, #ifdef _FSTRANS_API_PRIVATE FSTRANS_LOCK_EXCL = 3, #endif }; enum fstrans_state { FSTRANS_STATE_NORMAL, FSTRANS_STATE_SUSPENDING, FSTRANS_STATE_SUSPENDED, FSTRANS_STATE_UNMOUNTED, }; #define FSTRANS_FLAG_NOWAIT 0x01 #define FSTRANS_FLAG_INTR 0x02 void fstrans_init(void); int fstrans_mount(struct mount *); void fstrans_unmount(struct mount *); int fstrans_start(struct mount *, enum fstrans_lock, int); void fstrans_done(struct mount *); enum fstrans_state fstrans_getstate(struct mount *); int fstrans_setstate(struct mount *, enum fstrans_state); int fscow_establish(struct mount *, int (*)(void *, struct buf *, bool), void *, struct fscow_handler **); void fscow_disestablish(struct mount *, struct fscow_handler *); int fscow_run(struct buf *, bool); #endif /* _SYS_FSTRANS_H */