From: Jia Zhu zhujia.zj@bytedance.com
anolis inclusion category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/IB5UKT
Reference: https://gitee.com/anolis/cloud-kernel/commit/7bcc5ad5e2ed
--------------------------------
ANBZ: #1722
commit 65aa5f6fd8a12e0a343aaf1815949a79a49e3f35 upstream.
When an anonymous fd is released, only flush the requests associated with it, rather than all of requests in xarray.
Fixes: 9032b6e8589f ("cachefiles: implement on-demand read") Signed-off-by: Jia Zhu zhujia.zj@bytedance.com Signed-off-by: David Howells dhowells@redhat.com Reviewed-by: Jeffle Xu jefflexu@linux.alibaba.com Reviewed-by: Gao Xiang hsiangkao@linux.alibaba.com Link: https://listman.redhat.com/archives/linux-cachefs/2022-June/006937.html Signed-off-by: Gao Xiang hsiangkao@linux.alibaba.com Link: https://gitee.com/anolis/cloud-kernel/pulls/596 Acked-by: Joseph Qi joseph.qi@linux.alibaba.com Reviewed-by: Jingbo Xu jefflexu@linux.alibaba.com Signed-off-by: Baokun Li libaokun1@huawei.com --- fs/cachefiles/ondemand.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/fs/cachefiles/ondemand.c b/fs/cachefiles/ondemand.c index adc257b80b8e..ad3330f9e3d1 100644 --- a/fs/cachefiles/ondemand.c +++ b/fs/cachefiles/ondemand.c @@ -29,7 +29,8 @@ static int cachefiles_ondemand_fd_release(struct inode *inode, &cache->reqs.xa_lock); BUG_ON(!req);
- if (req->msg.opcode == CACHEFILES_OP_READ) { + if (req->msg.object_id == object_id && + req->msg.opcode == CACHEFILES_OP_READ) { req->error = -EIO; complete(&req->done); radix_tree_iter_delete(&cache->reqs, &iter, slot);