diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/gnu/fs/ext2fs/ext2_vfsops.c | 2 | ||||
-rw-r--r-- | sys/kern/kern_event.c | 9 | ||||
-rw-r--r-- | sys/kern/vfs_mount.c | 4 |
3 files changed, 14 insertions, 1 deletions
diff --git a/sys/gnu/fs/ext2fs/ext2_vfsops.c b/sys/gnu/fs/ext2fs/ext2_vfsops.c index ab70b23..d5ad6f2 100644 --- a/sys/gnu/fs/ext2fs/ext2_vfsops.c +++ b/sys/gnu/fs/ext2fs/ext2_vfsops.c @@ -119,7 +119,7 @@ static int compute_sb_data(struct vnode * devvp, static const char *ext2_opts[] = { "from", "export", "union", "acls", "exec", "atime", "union", "suiddir", "multilabel", "symfollow", "clusterr", - "clusterw", "force" }; + "clusterw", "force", NULL }; /* * VFS Operations. diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c index aa446b6..f7f9f1c 100644 --- a/sys/kern/kern_event.c +++ b/sys/kern/kern_event.c @@ -1059,6 +1059,15 @@ kqueue_expand(struct kqueue *kq, struct filterops *fops, uintptr_t ident, int fd; int mflag = waitok ? M_WAITOK : M_NOWAIT; + /* + * knote locks the KQ and filt_proc calls kqueue_register if _TRACK + * is set. Return early so we don't assert KQ_NOTOWNED in this + * case. We have a knote in the hash, so we have the table. + */ + if ((fops->f_isfd && kq->kq_knlistsize > ident) || + (!fops->f_isfd && kq->kq_knhashmask != 0)) + return 0; + KQ_NOTOWNED(kq); if (fops->f_isfd) { diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c index 82bb767..7106b2c 100644 --- a/sys/kern/vfs_mount.c +++ b/sys/kern/vfs_mount.c @@ -638,6 +638,10 @@ vfs_donmount(struct thread *td, int fsflags, struct uio *fsoptions) fsflags &= ~MNT_ASYNC; else if (strcmp(opt->name, "noatime") == 0) fsflags |= MNT_NOATIME; + else if (strcmp(opt->name, "atime") == 0) { + free(opt->name, M_MOUNT); + opt->name = strdup("nonoatime", M_MOUNT); + } else if (strcmp(opt->name, "noclusterr") == 0) fsflags |= MNT_NOCLUSTERR; else if (strcmp(opt->name, "noclusterw") == 0) |