User Space Pathname Cache for File Change Notifications

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In distributed storage systems, creating change notify responses for file changes is hindered by issues such as 'path unavailable errors' due to LIN purging from the vnode cache and high resource costs of lin_get_path API calls, especially during frequent delete events, leading to performance bottlenecks and errors.

Innovation Solution

Implementing a pathname cache in user space tied to a notify handler in the file system driver to look up path names for change notify responses, avoiding unnecessary lin_get_path API calls by preserving path information and using a least-recently used (LRU) data structure to manage cache entries.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If lin_get_path API calls are made to retrieve path names for change notify responses, then correct path information is obtained, but system resource consumption increases and performance bottlenecks occur

Engineering Contradiction:
Improvecorrectness of path names in change notify responsesVSAvoidperformance during frequent file operations
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent implements a pathname cache that pre-stores path name information in user space before it is needed for change notify responses. When a file operation occurs, the corresponding path name is already cached and can be retrieved without making expensive lin_get_path API calls, thus resolving the contradiction between obtaining correct path information and maintaining system performance

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent creates a copy of path name information from kernel space (vnode cache) to user space (pathname cache). This copy allows the system to retrieve path names from the user space cache instead of repeatedly accessing kernel space through expensive API calls, thereby improving performance while maintaining correctness

Inventive Principle:
Principle #26Copying

2Loss of energy

If LIN purging from vnode cache is allowed to occur normally, then memory management is efficient, but path unavailable errors occur when generating change notify responses

Engineering Contradiction:
Improvememory management efficiencyVSAvoidavailability of path names for change notify responses
Core Design Contradiction:
Loss of energyVSReliability

Solution Approach 1:

The patent introduces a pathname cache in user space as an intermediary between the kernel space vnode cache and the change notify response generation process. When LINs are purged from the vnode cache, the corresponding path names are already preserved in the user space pathname cache, preventing path unavailable errors while allowing normal memory management to proceed

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent extracts path name information from the kernel space vnode cache and stores it separately in user space before the LIN is purged. This extraction ensures that even when the original cache entry is removed for memory management, the path name remains available for generating change notify responses

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS11599503B2Path name cache for notifications of file changes
Publication Date: 2023.03.07 EMC IP HLDG CO LLC
  • US11599503B2 patent drawing
  • US11599503B2 patent drawing
  • US11599503B2 patent drawing

AI summary

Change notify responses can be utilized to inform a remote computer that a file or directory that is being monitored has changed. A change notify response can include a path name to the file or directory being referenced. In some examples, a cache of path names can be maintained in a user space of a server implementing change notify responses. When a module that generates a change notify response does generate such a response, the module can first access the cache to determine if the relevant path name is located in the cache. Where the relevant path name is not located in the cache, the module can obtain the path name from kernel space and store it in the cache.