From: John McCutchan <ttb@tentacle.dhs.org>
To: jim.houston@comcast.net
Cc: linux-kernel@vger.kernel.org, george@mvista.com, rml@novell.com,
akpm@osdl.org, johannes@sipsolutions.net
Subject: Re: Inotify problem [was Re: 2.6.13-rc6-mm1]
Date: Fri, 26 Aug 2005 13:52:44 -0400 [thread overview]
Message-ID: <1125078764.13243.6.camel@vertex> (raw)
In-Reply-To: <1125075832.2783.99.camel@new.localdomain>
On Fri, 2005-08-26 at 13:03 -0400, Jim Houston wrote:
> Hi Everyone,
>
> I'm answering this from my home email. I have not heard from my
> co-workers in Florida yet, and I imagine that they are busy cleaning up
> after hurricane Katrina and waiting for the power to come back on.
>
> It looks like we have an "off by one" problem with idr_get_new_above()
> which may be part of the inotify problem. I'm not sure if the problem
> is the behavior or the name & comments. The start_id parameter is the
> starting point for the idr allocation search, and if it is available, it
> will be allocated. If you pass in the last id allocated as the start_id
> and it has already been freed (by an idr_remove call), it will be
> allocated again. The obvious fix would be to increment start_id
> in idr_get_new_above().
Thanks for your suggestion, it has fixed the inotify problem. But where
to put the fix is turning into a bit of a mess. Some callers like
drivers/md/dm.c:682 call idr_get_new_above as if it will return >=
starting_id. The comment says that it will return > starting_id, and the
function name leads people to believe the same thing. In the patch below
I change inotify do add one to the value was pass into idr. I also
change the comment to more accurately reflect what the function does.
The function name doesn't fit, but it never did.
Signed-off-by: John McCutchan <ttb@tentacle.dhs.org>
Index: linux/fs/inotify.c
===================================================================
--- linux.orig/fs/inotify.c 2005-08-26 13:38:29.000000000 -0400
+++ linux/fs/inotify.c 2005-08-26 13:38:55.000000000 -0400
@@ -353,7 +353,7 @@
do {
if (unlikely(!idr_pre_get(&dev->idr, GFP_KERNEL)))
return -ENOSPC;
- ret = idr_get_new_above(&dev->idr, watch, dev->last_wd, &watch->wd);
+ ret = idr_get_new_above(&dev->idr, watch, dev->last_wd+1, &watch->wd);
} while (ret == -EAGAIN);
return ret;
Index: linux/lib/idr.c
===================================================================
--- linux.orig/lib/idr.c 2005-08-26 13:38:22.000000000 -0400
+++ linux/lib/idr.c 2005-08-26 13:39:08.000000000 -0400
@@ -207,7 +207,7 @@
}
/**
- * idr_get_new_above - allocate new idr entry above a start id
+ * idr_get_new_above - allocate new idr entry above or equal to a start id
* @idp: idr handle
* @ptr: pointer you want associated with the ide
* @start_id: id to start search at
next prev parent reply other threads:[~2005-08-26 17:52 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-08-26 17:03 Inotify problem [was Re: 2.6.13-rc6-mm1] Jim Houston
2005-08-26 17:52 ` John McCutchan [this message]
2005-08-26 17:56 ` Robert Love
[not found] <fa.h7s290f.i6qp37@ifi.uio.no>
[not found] ` <fa.e1uvbs1.l407h7@ifi.uio.no>
2005-08-25 10:07 ` Reuben Farrelly
2005-08-25 12:18 ` Johannes Berg
2005-08-25 13:40 ` John McCutchan
2005-08-25 13:47 ` Robert Love
2005-08-25 14:03 ` Johannes Berg
2005-08-25 14:06 ` John McCutchan
2005-08-25 14:13 ` Johannes Berg
2005-08-25 14:39 ` John McCutchan
2005-08-25 14:13 ` John McCutchan
2005-08-25 14:41 ` Johannes Berg
2005-08-25 15:16 ` John McCutchan
2005-08-25 13:50 ` Johannes Berg
2005-08-25 14:03 ` John McCutchan
2005-08-25 13:33 ` John McCutchan
2005-08-25 15:18 ` Robert Love
2005-08-25 18:54 ` George Anzinger
2005-08-25 19:03 ` Johannes Berg
2005-08-25 19:06 ` John McCutchan
2005-08-25 19:04 ` John McCutchan
2005-08-25 23:10 ` George Anzinger
2005-08-25 23:20 ` Johannes Berg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1125078764.13243.6.camel@vertex \
--to=ttb@tentacle.dhs.org \
--cc=akpm@osdl.org \
--cc=george@mvista.com \
--cc=jim.houston@comcast.net \
--cc=johannes@sipsolutions.net \
--cc=linux-kernel@vger.kernel.org \
--cc=rml@novell.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox