summaryrefslogtreecommitdiffstats
path: root/sys/ufs/ffs/ffs_snapshot.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/ufs/ffs/ffs_snapshot.c')
-rw-r--r--sys/ufs/ffs/ffs_snapshot.c106
1 files changed, 53 insertions, 53 deletions
diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c
index 1cbfe28..8085103 100644
--- a/sys/ufs/ffs/ffs_snapshot.c
+++ b/sys/ufs/ffs/ffs_snapshot.c
@@ -105,7 +105,7 @@ ffs_snapshot(mp, snapfile)
void *space;
struct fs *copy_fs = NULL, *fs = VFSTOUFS(mp)->um_fs;
struct snaphead *snaphead;
- struct proc *p = CURPROC;
+ struct thread *td = curthread;
struct inode *ip, *xp;
struct buf *bp, *nbp, *ibp, *sbp = NULL;
struct nameidata nd;
@@ -129,7 +129,7 @@ ffs_snapshot(mp, snapfile)
* Create the snapshot file.
*/
restart:
- NDINIT(&nd, CREATE, LOCKPARENT | LOCKLEAF, UIO_USERSPACE, snapfile, p);
+ NDINIT(&nd, CREATE, LOCKPARENT | LOCKLEAF, UIO_USERSPACE, snapfile, td);
if ((error = namei(&nd)) != 0)
return (error);
if (nd.ni_vp != NULL) {
@@ -162,7 +162,7 @@ restart:
return (error);
goto restart;
}
- VOP_LEASE(nd.ni_dvp, p, KERNCRED, LEASE_WRITE);
+ VOP_LEASE(nd.ni_dvp, td, KERNCRED, LEASE_WRITE);
error = VOP_CREATE(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vat);
vput(nd.ni_dvp);
if (error) {
@@ -199,7 +199,7 @@ restart:
*/
for (blkno = NDADDR; blkno < numblks; blkno += NINDIR(fs)) {
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)blkno),
- fs->fs_bsize, p->p_ucred, B_METAONLY, &ibp);
+ fs->fs_bsize, td->td_proc->p_ucred, B_METAONLY, &ibp);
if (error)
goto out;
bdwrite(ibp);
@@ -260,7 +260,7 @@ restart:
/*
* Ensure that the snapshot is completely on disk.
*/
- if ((error = VOP_FSYNC(vp, KERNCRED, MNT_WAIT, p)) != 0)
+ if ((error = VOP_FSYNC(vp, KERNCRED, MNT_WAIT, td)) != 0)
goto out;
/*
* All allocations are done, so we can now snapshot the system.
@@ -464,12 +464,12 @@ out1:
out:
mp->mnt_flag = flag;
if (error)
- (void) UFS_TRUNCATE(vp, (off_t)0, 0, NOCRED, p);
- (void) VOP_FSYNC(vp, KERNCRED, MNT_WAIT, p);
+ (void) UFS_TRUNCATE(vp, (off_t)0, 0, NOCRED, td);
+ (void) VOP_FSYNC(vp, KERNCRED, MNT_WAIT, td);
if (error)
vput(vp);
else
- VOP_UNLOCK(vp, 0, p);
+ VOP_UNLOCK(vp, 0, td);
vn_finished_write(wrtmp);
return (error);
}
@@ -840,7 +840,7 @@ ffs_snapblkfree(freeip, bno, size)
{
struct buf *ibp, *cbp, *savedcbp = 0;
struct fs *fs = freeip->i_fs;
- struct proc *p = CURPROC;
+ struct thread *td = curthread;
struct inode *ip;
struct vnode *vp;
ufs_daddr_t lbn, blkno;
@@ -857,12 +857,12 @@ ffs_snapblkfree(freeip, bno, size)
if (lbn < NDADDR) {
blkno = ip->i_db[lbn];
} else {
- vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
- p->p_flag |= P_COWINPROGRESS;
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
+ td->td_proc->p_flag |= P_COWINPROGRESS;
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)lbn),
fs->fs_bsize, KERNCRED, B_METAONLY, &ibp);
- p->p_flag &= ~P_COWINPROGRESS;
- VOP_UNLOCK(vp, 0, p);
+ td->td_proc->p_flag &= ~P_COWINPROGRESS;
+ VOP_UNLOCK(vp, 0, td);
if (error)
break;
indiroff = (lbn - NDADDR) % NINDIR(fs);
@@ -888,7 +888,7 @@ ffs_snapblkfree(freeip, bno, size)
case BLK_SNAP:
if (claimedblk)
panic("snapblkfree: inconsistent block type");
- vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
if (lbn < NDADDR) {
ip->i_db[lbn] = BLK_NOCOPY;
ip->i_flag |= IN_CHANGE | IN_UPDATE;
@@ -897,7 +897,7 @@ ffs_snapblkfree(freeip, bno, size)
BLK_NOCOPY;
bdwrite(ibp);
}
- VOP_UNLOCK(vp, 0, p);
+ VOP_UNLOCK(vp, 0, td);
continue;
/*
* A block that we map is being freed. If it has not been
@@ -921,7 +921,7 @@ ffs_snapblkfree(freeip, bno, size)
"Grabonremove: snapino", ip->i_number, lbn,
freeip->i_number);
#endif
- vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
if (lbn < NDADDR) {
ip->i_db[lbn] = bno;
} else {
@@ -930,7 +930,7 @@ ffs_snapblkfree(freeip, bno, size)
}
ip->i_blocks += btodb(size);
ip->i_flag |= IN_CHANGE | IN_UPDATE;
- VOP_UNLOCK(vp, 0, p);
+ VOP_UNLOCK(vp, 0, td);
return (1);
}
if (lbn >= NDADDR)
@@ -940,13 +940,13 @@ ffs_snapblkfree(freeip, bno, size)
* allocation will never require any additional allocations for
* the snapshot inode.
*/
- vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
- p->p_flag |= P_COWINPROGRESS;
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
+ td->td_proc->p_flag |= P_COWINPROGRESS;
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)lbn),
fs->fs_bsize, KERNCRED, 0, &cbp);
- p->p_flag &= ~P_COWINPROGRESS;
+ td->td_proc->p_flag &= ~P_COWINPROGRESS;
if (error) {
- VOP_UNLOCK(vp, 0, p);
+ VOP_UNLOCK(vp, 0, td);
break;
}
#ifdef DEBUG
@@ -966,8 +966,8 @@ ffs_snapblkfree(freeip, bno, size)
bcopy(savedcbp->b_data, cbp->b_data, fs->fs_bsize);
bawrite(cbp);
if (dopersistence && ip->i_effnlink > 0)
- (void) VOP_FSYNC(vp, KERNCRED, MNT_WAIT, p);
- VOP_UNLOCK(vp, 0, p);
+ (void) VOP_FSYNC(vp, KERNCRED, MNT_WAIT, td);
+ VOP_UNLOCK(vp, 0, td);
continue;
}
/*
@@ -977,11 +977,11 @@ ffs_snapblkfree(freeip, bno, size)
bzero(cbp->b_data, fs->fs_bsize);
bawrite(cbp);
if (dopersistence && ip->i_effnlink > 0)
- (void) VOP_FSYNC(vp, KERNCRED, MNT_WAIT, p);
- VOP_UNLOCK(vp, 0, p);
+ (void) VOP_FSYNC(vp, KERNCRED, MNT_WAIT, td);
+ VOP_UNLOCK(vp, 0, td);
break;
}
- VOP_UNLOCK(vp, 0, p);
+ VOP_UNLOCK(vp, 0, td);
savedcbp = cbp;
}
/*
@@ -993,9 +993,9 @@ ffs_snapblkfree(freeip, bno, size)
vp = savedcbp->b_vp;
bawrite(savedcbp);
if (dopersistence && VTOI(vp)->i_effnlink > 0) {
- vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
- (void) VOP_FSYNC(vp, KERNCRED, MNT_WAIT, p);
- VOP_UNLOCK(vp, 0, p);
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
+ (void) VOP_FSYNC(vp, KERNCRED, MNT_WAIT, td);
+ VOP_UNLOCK(vp, 0, td);
}
}
/*
@@ -1016,7 +1016,7 @@ ffs_snapshot_mount(mp)
{
struct ufsmount *ump = VFSTOUFS(mp);
struct fs *fs = ump->um_fs;
- struct proc *p = CURPROC;
+ struct thread *td = curthread;
struct snaphead *snaphead;
struct vnode *vp;
struct inode *ip;
@@ -1052,7 +1052,7 @@ ffs_snapshot_mount(mp)
vp->v_flag |= VSYSTEM;
ump->um_devvp->v_rdev->si_copyonwrite = ffs_copyonwrite;
ump->um_devvp->v_flag |= VCOPYONWRITE;
- VOP_UNLOCK(vp, 0, p);
+ VOP_UNLOCK(vp, 0, td);
}
}
@@ -1087,7 +1087,7 @@ ffs_copyonwrite(devvp, bp)
struct buf *bp;
{
struct buf *ibp, *cbp, *savedcbp = 0;
- struct proc *p = CURPROC;
+ struct thread *td = curthread;
struct fs *fs;
struct inode *ip;
struct vnode *vp;
@@ -1096,7 +1096,7 @@ ffs_copyonwrite(devvp, bp)
fs = TAILQ_FIRST(&devvp->v_rdev->si_snapshots)->i_fs;
lbn = fragstoblks(fs, dbtofsb(fs, bp->b_blkno));
- if (p->p_flag & P_COWINPROGRESS)
+ if (td->td_proc->p_flag & P_COWINPROGRESS)
panic("ffs_copyonwrite: recursive call");
TAILQ_FOREACH(ip, &devvp->v_rdev->si_snapshots, i_nextsnap) {
vp = ITOV(ip);
@@ -1117,19 +1117,19 @@ ffs_copyonwrite(devvp, bp)
* sleep briefly, and try again.
*/
retry:
- vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
if (lbn < NDADDR) {
blkno = ip->i_db[lbn];
} else {
- p->p_flag |= P_COWINPROGRESS;
+ td->td_proc->p_flag |= P_COWINPROGRESS;
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)lbn),
fs->fs_bsize, KERNCRED, B_METAONLY | B_NOWAIT, &ibp);
- p->p_flag &= ~P_COWINPROGRESS;
+ td->td_proc->p_flag &= ~P_COWINPROGRESS;
if (error) {
- VOP_UNLOCK(vp, 0, p);
+ VOP_UNLOCK(vp, 0, td);
if (error != EWOULDBLOCK)
break;
- tsleep(vp, p->p_pri.pri_user, "nap", 1);
+ tsleep(vp, td->td_ksegrp->kg_pri.pri_user, "nap", 1);
goto retry;
}
indiroff = (lbn - NDADDR) % NINDIR(fs);
@@ -1141,7 +1141,7 @@ retry:
panic("ffs_copyonwrite: bad copy block");
#endif
if (blkno != 0) {
- VOP_UNLOCK(vp, 0, p);
+ VOP_UNLOCK(vp, 0, td);
continue;
}
/*
@@ -1149,15 +1149,15 @@ retry:
* allocation will never require any additional allocations for
* the snapshot inode.
*/
- p->p_flag |= P_COWINPROGRESS;
+ td->td_proc->p_flag |= P_COWINPROGRESS;
error = UFS_BALLOC(vp, lblktosize(fs, (off_t)lbn),
fs->fs_bsize, KERNCRED, B_NOWAIT, &cbp);
- p->p_flag &= ~P_COWINPROGRESS;
+ td->td_proc->p_flag &= ~P_COWINPROGRESS;
if (error) {
- VOP_UNLOCK(vp, 0, p);
+ VOP_UNLOCK(vp, 0, td);
if (error != EWOULDBLOCK)
break;
- tsleep(vp, p->p_pri.pri_user, "nap", 1);
+ tsleep(vp, td->td_ksegrp->kg_pri.pri_user, "nap", 1);
goto retry;
}
#ifdef DEBUG
@@ -1183,8 +1183,8 @@ retry:
bcopy(savedcbp->b_data, cbp->b_data, fs->fs_bsize);
bawrite(cbp);
if (dopersistence && ip->i_effnlink > 0)
- (void) VOP_FSYNC(vp, KERNCRED, MNT_WAIT, p);
- VOP_UNLOCK(vp, 0, p);
+ (void) VOP_FSYNC(vp, KERNCRED, MNT_WAIT, td);
+ VOP_UNLOCK(vp, 0, td);
continue;
}
/*
@@ -1194,12 +1194,12 @@ retry:
bzero(cbp->b_data, fs->fs_bsize);
bawrite(cbp);
if (dopersistence && ip->i_effnlink > 0)
- (void) VOP_FSYNC(vp, KERNCRED, MNT_WAIT, p);
- VOP_UNLOCK(vp, 0, p);
+ (void) VOP_FSYNC(vp, KERNCRED, MNT_WAIT, td);
+ VOP_UNLOCK(vp, 0, td);
break;
}
savedcbp = cbp;
- VOP_UNLOCK(vp, 0, p);
+ VOP_UNLOCK(vp, 0, td);
}
/*
* Note that we need to synchronously write snapshots that
@@ -1210,9 +1210,9 @@ retry:
vp = savedcbp->b_vp;
bawrite(savedcbp);
if (dopersistence && VTOI(vp)->i_effnlink > 0) {
- vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
- (void) VOP_FSYNC(vp, KERNCRED, MNT_WAIT, p);
- VOP_UNLOCK(vp, 0, p);
+ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
+ (void) VOP_FSYNC(vp, KERNCRED, MNT_WAIT, td);
+ VOP_UNLOCK(vp, 0, td);
}
}
return (error);
@@ -1229,7 +1229,7 @@ readblock(bp, lbn)
{
struct uio auio;
struct iovec aiov;
- struct proc *p = CURPROC;
+ struct thread *td = curthread;
struct inode *ip = VTOI(bp->b_vp);
aiov.iov_base = bp->b_data;
@@ -1240,6 +1240,6 @@ readblock(bp, lbn)
auio.uio_resid = bp->b_bcount;
auio.uio_rw = UIO_READ;
auio.uio_segflg = UIO_SYSSPACE;
- auio.uio_procp = p;
+ auio.uio_td = td;
return (physio(ip->i_devvp->v_rdev, &auio, 0));
}
OpenPOWER on IntegriCloud