lockfs
extern int lockfs(char *, char *);
extern ulong_t lockfs();
lfp = (struct lockfs *)malloc(sizeof (struct lockfs));
(void) memset((void *)lfp, 0, sizeof (struct lockfs));
static struct lockfs *lfp; /* current lockfs status */
lockfs(fnp->fn_name);
struct lockfs lf;
bzero((caddr_t)&lf, sizeof (struct lockfs));
struct lockfs lf;
bzero((caddr_t)&lf, sizeof (struct lockfs));
static void lockfs(char *);
struct lockfs lockfs;
lockfs.lf_flags = LOCKFS_MOD;
if (ioctl(lockfd, _FIOLFSS, &lockfs) == -1) {
if (LOCKFS_IS_MOD(&lockfs)) {
lockfs.lf_lock = LOCKFS_ULOCK;
lockfs.lf_flags = 0;
lockfs.lf_key = lockfskey;
if (ioctl(lockfd, _FIOLFS, &lockfs) == -1) {
if (ioctl(lockfd, _FIOLFSS, &lockfs) == -1) {
if (lockfs.lf_lock != LOCKFS_WLOCK) {
lockfs.lf_lock = LOCKFS_WLOCK;
lockfs.lf_flags = 0;
lockfs.lf_key = 0;
if (ioctl(lockfd, _FIOLFS, &lockfs) == -1) {
lockfskey = lockfs.lf_key;
lockfs.lf_comlen = strlen(lockfscomment)+1;
lockfs.lf_comment = lockfscomment;
struct lockfs lf;
struct lockfs lf;
allocsp_wlockfs(struct vnode *vp, struct lockfs *lf)
allocsp_unlockfs(struct vnode *vp, struct lockfs *lf)
struct lockfs lf;
bcopy(&ulp->ul_lockfs, &lfs, sizeof (struct lockfs));
bcopy(&lfs, &ulp->ul_lockfs, sizeof (struct lockfs));
ufs_fiolfss(struct vnode *vp, struct lockfs *lockfsp)
struct lockfs *lockfsp, /* new lock request */
struct lockfs *ul_lockfsp) /* old lock state */
ufs_freeze(struct ulockfs *ulp, struct lockfs *lockfsp)
ufs_fiolfs(struct vnode *vp, struct lockfs *lockfsp, int from_log)
struct lockfs *lockfsp,
struct lockfs lfs;
get_lockfs_status(ufs_failure_t *f, struct lockfs *lfp)
struct lockfs lockfs_status;
alloc_lockfs_comment(ufs_failure_t *f, struct lockfs *lfp)
set_lockfs(ufs_failure_t *f, struct lockfs *lfp)
lock_name(struct lockfs *lfp)
static int get_lockfs_status(ufs_failure_t *, struct lockfs *);
static void alloc_lockfs_comment(ufs_failure_t *, struct lockfs *);
static int set_lockfs(ufs_failure_t *, struct lockfs *);
static char *lock_name(struct lockfs *);
struct lockfs lf;
(void) ufs_fiolfss(ufsvfsp->vfs_root, &lockfs);
if (!LOCKFS_IS_ELOCK(&lockfs)) {
lockfs.lf_lock = LOCKFS_HLOCK;
lockfs.lf_flags = 0;
lockfs.lf_comlen = 0;
lockfs.lf_comment = NULL;
error = ufs_fiolfs(ufsvfsp->vfs_root, &lockfs, 0);
struct lockfs lockfs;
sizeof (struct lockfs));
struct lockfs lockfs;
lockfs.lf_lock = LOCKFS_HLOCK;
lockfs.lf_flags = 0;
lockfs.lf_key = ulp->ul_lockfs.lf_key + 1;
lockfs.lf_comlen = 0;
lockfs.lf_comment = NULL;
ufs_freeze(ulp, &lockfs);
struct lockfs lockfs, lockfs_out;
if (copyin((caddr_t)arg, &lockfs,
sizeof (struct lockfs)))
lockfs.lf_lock = (ulong_t)lockfs32.lf_lock;
lockfs.lf_flags = (ulong_t)lockfs32.lf_flags;
lockfs.lf_key = (ulong_t)lockfs32.lf_key;
lockfs.lf_comlen = (ulong_t)lockfs32.lf_comlen;
lockfs.lf_comment =
if (lockfs.lf_comlen) {
if (lockfs.lf_comlen > LOCKFS_MAXCOMMENTLEN)
kmem_alloc(lockfs.lf_comlen, KM_SLEEP);
if (copyin(lockfs.lf_comment, comment,
lockfs.lf_comlen)) {
kmem_free(comment, lockfs.lf_comlen);
original_comment = lockfs.lf_comment;
lockfs.lf_comment = comment;
if ((error = ufs_fiolfs(vp, &lockfs, 0)) == 0) {
lockfs.lf_comment = original_comment;
(void) copyout(&lockfs, (caddr_t)arg,
sizeof (struct lockfs));
(uint32_t)lockfs.lf_lock;
(uint32_t)lockfs.lf_flags;
(uint32_t)lockfs.lf_key;
(uint32_t)lockfs.lf_comlen;
lockfs.lf_comment;
if (lockfs.lf_comlen)
kmem_free(comment, lockfs.lf_comlen);
if (copyin((caddr_t)arg, &lockfs,
sizeof (struct lockfs)))
lockfs.lf_lock = (ulong_t)lockfs32.lf_lock;
lockfs.lf_flags = (ulong_t)lockfs32.lf_flags;
lockfs.lf_key = (ulong_t)lockfs32.lf_key;
lockfs.lf_comlen = (ulong_t)lockfs32.lf_comlen;
lockfs.lf_comment =
lockfs.lf_lock = lockfs_out.lf_lock;
lockfs.lf_key = lockfs_out.lf_key;
lockfs.lf_flags = lockfs_out.lf_flags;
lockfs.lf_comlen = MIN(lockfs.lf_comlen,
if (copyout(&lockfs, (caddr_t)arg,
sizeof (struct lockfs)))
lockfs32.lf_lock = (uint32_t)lockfs.lf_lock;
lockfs32.lf_flags = (uint32_t)lockfs.lf_flags;
lockfs32.lf_key = (uint32_t)lockfs.lf_key;
lockfs32.lf_comlen = (uint32_t)lockfs.lf_comlen;
(uint32_t)(uintptr_t)lockfs.lf_comment;
if (lockfs.lf_comlen &&
lockfs.lf_comment && lockfs_out.lf_comment)
lockfs.lf_comment, lockfs.lf_comlen))
void ufs_freeze(struct ulockfs *, struct lockfs *);
extern int ufs_fiolfs(struct vnode *, struct lockfs *, int);
extern int ufs__fiolfs(struct vnode *, struct lockfs *, int, int);
extern int ufs_fiolfss(struct vnode *, struct lockfs *);
struct lockfs ul_lockfs; /* ioctl lock struct */
struct lockfs uf_lf; /* needed to set lockfs lock */