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-12 12:37:54 +0000
commitc7b5abde53899c381ed6773b61e1ad940a44792f (patch)
treeacff42f1335c563be9e38daffa3a1e3f02a95673 /sys/cam
parentc4bb20a5ec876fb44e152c5773b7104e4c753dec (diff)
downloadsrc-c7b5abde53899c381ed6773b61e1ad940a44792f.tar.gz
src-c7b5abde53899c381ed6773b61e1ad940a44792f.zip
Add vn_lktype_write()
(cherry picked from commit 0ef5eee9d94162ac3cefa0bd8aedf1bfa6f87192)
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