]> Pileus Git - ~andy/linux/blobdiff - fs/ncpfs/inode.c
Merge branch 'tools' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux...
[~andy/linux] / fs / ncpfs / inode.c
index 60047dbeb38d8254f347f103cb49fa6d547074d9..9b39a5dd413140c6624de8680f07193227a6173d 100644 (file)
@@ -29,6 +29,7 @@
 #include <linux/vfs.h>
 #include <linux/mount.h>
 #include <linux/seq_file.h>
+#include <linux/namei.h>
 
 #include <linux/ncp_fs.h>
 
@@ -316,7 +317,12 @@ static void ncp_stop_tasks(struct ncp_server *server) {
        sk->sk_write_space  = server->write_space;
        release_sock(sk);
        del_timer_sync(&server->timeout_tm);
-       flush_scheduled_work();
+
+       flush_work_sync(&server->rcv.tq);
+       if (sk->sk_socket->type == SOCK_STREAM)
+               flush_work_sync(&server->tx.tq);
+       else
+               flush_work_sync(&server->timeout_tq);
 }
 
 static int  ncp_show_options(struct seq_file *seq, struct vfsmount *mnt)
@@ -717,7 +723,7 @@ static int ncp_fill_super(struct super_block *sb, void *raw_data, int silent)
        sb->s_root = d_alloc_root(root_inode);
         if (!sb->s_root)
                goto out_no_root;
-       sb->s_root->d_op = &ncp_root_dentry_operations;
+       d_set_d_op(sb->s_root, &ncp_root_dentry_operations);
        return 0;
 
 out_no_root: