We need to disable the cleaner a little earlier or it can run after we
have waited for it to finish.
So create a new flag.
Signed-off-by: NeilBrown <neilb@suse.de>
*
*/
if (!fs->cleaner.active &&
- !test_bit(FinalCheckpoint, &fs->fsstate)) {
+ !test_bit(CleanerDisabled, &fs->fsstate)) {
/* choose to clean when the fraction of all space that is clean
* is below the faction of free space that is not clean.
* i.e. if T is total space, C is clean space, F is free space,
#define CleanerRunning 1
#define CleanerNeeded 2
#define FinalCheckpoint 3
+#define CleanerDisabled 4
struct work_struct done_work; /* used for handling
* refile after write completes */
* cleaner. Maybe we should just release all tc->cleaning
* blocks instead.
*/
+ set_bit(CleanerDisabled, &fs->fsstate);
+
wait_event(fs->async_complete,
list_empty(&fs->pending_orphans) &&
fs->cleaner.active == 0);