[Devel] [PATCH VZ10 6/7] fs/fuse: refactor fuse_file_fail_immediately()
Liu Kui
kui.liu at virtuozzo.com
Tue Aug 26 13:44:54 MSK 2025
Remove redundant code related to fuse_file_fail_immediately().
Signed-off-by: Liu Kui <kui.liu at virtuozzo.com>
---
fs/fuse/dev.c | 10 +++++-----
fs/fuse/file.c | 15 ++++++++-------
fs/fuse/fuse_i.h | 9 ++-------
3 files changed, 15 insertions(+), 19 deletions(-)
diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
index 292709b337bd..25dc27b40861 100644
--- a/fs/fuse/dev.c
+++ b/fs/fuse/dev.c
@@ -672,21 +672,21 @@ static int fuse_request_queue_background(struct fuse_req *req)
}
__set_bit(FR_ISREPLY, &req->flags);
- if (fc->kio.op && req->args->async && !nonblocking && READ_ONCE(fc->connected) &&
- (!ff || !test_bit(FUSE_S_FAIL_IMMEDIATELY, &ff->ff_state))) {
- int ret = fc->kio.op->req_classify(req, false, false);
+ if (fc->kio.op && req->args->async && !nonblocking) {
+ ret = fc->kio.op->req_classify(req, false, false);
if (likely(!ret)) {
unsigned int bkt = fuse_qhash_bucket();
+
__clear_bit(FR_BACKGROUND, &req->flags);
__set_bit(FR_NO_ACCT, &req->flags);
if (wait_event_killable_exclusive(fc->qhash[bkt].waitq,
(atomic_read(&fc->qhash[bkt].num_reqs) < fuse_qhash_bucket_len ||
!READ_ONCE(fc->connected) ||
- (ff && test_bit(FUSE_S_FAIL_IMMEDIATELY, &ff->ff_state)))))
+ fuse_file_fail_immediately(ff))))
return -EIO;
if (!READ_ONCE(fc->connected))
return -ENOTCONN;
- if (ff && test_bit(FUSE_S_FAIL_IMMEDIATELY, &ff->ff_state))
+ if (fuse_file_fail_immediately(ff))
return -EIO;
req->qhash = bkt;
atomic_inc(&fc->qhash[bkt].num_reqs);
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index 3796e45e1b71..656233fe40d0 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -1163,7 +1163,7 @@ static int fuse_do_readpage(struct file *file, struct page *page,
*/
fuse_wait_on_page_writeback(inode, page->index);
spin_lock(&ff->lock);
- if (unlikely(__fuse_file_fail_immediately(ff))) {
+ if (unlikely(fuse_file_fail_immediately(ff))) {
spin_unlock(&ff->lock);
return -EIO;
}
@@ -1320,7 +1320,7 @@ static void fuse_send_readpages(struct fuse_io_args *ia, struct file *file)
ap->args.end = fuse_readpages_end;
spin_lock(&ff->lock);
- if (unlikely(__fuse_file_fail_immediately(ff))) {
+ if (unlikely(fuse_file_fail_immediately(ff))) {
spin_unlock(&ff->lock);
INIT_LIST_HEAD(&ia->revoke_entry);
err = -EIO;
@@ -2568,7 +2568,7 @@ static void fuse_writepages_send(struct fuse_fill_wb_data *data)
int i;
spin_lock(&fi->lock);
- if (test_bit(FUSE_S_FAIL_IMMEDIATELY, &data->ff->ff_state)) {
+ if (fuse_file_fail_immediately(data->ff)) {
shoot_on_sight = 1;
fi->writectr++;
} else {
@@ -2858,7 +2858,7 @@ static int fuse_write_begin(struct file *file, struct address_space *mapping,
fuse_wait_on_page_writeback(mapping->host, folio->index);
- if (fuse_file_fail_immediately(file)) {
+ if (fuse_file_fail_immediately(file->private_data)) {
err = -EIO;
goto cleanup;
}
@@ -2976,9 +2976,10 @@ static void fuse_vma_close(struct vm_area_struct *vma)
static vm_fault_t fuse_page_mkwrite(struct vm_fault *vmf)
{
struct page *page = vmf->page;
- struct inode *inode = file_inode(vmf->vma->vm_file);
+ struct file *file = vmf->vma->vm_file;
+ struct inode *inode = file_inode(file);
- file_update_time(vmf->vma->vm_file);
+ file_update_time(file);
lock_page(page);
if (page->mapping != inode->i_mapping) {
unlock_page(page);
@@ -2986,7 +2987,7 @@ static vm_fault_t fuse_page_mkwrite(struct vm_fault *vmf)
}
fuse_wait_on_page_writeback(inode, page->index);
- if (fuse_file_fail_immediately(vmf->vma->vm_file)) {
+ if (fuse_file_fail_immediately(file->private_data)) {
unlock_page(page);
return VM_FAULT_SIGSEGV;
}
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index 104cf1596085..d4bb4ecdd916 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -1553,14 +1553,9 @@ static inline void fuse_dio_wait(struct fuse_inode *fi)
fuse_write_dio_wait(fi);
}
-static inline bool __fuse_file_fail_immediately(struct fuse_file *ff)
+static inline bool fuse_file_fail_immediately(struct fuse_file *ff)
{
- return test_bit(FUSE_S_FAIL_IMMEDIATELY, &ff->ff_state);
-}
-
-static inline bool fuse_file_fail_immediately(struct file *file)
-{
- return __fuse_file_fail_immediately(file->private_data);
+ return ff && test_bit(FUSE_S_FAIL_IMMEDIATELY, &ff->ff_state);
}
/**
--
2.39.5 (Apple Git-154)
More information about the Devel
mailing list