diff options
author | jeff <jeff@FreeBSD.org> | 2005-01-24 10:01:10 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2005-01-24 10:01:10 +0000 |
commit | 362ff81080fb79f7df7eb919f1635facc09fd41d (patch) | |
tree | 74dcb752c3e2f391d3b9eabec3fc99646567d0e6 | |
parent | e0d6f27621a4434cd9b59894795ee3fe16834af3 (diff) | |
download | FreeBSD-src-362ff81080fb79f7df7eb919f1635facc09fd41d.zip FreeBSD-src-362ff81080fb79f7df7eb919f1635facc09fd41d.tar.gz |
- Add a mutex to the ufsmount structure. This mutex is used to protect
any per-instance global data that is not already protected by a
buf or vnode lock. Presently, only fields in ffs's struct fs utilize
this lock.
- Sort some ufsmount members so that fields used for quotas are grouped
together. This is in anticipation of quota locking.
Sponsored By: Isilon Systems, Inc.
-rw-r--r-- | sys/ufs/ufs/ufsmount.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/ufs/ufs/ufsmount.h b/sys/ufs/ufs/ufsmount.h index 2f9fdea..dd6a740 100644 --- a/sys/ufs/ufs/ufsmount.h +++ b/sys/ufs/ufs/ufsmount.h @@ -65,13 +65,14 @@ struct ufsmount { struct vnode *um_devvp; /* block device mounted vnode */ u_long um_fstype; /* type of filesystem */ struct fs *um_fs; /* pointer to superblock */ - struct vnode *um_quotas[MAXQUOTAS]; /* pointer to quota files */ - struct ucred *um_cred[MAXQUOTAS]; /* quota file access cred */ struct ufs_extattr_per_mount um_extattr; /* extended attrs */ u_long um_nindir; /* indirect ptrs per block */ u_long um_bptrtodb; /* indir ptr to disk block */ u_long um_seqinc; /* inc between seq blocks */ - long um_numindirdeps; /* indirdeps for this filesys */ + struct mtx um_lock; /* Protects ufsmount & fs */ + long um_numindirdeps; /* outstanding indirdeps */ + struct vnode *um_quotas[MAXQUOTAS]; /* pointer to quota files */ + struct ucred *um_cred[MAXQUOTAS]; /* quota file access cred */ time_t um_btime[MAXQUOTAS]; /* block quota time limit */ time_t um_itime[MAXQUOTAS]; /* inode quota time limit */ char um_qflags[MAXQUOTAS]; /* quota specific flags */ @@ -93,6 +94,10 @@ struct ufsmount { #define UFS_VFREE(aa, bb, cc) VFSTOUFS((aa)->v_mount)->um_vfree(aa, bb, cc) #define UFS_IFREE(aa, bb) ((aa)->um_ifree(aa, bb)) +#define UFS_LOCK(aa) mtx_lock(&(aa)->um_lock) +#define UFS_UNLOCK(aa) mtx_unlock(&(aa)->um_lock) +#define UFS_MTX(aa) (&(aa)->um_lock) + /* * Filesystem types */ |