projects
/
deliverable
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Subject: [PATCH] md:change resync_mismatches to atomic64_t to avoid races
[deliverable/linux.git]
/
drivers
/
md
/
md.h
diff --git
a/drivers/md/md.h
b/drivers/md/md.h
index 7b4a3c318cae437ecb2041c33b2bdcee2c66bf15..af443ab868db910f2db2d35d53ffacca701f1e60 100644
(file)
--- a/
drivers/md/md.h
+++ b/
drivers/md/md.h
@@
-266,9
+266,6
@@
struct mddev {
int new_chunk_sectors;
int reshape_backwards;
int new_chunk_sectors;
int reshape_backwards;
- atomic_t plug_cnt; /* If device is expecting
- * more bios soon.
- */
struct md_thread *thread; /* management thread */
struct md_thread *sync_thread; /* doing resync or reconstruct */
sector_t curr_resync; /* last block scheduled */
struct md_thread *thread; /* management thread */
struct md_thread *sync_thread; /* doing resync or reconstruct */
sector_t curr_resync; /* last block scheduled */
@@
-285,7
+282,7
@@
struct mddev {
sector_t resync_max_sectors; /* may be set by personality */
sector_t resync_max_sectors; /* may be set by personality */
-
sector_t
resync_mismatches; /* count of sectors where
+
atomic64_t
resync_mismatches; /* count of sectors where
* parity/replica mismatch found
*/
* parity/replica mismatch found
*/
@@
-543,12
+540,13
@@
static inline void sysfs_unlink_rdev(struct mddev *mddev, struct md_rdev *rdev)
list_for_each_entry_rcu(rdev, &((mddev)->disks), same_set)
struct md_thread {
list_for_each_entry_rcu(rdev, &((mddev)->disks), same_set)
struct md_thread {
- void (*run) (struct md
dev *mddev
);
+ void (*run) (struct md
_thread *thread
);
struct mddev *mddev;
wait_queue_head_t wqueue;
unsigned long flags;
struct task_struct *tsk;
unsigned long timeout;
struct mddev *mddev;
wait_queue_head_t wqueue;
unsigned long flags;
struct task_struct *tsk;
unsigned long timeout;
+ void *private;
};
#define THREAD_WAKEUP 0
};
#define THREAD_WAKEUP 0
@@
-587,7
+585,7
@@
static inline void safe_put_page(struct page *p)
extern int register_md_personality(struct md_personality *p);
extern int unregister_md_personality(struct md_personality *p);
extern struct md_thread *md_register_thread(
extern int register_md_personality(struct md_personality *p);
extern int unregister_md_personality(struct md_personality *p);
extern struct md_thread *md_register_thread(
- void (*run)(struct md
dev *mddev
),
+ void (*run)(struct md
_thread *thread
),
struct mddev *mddev,
const char *name);
extern void md_unregister_thread(struct md_thread **threadp);
struct mddev *mddev,
const char *name);
extern void md_unregister_thread(struct md_thread **threadp);
@@
-606,7
+604,7
@@
extern void md_super_write(struct mddev *mddev, struct md_rdev *rdev,
extern void md_super_wait(struct mddev *mddev);
extern int sync_page_io(struct md_rdev *rdev, sector_t sector, int size,
struct page *page, int rw, bool metadata_op);
extern void md_super_wait(struct mddev *mddev);
extern int sync_page_io(struct md_rdev *rdev, sector_t sector, int size,
struct page *page, int rw, bool metadata_op);
-extern void md_do_sync(struct md
dev *mddev
);
+extern void md_do_sync(struct md
_thread *thread
);
extern void md_new_event(struct mddev *mddev);
extern int md_allow_write(struct mddev *mddev);
extern void md_wait_for_blocked_rdev(struct md_rdev *rdev, struct mddev *mddev);
extern void md_new_event(struct mddev *mddev);
extern int md_allow_write(struct mddev *mddev);
extern void md_wait_for_blocked_rdev(struct md_rdev *rdev, struct mddev *mddev);
@@
-630,6
+628,12
@@
extern struct bio *bio_clone_mddev(struct bio *bio, gfp_t gfp_mask,
struct mddev *mddev);
extern struct bio *bio_alloc_mddev(gfp_t gfp_mask, int nr_iovecs,
struct mddev *mddev);
struct mddev *mddev);
extern struct bio *bio_alloc_mddev(gfp_t gfp_mask, int nr_iovecs,
struct mddev *mddev);
-extern int mddev_check_plugged(struct mddev *mddev);
extern void md_trim_bio(struct bio *bio, int offset, int size);
extern void md_trim_bio(struct bio *bio, int offset, int size);
+
+extern void md_unplug(struct blk_plug_cb *cb, bool from_schedule);
+static inline int mddev_check_plugged(struct mddev *mddev)
+{
+ return !!blk_check_plugged(md_unplug, mddev,
+ sizeof(struct blk_plug_cb));
+}
#endif /* _MD_MD_H */
#endif /* _MD_MD_H */
This page took
0.028514 seconds
and
5
git commands to generate.