]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/target/target_core_file.c
target: break up free_device callback
[linux.git] / drivers / target / target_core_file.c
index 73b8f93a5fefbf18dfe06f763ffc07ceaca059a3..50f2355805461755e43aa9d0854d02e85a876e02 100644 (file)
@@ -236,6 +236,11 @@ static void fd_dev_call_rcu(struct rcu_head *p)
 }
 
 static void fd_free_device(struct se_device *dev)
+{
+       call_rcu(&dev->rcu_head, fd_dev_call_rcu);
+}
+
+static void fd_destroy_device(struct se_device *dev)
 {
        struct fd_dev *fd_dev = FD_DEV(dev);
 
@@ -243,7 +248,6 @@ static void fd_free_device(struct se_device *dev)
                filp_close(fd_dev->fd_file, NULL);
                fd_dev->fd_file = NULL;
        }
-       call_rcu(&dev->rcu_head, fd_dev_call_rcu);
 }
 
 static int fd_do_rw(struct se_cmd *cmd, struct file *fd,
@@ -826,6 +830,7 @@ static const struct target_backend_ops fileio_ops = {
        .detach_hba             = fd_detach_hba,
        .alloc_device           = fd_alloc_device,
        .configure_device       = fd_configure_device,
+       .destroy_device         = fd_destroy_device,
        .free_device            = fd_free_device,
        .parse_cdb              = fd_parse_cdb,
        .set_configfs_dev_params = fd_set_configfs_dev_params,