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