btrfs: wake up transaction thread from SYNC_FS ioctl
authorDavid Sterba <dsterba@suse.cz>
Wed, 23 Jul 2014 12:39:35 +0000 (14:39 +0200)
committerChris Mason <clm@fb.com>
Wed, 17 Sep 2014 20:37:42 +0000 (13:37 -0700)
The transaction thread may want to do more work, namely it pokes the
cleaner ktread that will start processing uncleaned subvols.

This can be triggered by user via the 'btrfs fi sync' command, otherwise
there was a delay up to 30 seconds before the cleaner started to clean
old snapshots.

Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <clm@fb.com>
fs/btrfs/ioctl.c

index e5ed222267eeafa4f1846586cc44af4ca595a2dc..4492e017bdb216ae6d58a71e24b8e5d589ec8a97 100644 (file)
@@ -5288,6 +5288,12 @@ long btrfs_ioctl(struct file *file, unsigned int
                if (ret)
                        return ret;
                ret = btrfs_sync_fs(file->f_dentry->d_sb, 1);
+               /*
+                * The transaction thread may want to do more work,
+                * namely it pokes the cleaner ktread that will start
+                * processing uncleaned subvols.
+                */
+               wake_up_process(root->fs_info->transaction_kthread);
                return ret;
        }
        case BTRFS_IOC_START_SYNC: