]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Merge tag 'fuse-update-6.18' of git://git.kernel.org/pub/scm/linux/kernel/git/mszered...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 3 Oct 2025 19:48:18 +0000 (12:48 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 3 Oct 2025 19:48:18 +0000 (12:48 -0700)
Pull fuse updates from Miklos Szeredi:

 - Extend copy_file_range interface to be fully 64bit capable (Miklos)

 - Add selftest for fusectl (Chen Linxuan)

 - Move fuse docs into a separate directory (Bagas Sanjaya)

 - Allow fuse to enter freezable state in some cases (Sergey
   Senozhatsky)

 - Clean up writeback accounting after removing tmp page copies (Joanne)

 - Optimize virtiofs request handling (Li RongQing)

 - Add synchronous FUSE_INIT support (Miklos)

 - Allow server to request prune of unused inodes (Miklos)

 - Fix deadlock with AIO/sync release (Darrick)

 - Add some prep patches for block/iomap support (Darrick)

 - Misc fixes and cleanups

* tag 'fuse-update-6.18' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse: (26 commits)
  fuse: move CREATE_TRACE_POINTS to a separate file
  fuse: move the backing file idr and code into a new source file
  fuse: enable FUSE_SYNCFS for all fuseblk servers
  fuse: capture the unique id of fuse commands being sent
  fuse: fix livelock in synchronous file put from fuseblk workers
  mm: fix lockdep issues in writeback handling
  fuse: add prune notification
  fuse: remove redundant calls to fuse_copy_finish() in fuse_notify()
  fuse: fix possibly missing fuse_copy_finish() call in fuse_notify()
  fuse: remove FUSE_NOTIFY_CODE_MAX from <uapi/linux/fuse.h>
  fuse: remove fuse_readpages_end() null mapping check
  fuse: fix references to fuse.rst -> fuse/fuse.rst
  fuse: allow synchronous FUSE_INIT
  fuse: zero initialize inode private data
  fuse: remove unused 'inode' parameter in fuse_passthrough_open
  virtio_fs: fix the hash table using in virtio_fs_enqueue_req()
  mm: remove BDI_CAP_WRITEBACK_ACCT
  fuse: use default writeback accounting
  virtio_fs: Remove redundant spinlock in virtio_fs_request_complete()
  fuse: remove unneeded offset assignment when filling write pages
  ...

1  2 
Documentation/filesystems/index.rst
MAINTAINERS
fs/fuse/dev.c
fs/fuse/dev_uring.c
fs/fuse/inode.c
fs/fuse/virtio_fs.c
mm/backing-dev.c
mm/page-writeback.c
tools/testing/selftests/Makefile

Simple merge
diff --cc MAINTAINERS
Simple merge
diff --cc fs/fuse/dev.c
Simple merge
Simple merge
diff --cc fs/fuse/inode.c
Simple merge
Simple merge
Simple merge
index 5f90fd6a713793339339674cdbc75950aa8f9172,e359f141639db6b4f757eb50c6d577a8ea3a23ec..757bc4d3b5b5515c5b69fdeaaecb8307d8cc451b
@@@ -2995,21 -3019,18 +2995,18 @@@ bool __folio_end_writeback(struct foli
  
                xa_lock_irqsave(&mapping->i_pages, flags);
                ret = folio_xor_flags_has_waiters(folio, 1 << PG_writeback);
 -              __xa_clear_mark(&mapping->i_pages, folio_index(folio),
 +              __xa_clear_mark(&mapping->i_pages, folio->index,
                                        PAGECACHE_TAG_WRITEBACK);
-               if (bdi->capabilities & BDI_CAP_WRITEBACK_ACCT) {
-                       struct bdi_writeback *wb = inode_to_wb(inode);
  
-                       wb_stat_mod(wb, WB_WRITEBACK, -nr);
-                       __wb_writeout_add(wb, nr);
-                       if (!mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK))
-                               wb_inode_writeback_end(wb);
+               wb = inode_to_wb(inode);
+               wb_stat_mod(wb, WB_WRITEBACK, -nr);
+               __wb_writeout_add(wb, nr);
+               if (!mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK)) {
+                       wb_inode_writeback_end(wb);
+                       if (mapping->host)
+                               sb_clear_inode_writeback(mapping->host);
                }
  
-               if (mapping->host && !mapping_tagged(mapping,
-                                                    PAGECACHE_TAG_WRITEBACK))
-                       sb_clear_inode_writeback(mapping->host);
                xa_unlock_irqrestore(&mapping->i_pages, flags);
        } else {
                ret = folio_xor_flags_has_waiters(folio, 1 << PG_writeback);
@@@ -3032,9 -3053,9 +3029,9 @@@ void __folio_start_writeback(struct fol
        VM_BUG_ON_FOLIO(!folio_test_locked(folio), folio);
  
        if (mapping && mapping_use_writeback_tags(mapping)) {
 -              XA_STATE(xas, &mapping->i_pages, folio_index(folio));
 +              XA_STATE(xas, &mapping->i_pages, folio->index);
                struct inode *inode = mapping->host;
-               struct backing_dev_info *bdi = inode_to_bdi(inode);
+               struct bdi_writeback *wb;
                unsigned long flags;
                bool on_wblist;
  
Simple merge