aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/inode.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 415a6ad5ba22..bed6cf5f67a4 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -7215,7 +7215,6 @@ static struct extent_map *btrfs_create_dio_extent(struct inode *inode,
7215 struct extent_map *em = NULL; 7215 struct extent_map *em = NULL;
7216 int ret; 7216 int ret;
7217 7217
7218 down_read(&BTRFS_I(inode)->dio_sem);
7219 if (type != BTRFS_ORDERED_NOCOW) { 7218 if (type != BTRFS_ORDERED_NOCOW) {
7220 em = create_pinned_em(inode, start, len, orig_start, 7219 em = create_pinned_em(inode, start, len, orig_start,
7221 block_start, block_len, orig_block_len, 7220 block_start, block_len, orig_block_len,
@@ -7234,7 +7233,6 @@ static struct extent_map *btrfs_create_dio_extent(struct inode *inode,
7234 em = ERR_PTR(ret); 7233 em = ERR_PTR(ret);
7235 } 7234 }
7236 out: 7235 out:
7237 up_read(&BTRFS_I(inode)->dio_sem);
7238 7236
7239 return em; 7237 return em;
7240} 7238}
@@ -8695,6 +8693,7 @@ static ssize_t btrfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
8695 dio_data.unsubmitted_oe_range_start = (u64)offset; 8693 dio_data.unsubmitted_oe_range_start = (u64)offset;
8696 dio_data.unsubmitted_oe_range_end = (u64)offset; 8694 dio_data.unsubmitted_oe_range_end = (u64)offset;
8697 current->journal_info = &dio_data; 8695 current->journal_info = &dio_data;
8696 down_read(&BTRFS_I(inode)->dio_sem);
8698 } else if (test_bit(BTRFS_INODE_READDIO_NEED_LOCK, 8697 } else if (test_bit(BTRFS_INODE_READDIO_NEED_LOCK,
8699 &BTRFS_I(inode)->runtime_flags)) { 8698 &BTRFS_I(inode)->runtime_flags)) {
8700 inode_dio_end(inode); 8699 inode_dio_end(inode);
@@ -8707,6 +8706,7 @@ static ssize_t btrfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
8707 iter, btrfs_get_blocks_direct, NULL, 8706 iter, btrfs_get_blocks_direct, NULL,
8708 btrfs_submit_direct, flags); 8707 btrfs_submit_direct, flags);
8709 if (iov_iter_rw(iter) == WRITE) { 8708 if (iov_iter_rw(iter) == WRITE) {
8709 up_read(&BTRFS_I(inode)->dio_sem);
8710 current->journal_info = NULL; 8710 current->journal_info = NULL;
8711 if (ret < 0 && ret != -EIOCBQUEUED) { 8711 if (ret < 0 && ret != -EIOCBQUEUED) {
8712 if (dio_data.reserve) 8712 if (dio_data.reserve)