On Mon 10-11-14 16:56:27, Cyril Hrubis wrote: > Hi! > > Verify that when inode has an ignore mask set, it is properly reflected > > when notifying a mountpoint. > > > > Signed-off-by: Jan Kara <j...@suse.cz> > > --- > > runtest/syscalls | 1 + > > testcases/kernel/syscalls/.gitignore | 1 + > > testcases/kernel/syscalls/fanotify/fanotify06.c | 267 + > > utils/ffsb-6.0-rc2/config.h.in | 49 +- > > utils/ffsb-6.0-rc2/configure | 5937 > > +++++++++++------------ > > Looks like changes in generated configure file in ffsb slipped into this > patch accidentally. > > > --- /dev/null > > +++ b/testcases/kernel/syscalls/fanotify/fanotify06.c > > @@ -0,0 +1,267 @@ > > +/* > > + * Copyright (c) 2014 SUSE. All Rights Reserved. > > + * > > + * This program is free software; you can redistribute it and/or modify it > > + * under the terms of version 2 of the GNU General Public License as > > + * published by the Free Software Foundation. > > + * > > + * This program is distributed in the hope that it would be useful, but > > + * WITHOUT ANY WARRANTY; without even the implied warranty of > > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > > + * > > + * Further, this software is distributed without any warranty that it is > > + * free of the rightful claim of any third person regarding infringement > > + * or the like. Any license provided herein, whether implied or > > + * otherwise, applies only to this software file. Patent licenses, if > > + * any, provided herein do not apply to combinations of this program with > > + * other software, or any other product whatsoever. > > + * > > + * You should have received a copy of the GNU General Public License along > > + * with this program; if not, write the Free Software Foundation, Inc., > > + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. > > + * > > + * Started by Jan Kara <j...@suse.cz> > > + * > > + * DESCRIPTION > > + * Check that fanotify properly merges ignore mask of an inode and > > + * mountpoint. > > + */ > > +#include "config.h" > > + > > +#include <stdio.h> > > +#include <sys/stat.h> > > +#include <sys/types.h> > > +#include <sys/fcntl.h> > > +#include <errno.h> > > +#include <string.h> > > +#include <sys/syscall.h> > > +#include "test.h" > > +#include "usctest.h" > > +#include "linux_syscall_numbers.h" > > +#include "fanotify.h" > > +#include "safe_macros.h" > > + > > +char *TCID = "fanotify06"; > > + > > +#if defined(HAVE_SYS_FANOTIFY_H) > > +#include <sys/fanotify.h> > > + > > +#define EVENT_MAX 1024 > > +/* size of the event structure, not counting name */ > > +#define EVENT_SIZE (sizeof (struct fanotify_event_metadata)) > > +/* reasonable guess as to size of 1024 events */ > > +#define EVENT_BUF_LEN (EVENT_MAX * EVENT_SIZE) > > + > > +static void setup(void); > > +static void cleanup(void); > > + > > +unsigned int fanotify_prio[] = { > > + FAN_CLASS_PRE_CONTENT, > > + FAN_CLASS_CONTENT, > > + FAN_CLASS_NOTIF > > +}; > > +#define FANOTIFY_PRIORITIES (sizeof(fanotify_prio) / sizeof(unsigned int)) > > We have ARRAY_SIZE() macro for this purpose. > > > +#define GROUPS_PER_PRIO 3 > > + > > +int TST_TOTAL = GROUPS_PER_PRIO * FANOTIFY_PRIORITIES; > > + > > +#define BUF_SIZE 256 > > +static char fname[BUF_SIZE]; > > +static int fd; > > +static int fd_notify[FANOTIFY_PRIORITIES][GROUPS_PER_PRIO]; > > + > > +static char event_buf[EVENT_BUF_LEN]; > > + > > +static void create_fanotify_groups(void) > > +{ > > + unsigned int p, i; > > + int ret; > > + > > + for (p = 0; p < FANOTIFY_PRIORITIES; p++) { > > + for (i = 0; i < GROUPS_PER_PRIO; i++) { > > + fd_notify[p][i] = fanotify_init(fanotify_prio[p] | > > + FAN_NONBLOCK, > > + O_RDONLY); > > + if (fd_notify[p][i] < 0) { > > + if (errno == ENOSYS) { > > + tst_brkm(TCONF, cleanup, > > + "fanotify is not configured in" > > + " this kernel."); > > + } else { > > + tst_brkm(TBROK | TERRNO, cleanup, > > + "fanotify_init failed"); > > + } > > + } > > + /* Add mount mark for each group */ > > + ret = fanotify_mark(fd_notify[p][i], > > + FAN_MARK_ADD | FAN_MARK_MOUNT, > > + FAN_MODIFY, > > + AT_FDCWD, "."); > > + if (ret < 0) { > > + tst_brkm(TBROK | TERRNO, cleanup, > > + "fanotify_mark(%d, FAN_MARK_ADD | " > > + "FAN_MARK_MOUNT, FAN_MODIFY, AT_FDCWD," > > + " \".\") failed", fd_notify[p][i]); > > I usually use single quotes > inside of C strings to avoid > the need to escape them. > > > Otherwise it looks good to me. OK, I'll send v2 in a moment.
Honza -- Jan Kara <j...@suse.cz> SUSE Labs, CR ------------------------------------------------------------------------------ _______________________________________________ Ltp-list mailing list Ltp-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ltp-list