From 9ef2972861ca2aa632525c9b2d3ae22b9089c25a Mon Sep 17 00:00:00 2001 From: Yan Zheng Date: Wed, 6 Feb 2008 01:36:09 -0800 Subject: [PATCH] --- yaml --- r: 83372 b: refs/heads/master c: 1c17d18e3775485bf1e0ce79575eb637a94494a2 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/inotify_user.c | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 73df52eda3f1..d672bc2ae67a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 19c561a60ffe52df88dd63de0bff480ca094efe4 +refs/heads/master: 1c17d18e3775485bf1e0ce79575eb637a94494a2 diff --git a/trunk/fs/inotify_user.c b/trunk/fs/inotify_user.c index 5e009331c01f..c509a817068f 100644 --- a/trunk/fs/inotify_user.c +++ b/trunk/fs/inotify_user.c @@ -247,6 +247,19 @@ inotify_dev_get_event(struct inotify_device *dev) return list_entry(dev->events.next, struct inotify_kernel_event, list); } +/* + * inotify_dev_get_last_event - return the last event in the given dev's queue + * + * Caller must hold dev->ev_mutex. + */ +static inline struct inotify_kernel_event * +inotify_dev_get_last_event(struct inotify_device *dev) +{ + if (list_empty(&dev->events)) + return NULL; + return list_entry(dev->events.prev, struct inotify_kernel_event, list); +} + /* * inotify_dev_queue_event - event handler registered with core inotify, adds * a new event to the given device @@ -273,7 +286,7 @@ static void inotify_dev_queue_event(struct inotify_watch *w, u32 wd, u32 mask, put_inotify_watch(w); /* final put */ /* coalescing: drop this event if it is a dupe of the previous */ - last = inotify_dev_get_event(dev); + last = inotify_dev_get_last_event(dev); if (last && last->event.mask == mask && last->event.wd == wd && last->event.cookie == cookie) { const char *lastname = last->name;