~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/filesystems/inotify.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/filesystems/inotify.rst (Version linux-6.12-rc7) and /Documentation/filesystems/inotify.rst (Version linux-5.0.21)


  1 .. SPDX-License-Identifier: GPL-2.0               
  2                                                   
  3 ==============================================    
  4 Inotify - A Powerful yet Simple File Change No    
  5 ==============================================    
  6                                                   
  7                                                   
  8                                                   
  9 Document started 15 Mar 2005 by Robert Love <rm    
 10                                                   
 11 Document updated 4 Jan 2015 by Zhang Zhen <zhen    
 12                                                   
 13         - Deleted obsoleted interface, just re    
 14                                                   
 15 (i) Rationale                                     
 16                                                   
 17 Q:                                                
 18    What is the design decision behind not tyin    
 19    the watched object?                            
 20                                                   
 21 A:                                                
 22    Watches are associated with an open inotify    
 23    This solves the primary problem with dnotif    
 24    the file and thus, worse, pins the mount.      
 25    for use on a desktop system with removable     
 26    unmounted.  Watching a file should not requ    
 27                                                   
 28 Q:                                                
 29    What is the design decision behind using an    
 30    an fd-per-watch?                               
 31                                                   
 32 A:                                                
 33    An fd-per-watch quickly consumes more file     
 34    more fd's than are feasible to manage, and     
 35    select()-able.  Yes, root can bump the per-    
 36    can use epoll, but requiring both is a sill    
 37    A watch consumes less memory than an open f    
 38    spaces is thus sensible.  The current desig    
 39    want: Users initialize inotify, once, and a    
 40    fd and no twiddling with fd limits.  Initia    
 41    thousand times is silly.  If we can impleme    
 42    cleanly--and we can, the idr layer makes st    
 43    should.                                        
 44                                                   
 45    There are other good arguments.  With a sin    
 46    item to block on, which is mapped to a sing    
 47    fd returns all watch events and also any po    
 48    every fd was a separate watch,                 
 49                                                   
 50    - There would be no way to get event orderi    
 51      file bar would pop poll() on both fd's, b    
 52      which happened first.  A single queue tri    
 53      ordering is crucial to existing applicati    
 54      "mv a b ; mv b a" events without ordering    
 55                                                   
 56    - We'd have to maintain n fd's and n intern    
 57      versus just one.  It is a lot messier in     
 58      queue is the data structure that makes se    
 59                                                   
 60    - User-space developers prefer the current     
 61      example, love it.  Trust me, I asked.  It    
 62      to manage and block on 1000 fd's via sele    
 63                                                   
 64    - No way to get out of band data.              
 65                                                   
 66    - 1024 is still too low.  ;-)                  
 67                                                   
 68    When you talk about designing a file change    
 69    scales to 1000s of directories, juggling 10    
 70    the right interface.  It is too heavy.         
 71                                                   
 72    Additionally, it _is_ possible to  more tha    
 73    juggle more than one queue and thus more th    
 74    need not be a one-fd-per-process mapping; i    
 75    process can easily want more than one queue    
 76                                                   
 77 Q:                                                
 78    Why the system call approach?                  
 79                                                   
 80 A:                                                
 81    The poor user-space interface is the second    
 82    Signals are a terrible, terrible interface     
 83    anything, for that matter.  The ideal solut    
 84    file descriptor-based one that allows basic    
 85    Obtaining the fd and managing the watches c    
 86    device file or a family of new system calls    
 87    family of system calls because that is the     
 88    interfaces.  The only real difference was w    
 89    and ioctl(2) or a couple of new system call    
 90                                                   
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php