Last active
May 16, 2016 18:12
-
-
Save coypoop/5a54dae060a56f5936352241682cfdab to your computer and use it in GitHub Desktop.
Simplify UFS_WAPBL_BEGIN/END.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 4b162937d04648240f7931c36394e292be36ac02 Mon Sep 17 00:00:00 2001 | |
From: coypu <coypu@sdf.org> | |
Date: Mon, 16 May 2016 18:24:56 +0300 | |
Subject: [PATCH 1/3] Get rid of UFS_WAPBL_BEGIN1/END1 | |
ufs makeinode no longer releases dvp, so incrementing the | |
usecount for wapbl is unnecessary. | |
--- | |
sys/ufs/ufs/ufs_vnops.c | 16 ++++++++-------- | |
sys/ufs/ufs/ufs_wapbl.h | 5 ----- | |
2 files changed, 8 insertions(+), 13 deletions(-) | |
diff --git a/sys/ufs/ufs/ufs_vnops.c b/sys/ufs/ufs/ufs_vnops.c | |
index 8f0edc1..41154f5 100644 | |
--- a/sys/ufs/ufs/ufs_vnops.c | |
+++ b/sys/ufs/ufs/ufs_vnops.c | |
@@ -151,7 +151,7 @@ ufs_create(void *v) | |
UFS_CHECK_CRAPCOUNTER(VTOI(dvp)); | |
/* | |
- * UFS_WAPBL_BEGIN1(dvp->v_mount, dvp) performed by successful | |
+ * UFS_WAPBL_BEGIN(dvp->v_mount) performed by successful | |
* ufs_makeinode | |
*/ | |
fstrans_start(dvp->v_mount, FSTRANS_SHARED); | |
@@ -160,7 +160,7 @@ ufs_create(void *v) | |
fstrans_done(dvp->v_mount); | |
return (error); | |
} | |
- UFS_WAPBL_END1(dvp->v_mount, dvp); | |
+ UFS_WAPBL_END(dvp->v_mount); | |
fstrans_done(dvp->v_mount); | |
VN_KNOTE(dvp, NOTE_WRITE); | |
VOP_UNLOCK(*ap->a_vpp); | |
@@ -194,7 +194,7 @@ ufs_mknod(void *v) | |
UFS_CHECK_CRAPCOUNTER(VTOI(ap->a_dvp)); | |
/* | |
- * UFS_WAPBL_BEGIN1(dvp->v_mount, dvp) performed by successful | |
+ * UFS_WAPBL_BEGIN(dvp->v_mount) performed by successful | |
* ufs_makeinode | |
*/ | |
fstrans_start(ap->a_dvp->v_mount, FSTRANS_SHARED); | |
@@ -204,7 +204,7 @@ ufs_mknod(void *v) | |
ip = VTOI(*vpp); | |
ip->i_flag |= IN_ACCESS | IN_CHANGE | IN_UPDATE; | |
UFS_WAPBL_UPDATE(*vpp, NULL, NULL, 0); | |
- UFS_WAPBL_END1(ap->a_dvp->v_mount, ap->a_dvp); | |
+ UFS_WAPBL_END(ap->a_dvp->v_mount); | |
VOP_UNLOCK(*vpp); | |
out: | |
fstrans_done(ap->a_dvp->v_mount); | |
@@ -1200,7 +1200,7 @@ ufs_symlink(void *v) | |
UFS_CHECK_CRAPCOUNTER(VTOI(ap->a_dvp)); | |
/* | |
- * UFS_WAPBL_BEGIN1(dvp->v_mount, dvp) performed by successful | |
+ * UFS_WAPBL_BEGIN(dvp->v_mount) performed by successful | |
* ufs_makeinode | |
*/ | |
fstrans_start(ap->a_dvp->v_mount, FSTRANS_SHARED); | |
@@ -1232,7 +1232,7 @@ ufs_symlink(void *v) | |
error = ufs_bufio(UIO_WRITE, vp, ap->a_target, len, (off_t)0, | |
IO_NODELOCKED | IO_JOURNALLOCKED, ap->a_cnp->cn_cred, NULL, | |
NULL); | |
- UFS_WAPBL_END1(ap->a_dvp->v_mount, ap->a_dvp); | |
+ UFS_WAPBL_END(ap->a_dvp->v_mount); | |
VOP_UNLOCK(vp); | |
if (error) | |
vrele(vp); | |
@@ -1784,7 +1784,7 @@ ufs_makeinode(struct vattr *vap, struct vnode *dvp, | |
} | |
*vpp = tvp; | |
ip = VTOI(tvp); | |
- error = UFS_WAPBL_BEGIN1(dvp->v_mount, dvp); | |
+ error = UFS_WAPBL_BEGIN(dvp->v_mount); | |
if (error) { | |
vput(tvp); | |
return (error); | |
@@ -1832,7 +1832,7 @@ ufs_makeinode(struct vattr *vap, struct vnode *dvp, | |
DIP_ASSIGN(ip, nlink, 0); | |
ip->i_flag |= IN_CHANGE; | |
UFS_WAPBL_UPDATE(tvp, NULL, NULL, 0); | |
- UFS_WAPBL_END1(dvp->v_mount, dvp); | |
+ UFS_WAPBL_END(dvp->v_mount); | |
vput(tvp); | |
return (error); | |
} | |
diff --git a/sys/ufs/ufs/ufs_wapbl.h b/sys/ufs/ufs/ufs_wapbl.h | |
index 1eab045..b8386cf 100644 | |
--- a/sys/ufs/ufs/ufs_wapbl.h | |
+++ b/sys/ufs/ufs/ufs_wapbl.h | |
@@ -134,10 +134,7 @@ ufs_wapbl_end2(struct mount *mp, struct vnode *vp1, struct vnode *vp2) | |
#define UFS_WAPBL_BEGIN(mp) \ | |
ufs_wapbl_begin2(mp, NULL, NULL, __FUNCTION__, __LINE__) | |
-#define UFS_WAPBL_BEGIN1(mp, v1) \ | |
- ufs_wapbl_begin2(mp, v1, NULL, __FUNCTION__, __LINE__) | |
#define UFS_WAPBL_END(mp) ufs_wapbl_end2(mp, NULL, NULL) | |
-#define UFS_WAPBL_END1(mp, v1) ufs_wapbl_end2(mp, v1, NULL) | |
#define UFS_WAPBL_UPDATE(vp, access, modify, flags) \ | |
if ((vp)->v_mount->mnt_wapbl) { \ | |
@@ -164,9 +161,7 @@ ufs_wapbl_end2(struct mount *mp, struct vnode *vp1, struct vnode *vp2) | |
#else /* ! WAPBL */ | |
#define UFS_WAPBL_BEGIN(mp) (__USE(mp), 0) | |
-#define UFS_WAPBL_BEGIN1(mp, v1) 0 | |
#define UFS_WAPBL_END(mp) do { } while (0) | |
-#define UFS_WAPBL_END1(mp, v1) | |
#define UFS_WAPBL_UPDATE(vp, access, modify, flags) do { } while (0) | |
#define UFS_WAPBL_JLOCK_ASSERT(mp) | |
#define UFS_WAPBL_JUNLOCK_ASSERT(mp) | |
-- | |
2.8.1 | |
From e4099face011f1128a3faf0ffa496d565a4f69f5 Mon Sep 17 00:00:00 2001 | |
From: coypu <coypu@sdf.org> | |
Date: Mon, 16 May 2016 20:00:46 +0300 | |
Subject: [PATCH 2/3] Simplify ufs_wapbl_begin2/end2, drop 2 suffix | |
We are no longer calling UFS_WAPBL_BEGIN/END with vnodes (we are giving | |
NULL as a parameter in all cases), so we can get rid of this input | |
parameter and the relevant check. | |
--- | |
sys/ufs/ufs/ufs_wapbl.h | 18 ++++-------------- | |
1 file changed, 4 insertions(+), 14 deletions(-) | |
diff --git a/sys/ufs/ufs/ufs_wapbl.h b/sys/ufs/ufs/ufs_wapbl.h | |
index b8386cf..05f41a7 100644 | |
--- a/sys/ufs/ufs/ufs_wapbl.h | |
+++ b/sys/ufs/ufs/ufs_wapbl.h | |
@@ -95,16 +95,10 @@ void ufs_wapbl_verify_inodes(struct mount *, const char *); | |
#endif | |
static __inline int | |
-ufs_wapbl_begin2(struct mount *mp, struct vnode *vp1, struct vnode *vp2, | |
- const char *file, int line) | |
+ufs_wapbl_begin(struct mount *mp, const char *file, int line) | |
{ | |
if (mp->mnt_wapbl) { | |
int error; | |
- | |
- if (vp1) | |
- vref(vp1); | |
- if (vp2) | |
- vref(vp2); | |
error = wapbl_begin(mp->mnt_wapbl, file, line); | |
if (error) | |
return error; | |
@@ -117,7 +111,7 @@ ufs_wapbl_begin2(struct mount *mp, struct vnode *vp1, struct vnode *vp2, | |
} | |
static __inline void | |
-ufs_wapbl_end2(struct mount *mp, struct vnode *vp1, struct vnode *vp2) | |
+ufs_wapbl_end(struct mount *mp) | |
{ | |
if (mp->mnt_wapbl) { | |
#ifdef WAPBL_DEBUG_INODES | |
@@ -125,16 +119,12 @@ ufs_wapbl_end2(struct mount *mp, struct vnode *vp1, struct vnode *vp2) | |
ufs_wapbl_verify_inodes(mp, "wapbl_end"); | |
#endif | |
wapbl_end(mp->mnt_wapbl); | |
- if (vp2) | |
- vrele(vp2); | |
- if (vp1) | |
- vrele(vp1); | |
} | |
} | |
#define UFS_WAPBL_BEGIN(mp) \ | |
- ufs_wapbl_begin2(mp, NULL, NULL, __FUNCTION__, __LINE__) | |
-#define UFS_WAPBL_END(mp) ufs_wapbl_end2(mp, NULL, NULL) | |
+ ufs_wapbl_begin(mp, __FUNCTION__, __LINE__) | |
+#define UFS_WAPBL_END(mp) ufs_wapbl_end(mp) | |
#define UFS_WAPBL_UPDATE(vp, access, modify, flags) \ | |
if ((vp)->v_mount->mnt_wapbl) { \ | |
-- | |
2.8.1 | |
From 82d0224de512e332d2223e1226057a07b515fa9d Mon Sep 17 00:00:00 2001 | |
From: coypu <coypu@sdf.org> | |
Date: Mon, 16 May 2016 20:15:29 +0300 | |
Subject: [PATCH 3/3] While here, replace GCC __FUNCTION__ by C99 __func__ | |
--- | |
sys/ufs/ufs/ufs_wapbl.h | 2 +- | |
1 file changed, 1 insertion(+), 1 deletion(-) | |
diff --git a/sys/ufs/ufs/ufs_wapbl.h b/sys/ufs/ufs/ufs_wapbl.h | |
index 339ba1d..184b230 100644 | |
--- a/sys/ufs/ufs/ufs_wapbl.h | |
+++ b/sys/ufs/ufs/ufs_wapbl.h | |
@@ -119,7 +119,7 @@ ufs_wapbl_end(struct mount *mp) | |
} | |
#define UFS_WAPBL_BEGIN(mp) \ | |
- ufs_wapbl_begin(mp, __FUNCTION__, __LINE__) | |
+ ufs_wapbl_begin(mp, __func__, __LINE__) | |
#define UFS_WAPBL_END(mp) ufs_wapbl_end(mp) | |
#define UFS_WAPBL_UPDATE(vp, access, modify, flags) \ | |
-- | |
2.8.1 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment