aboutsummaryrefslogtreecommitdiff
path: root/sys/cam
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2021-08-04 02:34:48 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2021-08-04 16:40:13 +0000
commit0ef5eee9d94162ac3cefa0bd8aedf1bfa6f87192 (patch)
tree4f13af9b81c7e2780227a883d3eaa6f787f2e7bf /sys/cam
parent21d854658801f6ddb91de3a3c3384e90f5d920f2 (diff)
downloadsrc-0ef5eee9d94162ac3cefa0bd8aedf1bfa6f87192.tar.gz
src-0ef5eee9d94162ac3cefa0bd8aedf1bfa6f87192.zip
Add vn_lktype_write()
and remove repetetive code that calculates vnode locking type for write. Reviewed by: khng, markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D31405
Diffstat (limited to 'sys/cam')
-rw-r--r--sys/cam/ctl/ctl_backend_block.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/sys/cam/ctl/ctl_backend_block.c b/sys/cam/ctl/ctl_backend_block.c
index 4ffaf0912915..83ea6b43dac3 100644
--- a/sys/cam/ctl/ctl_backend_block.c
+++ b/sys/cam/ctl/ctl_backend_block.c
@@ -588,7 +588,7 @@ ctl_be_block_flush_file(struct ctl_be_block_lun *be_lun,
{
union ctl_io *io = beio->io;
struct mount *mountpoint;
- int error, lock_flags;
+ int error;
DPRINTF("entered\n");
@@ -597,12 +597,8 @@ ctl_be_block_flush_file(struct ctl_be_block_lun *be_lun,
(void) vn_start_write(be_lun->vn, &mountpoint, V_WAIT);
- if (MNT_SHARED_WRITES(mountpoint) ||
- ((mountpoint == NULL) && MNT_SHARED_WRITES(be_lun->vn->v_mount)))
- lock_flags = LK_SHARED;
- else
- lock_flags = LK_EXCLUSIVE;
- vn_lock(be_lun->vn, lock_flags | LK_RETRY);
+ vn_lock(be_lun->vn, vn_lktype_write(mountpoint, be_lun->vn) |
+ LK_RETRY);
error = VOP_FSYNC(be_lun->vn, beio->io_arg ? MNT_NOWAIT : MNT_WAIT,
curthread);
VOP_UNLOCK(be_lun->vn);
@@ -722,16 +718,10 @@ ctl_be_block_dispatch_file(struct ctl_be_block_lun *be_lun,
}
} else {
struct mount *mountpoint;
- int lock_flags;
(void)vn_start_write(be_lun->vn, &mountpoint, V_WAIT);
-
- if (MNT_SHARED_WRITES(mountpoint) || ((mountpoint == NULL)
- && MNT_SHARED_WRITES(be_lun->vn->v_mount)))
- lock_flags = LK_SHARED;
- else
- lock_flags = LK_EXCLUSIVE;
- vn_lock(be_lun->vn, lock_flags | LK_RETRY);
+ vn_lock(be_lun->vn, vn_lktype_write(mountpoint,
+ be_lun->vn) | LK_RETRY);
/*
* UFS pays attention to IO_DIRECT for writes. The write