SMB Change Notification is a concept that allows clients to keep up with file and directory changes. The idea is to prevent clients from seeing stale content or having to constantly refresh their view. The server looks for changes to files/directories and, when detected, it sends a notification to the client to inform them of the change.
Isilon supports three settings related to change notification. The first of which, and also the default, is “All”. With this settings Isilon will send unnecessary change notifications to far to many clients. Why? If we take a look at a scenario where we have 300 users connecting to an Isilon share called “Applications”. This share has a folder structure with a depth of 6 folders. Lets say a user goes into the deepest folder, “Folder 6”, and changes a file on the share. The server will notice the change and attempt to notify the clients. When “All” is set all clients looking at the higher-level folders will get notified of the change, not just uses looking at “Folder 6”. In this scenarios all 300 clients would receive a change notify event.
This effort causes Isilon load to process the notifications and network traffic uses to actually notify the clients. All in all, this seems like a bad idea. Wouldn’t you rather just notify the clients looking at the directory where the change occurred that a change was made? That is where the “No Recurses” option comes in. In out scenarios, with this option set, only clients looking at “Folder 6” will be notified of the change. This leads to a reduction of internal Isilon load and a reduction of network traffic.
This third option is to simply disable change notifications all together and run the risk of clients seeing stale data. I wouldn’t recommend this setting as it might cause unintended consequences.
Change Notify can be controlled at a share level or globally. To make the change globally to can use the command:
isi smb settings shares modify --change-notify <value>
Of if you’d rather control this per share:
isi smb shares modify <sharename> --change-notify <value>
Options are “all”, “norecurse”, or “none”.