[Patch][RFC] fcntl: add ability to stop monitored processes

From: Neil Horman
Date: Fri Jun 10 2005 - 19:07:02 EST


Hey there!
I've recently developed this patch in pursuit of an ability to trap
proceses making modifcations to monitored directories, and I thought It would be
a nice feature to add to the mainline kernel. It basically adds a flag to the
F_NOTIFY fcntl which optionally sends a SIGSTOP to the process making the
flagged modifications to the monitored directories, and passes the pid of the
stopped process to the monitoring process. I've tested it, and it works quite
well for me. Looking for comments/approvial/incorporation.

Thanks and Regards
Neil

Signed-off-by: Neil Horman <nhorman@xxxxxxxxxx>

fs/dnotify.c | 2 ++
fs/fcntl.c | 1 +
include/linux/fcntl.h | 1 +
3 files changed, 4 insertions(+)


--- linux-2.6/include/linux/fcntl.h.orig 2005-06-10 16:04:48.000000000 -0400
+++ linux-2.6/include/linux/fcntl.h 2005-06-10 16:02:16.000000000 -0400
@@ -21,6 +21,7 @@
#define DN_DELETE 0x00000008 /* File removed */
#define DN_RENAME 0x00000010 /* File renamed */
#define DN_ATTRIB 0x00000020 /* File changed attibutes */
+#define DN_STOPSND 0x40000000 /* Send a SIGSTOP to the sender */
#define DN_MULTISHOT 0x80000000 /* Don't remove notifier */

#ifdef __KERNEL__
--- linux-2.6/fs/dnotify.c.orig 2005-05-04 21:47:58.000000000 -0400
+++ linux-2.6/fs/dnotify.c 2005-06-10 16:02:16.000000000 -0400
@@ -138,6 +138,8 @@ void __inode_dir_notify(struct inode *in
changed = 1;
kmem_cache_free(dn_cache, dn);
}
+ if (dn->dn_mask & DN_STOPSND)
+ send_sig(SIGSTOP,current,1);
}
if (changed)
redo_inode_mask(inode);
--- linux-2.6/fs/fcntl.c.orig 2005-05-04 21:47:58.000000000 -0400
+++ linux-2.6/fs/fcntl.c 2005-06-10 16:05:17.000000000 -0400
@@ -438,6 +438,7 @@ static void send_sigio_to_task(struct ta
else
si.si_band = band_table[reason - POLL_IN];
si.si_fd = fd;
+ si.si_pid = current->pid;
if (!send_group_sig_info(fown->signum, &si, p))
break;
/* fall-through: fall back on the old plain SIGIO signal */
--
/***************************************************
*Neil Horman
*Software Engineer
*Red Hat, Inc.
*nhorman@xxxxxxxxxx
*gpg keyid: 1024D / 0x92A74FA1
*http://pgp.mit.edu
***************************************************/

Attachment: pgp00000.pgp
Description: PGP signature