diff options
author | Konstantin Belousov <kib@FreeBSD.org> | 2021-08-04 02:34:48 +0000 |
---|---|---|
committer | Konstantin Belousov <kib@FreeBSD.org> | 2021-08-12 12:37:54 +0000 |
commit | c7b5abde53899c381ed6773b61e1ad940a44792f (patch) | |
tree | acff42f1335c563be9e38daffa3a1e3f02a95673 /sys/cam | |
parent | c4bb20a5ec876fb44e152c5773b7104e4c753dec (diff) | |
download | src-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.c | 20 |
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 |