Changeset View
Changeset View
Standalone View
Standalone View
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
Context not available. | |||||
} | } | ||||
static int | static int | ||||
zfsfifo_freebsd_kqfilter(ap) | |||||
mav: I am not familiar with this KPI, but this looks like a typo ('p' instead of 'q'). | |||||
Done Inline ActionsYes it is ... now I wonder how trhis compiled! pfg: Yes it is ... now I wonder how trhis compiled!
| |||||
Not Done Inline ActionsMore interesting question is what is the case that did not worked before your patch but works after. I highly suspect that these filters in UFS are just dead code. I suggest you to take a look at fifospecops.vop_kqfilter. If actually reachable, this is a panic. kib: More interesting question is what is the case that did not worked before your patch but works… | |||||
Done Inline Actionsfifofs is rather particular in that most fifo_specops operations are invalid: struct vop_vector fifo_specops = { .vop_default = &default_vnodeops, .vop_advlock = fifo_advlock, .vop_close = fifo_close, .vop_create = VOP_PANIC, .vop_getattr = VOP_EBADF, .vop_ioctl = VOP_PANIC, .vop_kqfilter = VOP_PANIC, .vop_link = VOP_PANIC, .vop_mkdir = VOP_PANIC, .vop_mknod = VOP_PANIC, .vop_open = fifo_open, .vop_pathconf = VOP_PANIC, .vop_print = fifo_print, .vop_read = VOP_PANIC, .vop_readdir = VOP_PANIC, .vop_readlink = VOP_PANIC, .vop_reallocblks = VOP_PANIC, .vop_reclaim = VOP_NULL, .vop_remove = VOP_PANIC, .vop_rename = VOP_PANIC, .vop_rmdir = VOP_PANIC, .vop_setattr = VOP_EBADF, .vop_symlink = VOP_PANIC, .vop_write = VOP_PANIC, }; pfg: fifofs is rather particular in that most fifo_specops operations are invalid:
```
struct… | |||||
struct vop_kqfilter_args *ap; | |||||
{ | |||||
int error; | |||||
error = fifo_specops.vop_kqfilter(ap); | |||||
if (error) | |||||
error = vfs_kqfilter(ap); | |||||
return (error); | |||||
} | |||||
static int | |||||
zfs_freebsd_reclaim(ap) | zfs_freebsd_reclaim(ap) | ||||
struct vop_reclaim_args /* { | struct vop_reclaim_args /* { | ||||
struct vnode *a_vp; | struct vnode *a_vp; | ||||
Context not available. | |||||
.vop_access = zfs_freebsd_access, | .vop_access = zfs_freebsd_access, | ||||
.vop_getattr = zfs_freebsd_getattr, | .vop_getattr = zfs_freebsd_getattr, | ||||
.vop_inactive = zfs_freebsd_inactive, | .vop_inactive = zfs_freebsd_inactive, | ||||
.vop_kqfilter = zfsfifo_freebsd_kqfilter, | |||||
.vop_read = VOP_PANIC, | .vop_read = VOP_PANIC, | ||||
.vop_reclaim = zfs_freebsd_reclaim, | .vop_reclaim = zfs_freebsd_reclaim, | ||||
.vop_setattr = zfs_freebsd_setattr, | .vop_setattr = zfs_freebsd_setattr, | ||||
Context not available. |
I am not familiar with this KPI, but this looks like a typo ('p' instead of 'q').