aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/fsnotify_backend.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-08-12 17:23:04 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-08-12 17:23:04 -0400
commit2069601b3f0ea38170d4b509b89f3ca0a373bdc1 (patch)
tree647002d4c3814bd3d95d16ef7edef1757de8554f /include/linux/fsnotify_backend.h
parentad41a1e0cab07c5125456e8d38e5b1ab148d04aa (diff)
Revert "fsnotify: store struct file not struct path"
This reverts commit 3bcf3860a4ff9bbc522820b4b765e65e4deceb3e (and the accompanying commit c1e5c954020e "vfs/fsnotify: fsnotify_close can delay the final work in fput" that was a horribly ugly hack to make it work at all). The 'struct file' approach not only causes that disgusting hack, it somehow breaks pulseaudio, probably due to some other subtlety with f_count handling. Fix up various conflicts due to later fsnotify work. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/fsnotify_backend.h')
-rw-r--r--include/linux/fsnotify_backend.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/include/linux/fsnotify_backend.h b/include/linux/fsnotify_backend.h
index 9bbfd7204b04..ed36fb57c426 100644
--- a/include/linux/fsnotify_backend.h
+++ b/include/linux/fsnotify_backend.h
@@ -203,20 +203,20 @@ struct fsnotify_event {
203 /* to_tell may ONLY be dereferenced during handle_event(). */ 203 /* to_tell may ONLY be dereferenced during handle_event(). */
204 struct inode *to_tell; /* either the inode the event happened to or its parent */ 204 struct inode *to_tell; /* either the inode the event happened to or its parent */
205 /* 205 /*
206 * depending on the event type we should have either a file or inode 206 * depending on the event type we should have either a path or inode
207 * We hold a reference on file, but NOT on inode. Since we have the ref on 207 * We hold a reference on path, but NOT on inode. Since we have the ref on
208 * the file, it may be dereferenced at any point during this object's 208 * the path, it may be dereferenced at any point during this object's
209 * lifetime. That reference is dropped when this object's refcnt hits 209 * lifetime. That reference is dropped when this object's refcnt hits
210 * 0. If this event contains an inode instead of a file, the inode may 210 * 0. If this event contains an inode instead of a path, the inode may
211 * ONLY be used during handle_event(). 211 * ONLY be used during handle_event().
212 */ 212 */
213 union { 213 union {
214 struct file *file; 214 struct path path;
215 struct inode *inode; 215 struct inode *inode;
216 }; 216 };
217/* when calling fsnotify tell it if the data is a path or inode */ 217/* when calling fsnotify tell it if the data is a path or inode */
218#define FSNOTIFY_EVENT_NONE 0 218#define FSNOTIFY_EVENT_NONE 0
219#define FSNOTIFY_EVENT_FILE 1 219#define FSNOTIFY_EVENT_PATH 1
220#define FSNOTIFY_EVENT_INODE 2 220#define FSNOTIFY_EVENT_INODE 2
221 int data_type; /* which of the above union we have */ 221 int data_type; /* which of the above union we have */
222 atomic_t refcnt; /* how many groups still are using/need to send this event */ 222 atomic_t refcnt; /* how many groups still are using/need to send this event */
@@ -293,7 +293,7 @@ struct fsnotify_mark {
293/* main fsnotify call to send events */ 293/* main fsnotify call to send events */
294extern int fsnotify(struct inode *to_tell, __u32 mask, void *data, int data_is, 294extern int fsnotify(struct inode *to_tell, __u32 mask, void *data, int data_is,
295 const unsigned char *name, u32 cookie); 295 const unsigned char *name, u32 cookie);
296extern void __fsnotify_parent(struct file *file, struct dentry *dentry, __u32 mask); 296extern void __fsnotify_parent(struct path *path, struct dentry *dentry, __u32 mask);
297extern void __fsnotify_inode_delete(struct inode *inode); 297extern void __fsnotify_inode_delete(struct inode *inode);
298extern void __fsnotify_vfsmount_delete(struct vfsmount *mnt); 298extern void __fsnotify_vfsmount_delete(struct vfsmount *mnt);
299extern u32 fsnotify_get_cookie(void); 299extern u32 fsnotify_get_cookie(void);
@@ -422,7 +422,7 @@ static inline int fsnotify(struct inode *to_tell, __u32 mask, void *data, int da
422 return 0; 422 return 0;
423} 423}
424 424
425static inline void __fsnotify_parent(struct file *file, struct dentry *dentry, __u32 mask) 425static inline void __fsnotify_parent(struct path *path, struct dentry *dentry, __u32 mask)
426{} 426{}
427 427
428static inline void __fsnotify_inode_delete(struct inode *inode) 428static inline void __fsnotify_inode_delete(struct inode *inode)