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
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.