VFS/fcntl() feature [PATCH]

Rene Janssen (reney@plex.nl)
Thu, 27 Aug 1998 12:09:59 +0000


--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

I have a new feature for the Linux virtual filesystem. My patch against
2.1.118 adds a new fcntl() function (F_SET_SIGVFS) that instructs the VFS
to send a signal to userland if a specific inode (file/dir) has changed. =
You only
have to open the file/dir for reading and give a mask and signalnr to fcn=
tl().
Thats all. The program wakes up when something happens and you can do a=20
fstat() or readdir() to figure out _what_ the changes are. Simple, small,=
no obscure API.
Currently the only way to do this is by frequently polling which is mostl=
y not
what you would like to do.

Please check the patch out. I dont see any complications.

Cheers,

Rene Janssen

cc me :
<reney@plex.nl>

/* small test program for F_SET_SIGVFS
*/

#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <signal.h>
#include <linux/fcntl.h>
#include <linux/fs.h>

static int stop;

void sigusr1(int sig)
{
=09printf("VFS signal\n");=09
}
void stopit(int sig)
{
=09stop =3D 1;
}
int main(int argc, char *argv[])
{
=09int err,fh =3D -1;
=09struct sigvfsinfo info;
=09struct sigaction sa;

=09fh =3D open(argv[1],O_RDONLY);
=09if (!fh) {=20
=09=09perror("open");
=09=09exit(1);
=09}
=09
=09sigemptyset(&sa.sa_mask);
=09sa.sa_handler =3D &sigusr1;
=09sa.sa_flags =3D 0;
=09sigaction(SIGUSR1,&sa,NULL);
=09sigemptyset(&sa.sa_mask);
=09sa.sa_handler =3D &stopit;
=09sa.sa_flags =3D 0;
=09sigaction(SIGINT,&sa,NULL);
=09
=09info.sig =3D SIGUSR1;
=09
//=09info.mask =3D F_ATTR_MTIME | F_ATTR_ATIME | F_ATTR_CTIME;
//=09info.mask =3D F_ATTR_UID | F_ATTR_GID;
//=09info.mask =3D F_ATTR_MODE;
=09info.mask =3D F_MKDIR | F_RMDIR | F_CREATE | F_RENAME;
//=09info.mask =3D F_ATTR_ATIME;
//=09info.mask =3D F_UNLINK;
=09
=09err =3D fcntl(fh,F_SET_SIGVFS,&info);
=09if (err) {
=09=09perror("fcntl");
=09=09exit(1);
=09}=09
=09do sleep(~0);
=09while (!stop);
=09printf("exiting\n");
//=09err =3D fcntl(fh,F_CLR_SIGVFS,NULL);
//=09close(fh);=09
=09exit(0);
}

--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD
Content-Type: application/x-gzip;
name="sigvfs-patch-118.gz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="sigvfs-patch-118.gz"

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
B4auTSF9wk8nDu9quTRlA5x07bbssOqC7Zmh27T3+93kBl/t0zZwyf5vQy0xh0HRHLbOzVuH3h22
M2XDvnwPI+lSfGuJBWXY3Hu6mnzU9Baly5wjqz6O7NakiB8Vol6OWKnnaKoOE8UGDM/8Ry0ivkUF
LLnICvfQx6BKJaB9E0doRsmLHlwLpuTShhWT26cgiMSIhVPjF+TrCy746+lZnuETnHc5/ml8rDHH
5jyKTcd5xLLlMbqzvVt4sCPcOv8BbuwIK58Ibn1cm2XhiqJPGuvqjbYqKPzFwojAMbBGCaLDzIAj
PHpc2RY/rvgm+4nr0VQIeTV9eTLW9I3h68mJVtW//16vbYA+KlB7E3Q1+deYYfubMK54GXiwCTxf
AzubwOM1sFvLSyDjKIN6uXky32FAPwfgYR4f5MbV0S9lbuVAnDJLgF4AYJ0gAXldcLopAXlFyIpL
Qg5Yls1bqeTaQt2ublzl0+UHt4+/FR5GhZciQxKwN2JCCngmGqRIm3Fgs5dfMisfAfa7w1YvEwFk
U5++1Es9iarWr1QYk/Pz69now9lY6wM5zcR148jEI1I18vfKJqWdJk3vQlp1y64KyK4KOSu6u5hH
fvCoAkb+GrfkYje5Qi0MJ9ef226Jt+xkdqfZOzGIcNdjIjUZKibD5W+xj3S4weHyQSmpx4EId2W3
ghXa4bfF9jFQqFdlss1IPFVEYFJ7KdR2KK06TBHCGGHGDR1xBAtvMrAHE/OT32IRCwLR06YG0r+d
9dV2SoG2ykhoc882A7x3DTMQptIXYbiumeWNGi0ajdMP1Vzpy2S7320lppO795HyyuBt+MtCT7YB
yTNFetiROSpP5n5u/nWiF+fW1/c9L76ek3szJ3dRxN0lnp8mj4VO8tbXerglnn2riW9HCm8ZNXgC
vTPyBLkLqufefSh97UHeXqFTLdFGbwVEPvXD4Or4akItidhBu33wgyWdaOyfxfcSbc/+bCz4uu6/
ITLomiMqAAA=

--Boundary-=_nWlrBbmQBhCDarzOwKkYHIDdqSCD--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html