diff options
author | Joel Stanley <joel@jms.id.au> | 2020-07-22 12:42:41 +0300 |
---|---|---|
committer | Joel Stanley <joel@jms.id.au> | 2020-07-22 12:42:46 +0300 |
commit | 8a9b346382056b52cd7ff141ae9f15a0fcfeb13d (patch) | |
tree | 7b855ed138c412bc27713ea8d3feef8939c954a0 /fs/nfs/direct.c | |
parent | 2b4829edfc1c225c717652153097470529d171db (diff) | |
parent | d811d29517d1ea05bc159579231652d3ca1c2a01 (diff) | |
download | linux-8a9b346382056b52cd7ff141ae9f15a0fcfeb13d.tar.xz |
Merge tag 'v5.4.53' into dev-5.4
This is the 5.4.53 stable release
Signed-off-by: Joel Stanley <joel@jms.id.au>
Diffstat (limited to 'fs/nfs/direct.c')
-rw-r--r-- | fs/nfs/direct.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c index 6b0bf4ebd812..70cf8c5760c7 100644 --- a/fs/nfs/direct.c +++ b/fs/nfs/direct.c @@ -367,8 +367,6 @@ static void nfs_direct_complete(struct nfs_direct_req *dreq) { struct inode *inode = dreq->inode; - inode_dio_end(inode); - if (dreq->iocb) { long res = (long) dreq->error; if (dreq->count != 0) { @@ -380,7 +378,10 @@ static void nfs_direct_complete(struct nfs_direct_req *dreq) complete(&dreq->completion); + igrab(inode); nfs_direct_req_release(dreq); + inode_dio_end(inode); + iput(inode); } static void nfs_direct_read_completion(struct nfs_pgio_header *hdr) @@ -510,8 +511,10 @@ static ssize_t nfs_direct_read_schedule_iovec(struct nfs_direct_req *dreq, * generic layer handle the completion. */ if (requested_bytes == 0) { - inode_dio_end(inode); + igrab(inode); nfs_direct_req_release(dreq); + inode_dio_end(inode); + iput(inode); return result < 0 ? result : -EIO; } @@ -923,8 +926,10 @@ static ssize_t nfs_direct_write_schedule_iovec(struct nfs_direct_req *dreq, * generic layer handle the completion. */ if (requested_bytes == 0) { - inode_dio_end(inode); + igrab(inode); nfs_direct_req_release(dreq); + inode_dio_end(inode); + iput(inode); return result < 0 ? result : -EIO; } |