| 1 |
|
| 2 | |
| 3 | * Copyright (C) 2007 Oracle. All rights reserved.
|
| 4 | * Copyright (C) 2014 Fujitsu. All rights reserved.
|
| 5 |
|
| 6 |
|
| 7 | #ifndef BTRFS_ASYNC_THREAD_H
|
| 8 | #define BTRFS_ASYNC_THREAD_H
|
| 9 |
|
| 10 | #include <linux/compiler_types.h>
|
| 11 | #include <linux/workqueue.h>
|
| 12 | #include <linux/list.h>
|
| 13 |
|
| 14 | struct btrfs_fs_info;
|
| 15 | struct btrfs_workqueue;
|
| 16 | struct btrfs_work;
|
| 17 |
|
| 18 | typedef void (*btrfs_func_t)(struct btrfs_work *arg);
|
| 19 | typedef void (*btrfs_ordered_func_t)(struct btrfs_work *arg, bool);
|
| 20 |
|
| 21 | struct btrfs_work {
|
| 22 | btrfs_func_t func;
|
| 23 | btrfs_ordered_func_t ordered_func;
|
| 24 |
|
| 25 |
|
| 26 | struct work_struct normal_work;
|
| 27 | struct list_head ordered_list;
|
| 28 | struct btrfs_workqueue *wq;
|
| 29 | unsigned long flags;
|
| 30 | };
|
| 31 |
|
| 32 | struct btrfs_workqueue *btrfs_alloc_workqueue(struct btrfs_fs_info *fs_info,
|
| 33 | const char *name,
|
| 34 | unsigned int flags,
|
| 35 | int limit_active,
|
| 36 | int thresh);
|
| 37 | struct btrfs_workqueue *btrfs_alloc_ordered_workqueue(
|
| 38 | struct btrfs_fs_info *fs_info, const char *name,
|
| 39 | unsigned int flags);
|
| 40 | void btrfs_init_work(struct btrfs_work *work, btrfs_func_t func,
|
| 41 | btrfs_ordered_func_t ordered_func);
|
| 42 | void btrfs_queue_work(struct btrfs_workqueue *wq,
|
| 43 | struct btrfs_work *work);
|
| 44 | void btrfs_destroy_workqueue(struct btrfs_workqueue *wq);
|
| 45 | void btrfs_workqueue_set_max(struct btrfs_workqueue *wq, int max);
|
| 46 | struct btrfs_fs_info * __pure btrfs_work_owner(const struct btrfs_work *work);
|
| 47 | struct btrfs_fs_info * __pure btrfs_workqueue_owner(const struct btrfs_workqueue *wq);
|
| 48 | bool btrfs_workqueue_normal_congested(const struct btrfs_workqueue *wq);
|
| 49 | void btrfs_flush_workqueue(struct btrfs_workqueue *wq);
|
| 50 |
|
| 51 | #endif
|