};
 
 struct cfs_psdev_ops {
-       int (*p_open)(unsigned long, void *);
-       int (*p_close)(unsigned long, void *);
        int (*p_read)(struct cfs_psdev_file *, char *, unsigned long);
        int (*p_write)(struct cfs_psdev_file *, char *, unsigned long);
        int (*p_ioctl)(struct cfs_psdev_file *, unsigned long, void __user *);
 
        return err;
 }
 
-static int
-libcfs_psdev_open(struct inode *inode, struct file *file)
-{
-       int    rc = 0;
-
-       if (!inode)
-               return -EINVAL;
-       if (libcfs_psdev_ops.p_open)
-               rc = libcfs_psdev_ops.p_open(0, NULL);
-       else
-               return -EPERM;
-       return rc;
-}
-
-/* called when closing /dev/device */
-static int
-libcfs_psdev_release(struct inode *inode, struct file *file)
-{
-       int    rc = 0;
-
-       if (!inode)
-               return -EINVAL;
-       if (libcfs_psdev_ops.p_close)
-               rc = libcfs_psdev_ops.p_close(0, NULL);
-       else
-               rc = -EPERM;
-       return rc;
-}
-
 static long libcfs_ioctl(struct file *file,
                         unsigned int cmd, unsigned long arg)
 {
 }
 
 static const struct file_operations libcfs_fops = {
+       .owner          = THIS_MODULE,
        .unlocked_ioctl = libcfs_ioctl,
-       .open           = libcfs_psdev_open,
-       .release        = libcfs_psdev_release,
 };
 
 struct miscdevice libcfs_dev = {
 
 
 static struct dentry *lnet_debugfs_root;
 
-/* called when opening /dev/device */
-static int libcfs_psdev_open(unsigned long flags, void *args)
-{
-       try_module_get(THIS_MODULE);
-       return 0;
-}
-
-/* called when closing /dev/device */
-static int libcfs_psdev_release(unsigned long flags, void *args)
-{
-       module_put(THIS_MODULE);
-       return 0;
-}
-
 static DECLARE_RWSEM(ioctl_list_sem);
 static LIST_HEAD(ioctl_list);
 
 }
 
 struct cfs_psdev_ops libcfs_psdev_ops = {
-       libcfs_psdev_open,
-       libcfs_psdev_release,
        NULL,
        NULL,
        libcfs_ioctl