]> Git Repo - J-linux.git/commitdiff
Merge tag 'vfs-6.13-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs master
authorLinus Torvalds <[email protected]>
Mon, 6 Jan 2025 18:26:39 +0000 (10:26 -0800)
committerLinus Torvalds <[email protected]>
Mon, 6 Jan 2025 18:26:39 +0000 (10:26 -0800)
Pull vfs fixes from Christian Brauner:

 - Relax assertions on failure to encode file handles

   The ->encode_fh() method can fail for various reasons. None of them
   warrant a WARN_ON().

 - Fix overlayfs file handle encoding by allowing encoding an fid from
   an inode without an alias

 - Make sure fuse_dir_open() handles FOPEN_KEEP_CACHE. If it's not
   specified fuse needs to invaludate the directory inode page cache

 - Fix qnx6 so it builds with gcc-15

 - Various fixes for netfslib and ceph and nfs filesystems:
     - Ignore silly rename files from afs and nfs when building header
       archives
     - Fix read result collection in netfslib with multiple subrequests
     - Handle ENOMEM for netfslib buffered reads
     - Fix oops in nfs_netfs_init_request()
     - Parse the secctx command immediately in cachefiles
     - Remove a redundant smp_rmb() in netfslib
     - Handle recursion in read retry in netfslib
     - Fix clearing of folio_queue
     - Fix missing cancellation of copy-to_cache when the cache for a
       file is temporarly disabled in netfslib

 - Sanity check the hfs root record

 - Fix zero padding data issues in concurrent write scenarios

 - Fix is_mnt_ns_file() after converting nsfs to path_from_stashed()

 - Fix missing declaration of init_files

 - Increase I/O priority when writing revoke records in jbd2

 - Flush filesystem device before updating tail sequence in jbd2

* tag 'vfs-6.13-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs: (23 commits)
  ovl: support encoding fid from inode with no alias
  ovl: pass realinode to ovl_encode_real_fh() instead of realdentry
  fuse: respect FOPEN_KEEP_CACHE on opendir
  netfs: Fix is-caching check in read-retry
  netfs: Fix the (non-)cancellation of copy when cache is temporarily disabled
  netfs: Fix ceph copy to cache on write-begin
  netfs: Work around recursion by abandoning retry if nothing read
  netfs: Fix missing barriers by using clear_and_wake_up_bit()
  netfs: Remove redundant use of smp_rmb()
  cachefiles: Parse the "secctx" immediately
  nfs: Fix oops in nfs_netfs_init_request() when copying to cache
  netfs: Fix enomem handling in buffered reads
  netfs: Fix non-contiguous donation between completed reads
  kheaders: Ignore silly-rename files
  fs: relax assertions on failure to encode file handles
  fs: fix missing declaration of init_files
  fs: fix is_mnt_ns_file()
  iomap: fix zero padding data issue in concurrent append writes
  iomap: pass byte granular end position to iomap_add_to_ioend
  jbd2: flush filesystem device before updating tail sequence
  ...

1  2 
fs/smb/client/smb2pdu.c

diff --combined fs/smb/client/smb2pdu.c
index 9593593012508027f987acbfb1ab872685cff36d,458b53d1f9cb8d46aec9b68ca7f487e2942e38e2..0577556f0a4118202488eed378949dd3ff1fec19
@@@ -4615,6 -4615,7 +4615,7 @@@ smb2_readv_callback(struct mid_q_entry 
                        __set_bit(NETFS_SREQ_HIT_EOF, &rdata->subreq.flags);
                        rdata->result = 0;
                }
+               __set_bit(NETFS_SREQ_MADE_PROGRESS, &rdata->subreq.flags);
        }
        trace_smb3_rw_credits(rreq_debug_id, subreq_debug_index, rdata->credits.value,
                              server->credits, server->in_flight,
@@@ -4840,12 -4841,12 +4841,14 @@@ smb2_writev_callback(struct mid_q_entr
                if (written > wdata->subreq.len)
                        written &= 0xFFFF;
  
-               if (written < wdata->subreq.len)
 +              cifs_stats_bytes_written(tcon, written);
 +
+               if (written < wdata->subreq.len) {
                        wdata->result = -ENOSPC;
-               else
+               } else if (written > 0) {
                        wdata->subreq.len = written;
+                       __set_bit(NETFS_SREQ_MADE_PROGRESS, &wdata->subreq.flags);
+               }
                break;
        case MID_REQUEST_SUBMITTED:
        case MID_RETRY_NEEDED:
@@@ -5014,7 -5015,7 +5017,7 @@@ smb2_async_writev(struct cifs_io_subreq
        }
  #endif
  
-       if (test_bit(NETFS_SREQ_RETRYING, &wdata->subreq.flags))
+       if (wdata->subreq.retry_count > 0)
                smb2_set_replay(server, &rqst);
  
        cifs_dbg(FYI, "async write at %llu %u bytes iter=%zx\n",
@@@ -5158,7 -5159,6 +5161,7 @@@ replay_again
                cifs_dbg(VFS, "Send error in write = %d\n", rc);
        } else {
                *nbytes = le32_to_cpu(rsp->DataLength);
 +              cifs_stats_bytes_written(io_parms->tcon, *nbytes);
                trace_smb3_write_done(0, 0, xid,
                                      req->PersistentFileId,
                                      io_parms->tcon->tid,
@@@ -6207,7 -6207,7 +6210,7 @@@ SMB2_lease_break(const unsigned int xid
        req->StructureSize = cpu_to_le16(36);
        total_len += 12;
  
 -      memcpy(req->LeaseKey, lease_key, 16);
 +      memcpy(req->LeaseKey, lease_key, SMB2_LEASE_KEY_SIZE);
        req->LeaseState = lease_state;
  
        flags |= CIFS_NO_RSP_BUF;
This page took 0.06782 seconds and 4 git commands to generate.