• Linus Torvalds's avatar
    Merge tag 'afs-fix-rotation-20240105' of... · 0c59ae12
    Linus Torvalds authored
    Merge tag 'afs-fix-rotation-20240105' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs
    
    Pull afs updates from David Howells:
     "The majority of the patches are aimed at fixing and improving the AFS
      filesystem's rotation over server IP addresses, but there are also
      some fixes from Oleg Nesterov for the use of read_seqbegin_or_lock().
    
       - Fix fileserver probe handling so that the next round of probes
         doesn't break ongoing server/address rotation by clearing all the
         probe result tracking. This could occasionally cause the rotation
         algorithm to drop straight through, give a 'successful' result
         without actually emitting any RPC calls, leaving the reply buffer
         in an undefined state.
    
         Instead, detach the probe results into a separate struct and
         allocate a new one each time we start probing and update the
         pointer to it. Probes are also sent in order of address preference
         to try and improve the chance that the preferred one will complete
         first.
    
       - Fix server rotation so that it uses configurable address
         preferences across on the probes that have completed so far than
         ranking them by RTT as the latter doesn't necessarily give the best
         route. The preference list can be altered by writing into
         /proc/net/afs/addr_prefs.
    
       - Fix the handling of Read-Only (and Backup) volume callbacks as
         there is one per volume, not one per file, so if someone performs a
         command that, say, offlines the volume but doesn't change it, when
         it comes back online we don't spam the server with a status fetch
         for every vnode we're using. Instead, check the Creation timestamp
         in the VolSync record when prompted by a callback break.
    
       - Handle volume regression (ie. a RW volume being restored from a
         backup) by scrubbing all cache data for that volume. This is
         detected from the VolSync creation timestamp.
    
       - Adjust abort handling and abort -> error mapping to match better
         with what other AFS clients do.
    
       - Fix offline and busy volume state handling as they only apply to
         individual server instances and not entire volumes and the rotation
         algorithm should go and look at other servers if available. Also
         make it sleep briefly before each retry if all the volume instances
         are unavailable"
    
    * tag 'afs-fix-rotation-20240105' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs: (40 commits)
      afs: trace: Log afs_make_call(), including server address
      afs: Fix offline and busy message emission
      afs: Fix fileserver rotation
      afs: Overhaul invalidation handling to better support RO volumes
      afs: Parse the VolSync record in the reply of a number of RPC ops
      afs: Don't leave DONTUSE/NEWREPSITE servers out of server list
      afs: Fix comment in afs_do_lookup()
      afs: Apply server breaks to mmap'd files in the call processor
      afs: Move the vnode/volume validity checking code into its own file
      afs: Defer volume record destruction to a workqueue
      afs: Make it possible to find the volumes that are using a server
      afs: Combine the endpoint state bools into a bitmask
      afs: Keep a record of the current fileserver endpoint state
      afs: Dispatch vlserver probes in priority order
      afs: Dispatch fileserver probes in priority order
      afs: Mark address lists with configured priorities
      afs: Provide a way to configure address priorities
      afs: Remove the unimplemented afs_cmp_addr_list()
      afs: Add some more info to /proc/net/afs/servers
      rxrpc: Create a procfile to display outstanding client conn bundles
      ...
    0c59ae12
write.c 25.9 KB