getting mysterious (to me) EINVAL from inotify_rm_watch

From: Felix von Leitner
Date: Wed May 11 2016 - 10:30:24 EST


Hi,

I am trying to add inotify support to my tail implementation (for -F).
This is what happens:

inotify_init() = 4
inotify_add_watch(4, "/tmp/foo", IN_MODIFY) = 1
inotify_rm_watch(4, 1) = -1 EINVAL (Invalid argument)
inotify_add_watch(4, "/tmp/foo", IN_MODIFY) = 2

There is also some polling, some reading and some statting going on here, but
those are on other descriptors than 4 so they should not matter).

Can somebody explain the EINVAL I'm getting from inotify_rm_watch to me?

This is a stock kernel 4.5.0.

Thanks,

Felix