commit 273d7762233d65e0f34028cc2f0e03a3ac73f170
Author: Yiannis Pericleous <[EMAIL PROTECTED]>
Date:   Wed Mar 14 18:19:22 2007 -0400

    separated asynchronous threads from sioq, so they don't enter the workqueue
    
    sioa is now responsible for running asynchronous threads

diff --git a/fs/unionfs/sioq.c b/fs/unionfs/sioq.c
index 3a7e2a4..a2cc293 100644
--- a/fs/unionfs/sioq.c
+++ b/fs/unionfs/sioq.c
@@ -46,7 +46,7 @@ void stop_sioq(void)
                destroy_workqueue(superio_workqueue);
 }
 
-void __run_sioq(work_func_t func, struct sioq_args *args, int async)
+void run_sioq(work_func_t func, struct sioq_args *args)
 {
        INIT_WORK(&args->work, func);
 
@@ -55,8 +55,7 @@ void __run_sioq(work_func_t func, struct sioq_args *args, int 
async)
                /* TODO: do accounting if needed */
                schedule();
        }
-       if (!async)
-               wait_for_completion(&args->comp);
+       wait_for_completion(&args->comp);
 }
 
 int __run_sioa(void *args)
diff --git a/fs/unionfs/sioq.h b/fs/unionfs/sioq.h
index ec8d760..e9a4829 100644
--- a/fs/unionfs/sioq.h
+++ b/fs/unionfs/sioq.h
@@ -52,6 +52,17 @@ struct sioq_args {
                struct mknod_args mknod;
                struct symlink_args symlink;
                struct unlink_args unlink;
+       };
+};
+
+struct sioa_args {
+       struct completion comp;
+       struct task_struct *process;
+       signed long timeout;
+       void (*work) (void*);
+       int (*done) (void*);
+
+       union {
                struct reclaim_args reclaim;
        };
 };
@@ -85,7 +96,8 @@ extern void __unionfs_mkdir(struct work_struct *work);
 extern void __unionfs_mknod(struct work_struct *work);
 extern void __unionfs_symlink(struct work_struct *work);
 extern void __unionfs_unlink(struct work_struct *work);
-extern void __unionfs_reclaim(struct work_struct *work);
+extern void __unionfs_reclaim_w(void *args);
+extern int __unionfs_reclaim_d(void *args);
 
 #endif /* _SIOQ_H */
 
diff --git a/fs/unionfs/union.h b/fs/unionfs/union.h
index 0c7387e..78cdb22 100644
--- a/fs/unionfs/union.h
+++ b/fs/unionfs/union.h
@@ -122,7 +122,7 @@ struct odf_sb_info {
        struct odf_dentry_info *odi_sb;
        struct odf_dentry_info *odi_rc;
        struct odf_dentry_info *odi_ic;
-       struct sioq_args *sioq;
+       struct sioa_args *sioa;
 };
 
 /* unionfs inode data in memory */
_______________________________________________
unionfs-cvs mailing list: http://unionfs.filesystems.org/
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs-cvs

Reply via email to