diff options
author | jhb <jhb@FreeBSD.org> | 2003-10-23 21:14:08 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2003-10-23 21:14:08 +0000 |
commit | 84fcdc7f5a8e1f9f6196fbedf1deab72214bc762 (patch) | |
tree | 92347204159854ea2607ebb884c5d756af8b66d2 /sys/ufs | |
parent | dabc1a332d9183829807d43facdf8e41c5005396 (diff) | |
download | FreeBSD-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.c | 26 | ||||
-rw-r--r-- | sys/ufs/ffs/ffs_softdep.c | 4 |
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) { |