summaryrefslogtreecommitdiffstats
path: root/sys/ufs
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2003-10-23 21:14:08 +0000
committerjhb <jhb@FreeBSD.org>2003-10-23 21:14:08 +0000
commit84fcdc7f5a8e1f9f6196fbedf1deab72214bc762 (patch)
tree92347204159854ea2607ebb884c5d756af8b66d2 /sys/ufs
parentdabc1a332d9183829807d43facdf8e41c5005396 (diff)
downloadFreeBSD-src-84fcdc7f5a8e1f9f6196fbedf1deab72214bc762.zip
FreeBSD-src-84fcdc7f5a8e1f9f6196fbedf1deab72214bc762.tar.gz
Move the P_COWINPROGRESS flag from being a per-process p_flag to being a
per-thread td_pflag which doesn't require any locks to read or write as it is only read or written by curthread on itself. Glanced at by: mckusick
Diffstat (limited to 'sys/ufs')
-rw-r--r--sys/ufs/ffs/ffs_snapshot.c26
-rw-r--r--sys/ufs/ffs/ffs_softdep.c4
2 files changed, 15 insertions, 15 deletions
diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c
index b3b54d1..cd50ece 100644
--- a/sys/ufs/ffs/ffs_snapshot.c
+++ b/sys/ufs/ffs/ffs_snapshot.c
@@ -822,10 +822,10 @@ expunge_ufs1(snapvp, cancelip, fs, acctfunc, expungetype)
if (lbn < NDADDR) {
blkno = VTOI(snapvp)->i_din1->di_db[lbn];
} else {
- td->td_proc->p_flag |= P_COWINPROGRESS;
+ td->td_pflags |= TDP_COWINPROGRESS;
error = UFS_BALLOC(snapvp, lblktosize(fs, (off_t)lbn),
fs->fs_bsize, KERNCRED, BA_METAONLY, &bp);
- td->td_proc->p_flag &= ~P_COWINPROGRESS;
+ td->td_pflags &= ~TDP_COWINPROGRESS;
if (error)
return (error);
indiroff = (lbn - NDADDR) % NINDIR(fs);
@@ -1102,10 +1102,10 @@ expunge_ufs2(snapvp, cancelip, fs, acctfunc, expungetype)
if (lbn < NDADDR) {
blkno = VTOI(snapvp)->i_din2->di_db[lbn];
} else {
- td->td_proc->p_flag |= P_COWINPROGRESS;
+ td->td_pflags |= TDP_COWINPROGRESS;
error = UFS_BALLOC(snapvp, lblktosize(fs, (off_t)lbn),
fs->fs_bsize, KERNCRED, BA_METAONLY, &bp);
- td->td_proc->p_flag &= ~P_COWINPROGRESS;
+ td->td_pflags &= ~TDP_COWINPROGRESS;
if (error)
return (error);
indiroff = (lbn - NDADDR) % NINDIR(fs);
@@ -1552,10 +1552,10 @@ retry:
VI_MTX(devvp), td) != 0)
goto retry;
snapshot_locked = 1;
- td->td_proc->p_flag |= P_COWINPROGRESS;
+ td->td_pflags |= TDP_COWINPROGRESS;
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)lbn),
fs->fs_bsize, KERNCRED, BA_METAONLY, &ibp);
- td->td_proc->p_flag &= ~P_COWINPROGRESS;
+ td->td_pflags &= ~TDP_COWINPROGRESS;
if (error)
break;
indiroff = (lbn - NDADDR) % NINDIR(fs);
@@ -1659,10 +1659,10 @@ retry:
* allocation will never require any additional allocations for
* the snapshot inode.
*/
- td->td_proc->p_flag |= P_COWINPROGRESS;
+ td->td_pflags |= TDP_COWINPROGRESS;
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)lbn),
fs->fs_bsize, KERNCRED, 0, &cbp);
- td->td_proc->p_flag &= ~P_COWINPROGRESS;
+ td->td_pflags &= ~TDP_COWINPROGRESS;
if (error)
break;
#ifdef DEBUG
@@ -1930,7 +1930,7 @@ ffs_copyonwrite(devvp, bp)
ufs2_daddr_t lbn, blkno, *snapblklist;
int lower, upper, mid, indiroff, snapshot_locked = 0, error = 0;
- if (td->td_proc->p_flag & P_COWINPROGRESS)
+ if (td->td_pflags & TDP_COWINPROGRESS)
panic("ffs_copyonwrite: recursive call");
/*
* First check to see if it is in the preallocated list.
@@ -1988,10 +1988,10 @@ retry:
goto retry;
}
snapshot_locked = 1;
- td->td_proc->p_flag |= P_COWINPROGRESS;
+ td->td_pflags |= TDP_COWINPROGRESS;
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)lbn),
fs->fs_bsize, KERNCRED, BA_METAONLY, &ibp);
- td->td_proc->p_flag &= ~P_COWINPROGRESS;
+ td->td_pflags &= ~TDP_COWINPROGRESS;
if (error)
break;
indiroff = (lbn - NDADDR) % NINDIR(fs);
@@ -2025,10 +2025,10 @@ retry:
goto retry;
}
snapshot_locked = 1;
- td->td_proc->p_flag |= P_COWINPROGRESS;
+ td->td_pflags |= TDP_COWINPROGRESS;
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)lbn),
fs->fs_bsize, KERNCRED, 0, &cbp);
- td->td_proc->p_flag &= ~P_COWINPROGRESS;
+ td->td_pflags &= ~TDP_COWINPROGRESS;
if (error)
break;
#ifdef DEBUG
diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c
index 768a6b5..3ebe427 100644
--- a/sys/ufs/ffs/ffs_softdep.c
+++ b/sys/ufs/ffs/ffs_softdep.c
@@ -688,7 +688,7 @@ process_worklist_item(matchmnt, flags)
* copy-on-write, then it is not safe to write as we may
* recurse into the copy-on-write routine.
*/
- if (curthread->td_proc->p_flag & P_COWINPROGRESS)
+ if (curthread->td_pflags & TDP_COWINPROGRESS)
return (-1);
ACQUIRE_LOCK(&lk);
/*
@@ -5479,7 +5479,7 @@ softdep_request_cleanup(fs, vp)
* copy-on-write, then it is not safe to update the vnode
* as we may recurse into the copy-on-write routine.
*/
- if ((curthread->td_proc->p_flag & P_COWINPROGRESS) == 0 &&
+ if (!(curthread->td_pflags & TDP_COWINPROGRESS) &&
UFS_UPDATE(vp, 1) != 0)
return (0);
while (fs->fs_pendingblocks > 0 && fs->fs_cstotal.cs_nbfree <= needed) {
OpenPOWER on IntegriCloud