Skip to content
Frank Filz edited this page Apr 21, 2023 · 2 revisions

Table of Contents

Latest Head

Currently the head for Ganesha V4 is V5.0 in the next branch.

Features in V5.0

  • Feature to allow malloc trim to be triggered to reduce memory overhead
  • Support for Prometheus and Grafana monitoring
  • Support for the HAProxy V2 protocol
  • Major upgrade/bugfix to MDCACHE. MDCache entries that are under long term reference across multiple RPC calls, for example, because there is an NFSv4 OPEN state on the file, are removed from the LRU. This prevents those entries which may not be reclaimed from blocking reclaiming eligible entries. Additionally, the management of open file descriptors not associated with state (opens, locks, layouts, delegations), the so called "global fds" is moved out of the MDCACHE LRU into a separate LRU managed generally at the FSAL layer for each FSAL. These changes should help prevent unbounded growth of the MDCACHE and more reliable management of open file descriptors.
  • Update to the fsal_fd management to allow async to work by making the locking capable of being taken by one thread and released by another. Additional improvements better assure fairness between operations that want to use the fd for I/O and operations that need to change the access mode of the fd between closed, read, write, and read/write.
  • Documentation has been revised for new features and several errors fixed and clarifications made.

Configuration Changes in V5.0

  • CLIENT blocks may be provided in EXPORT_DEFAULTS to provide a client access list if none is present in a given EXPORT block.
  • Add a command line option (-x) for Ganesha to make any config error fatal on startup.
  • Report a config error for unused blocks.
  • Make all config blocks and parameters unique unless multiples are actually supported.
  • Add FSAL_LIST block to prevent FSAL specific config blocks count as unused if there are no exports for the FSAL yet.
  • Lease_Lifetime can not be 0.
  • Add ganesha_top script.

Logging and Information Changes in V5.0

  • Fix some typos in log messages
  • A log message for converting EBUSY to ERR_FSAL_DELAY was too noisy, don't call posix2fsal_status for EBUSY cases in fsal_fs management to avoid this.
  • Add some debug for CONFIG.

Areas of Fixes in V5.0

  • Use FSAL_O_ANY for commit operations to avoid opening the global fd if not already open
  • Return correct error code for setattr for FSAL_CEPH in one error path
  • For 9P, check that file is open in the correct mode when byte range locks are requested.
  • Make free_state() not depend on op_ctx->fsal_export since there is a path where it must be called without the export available. Instead, the state points to the FSAL's free_state() if the default can not be used.
  • Expire lease immediately when reserve_lease fails, this avoids problems when the client attempts to create a new clientid.
  • Code cleanup for mutexes, rwlocks, etc. to assure all are properly initialized and destroyed. Additionally, global attributes are used for mutexes and rwlocks for consistency.
  • Fix some Coverity errors in XDR code to prevent unbounded memory allocation.
  • Make some CRIT errors during startup fatal.
  • Fix race when granting blocked locks that resulted in a crash.
  • Enable POSIX ACL in CephFS - this is not enabled by default.
  • Cap retries of stat() while claiming POSIX filesystems.
  • Eradicate most references to CACHE_INODE.
  • On Linux for FSAL_VFS make setattr to truncate a file to a size larger than 0x7ffffffffffffffff return EFBIG instead of EINVAL.
  • All FSALs must implement alloc_state and status2. Defaults for these do not work.
  • Do not offer delegations when another client is writing the file.
  • FSAL_PROXY_V4: fix handle length checking.
Clone this wiki locally