Skip to content

Instantly share code, notes, and snippets.

@coypoop
Last active May 16, 2016 18:12
Show Gist options
  • Save coypoop/5a54dae060a56f5936352241682cfdab to your computer and use it in GitHub Desktop.
Save coypoop/5a54dae060a56f5936352241682cfdab to your computer and use it in GitHub Desktop.
Simplify UFS_WAPBL_BEGIN/END.
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