mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-13 17:28:56 +00:00
drbd: moved md_io into mdev
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
This commit is contained in:
parent
2b4dd36fba
commit
cc94c65015
@ -71,12 +71,10 @@ static int _drbd_md_sync_page_io(struct drbd_conf *mdev,
|
||||
int rw, int size)
|
||||
{
|
||||
struct bio *bio;
|
||||
struct drbd_md_io md_io;
|
||||
int ok;
|
||||
|
||||
md_io.mdev = mdev;
|
||||
init_completion(&md_io.event);
|
||||
md_io.error = 0;
|
||||
init_completion(&mdev->md_io.event);
|
||||
mdev->md_io.error = 0;
|
||||
|
||||
if ((rw & WRITE) && !test_bit(MD_NO_FUA, &mdev->flags))
|
||||
rw |= REQ_FUA | REQ_FLUSH;
|
||||
@ -88,7 +86,7 @@ static int _drbd_md_sync_page_io(struct drbd_conf *mdev,
|
||||
ok = (bio_add_page(bio, page, size, 0) == size);
|
||||
if (!ok)
|
||||
goto out;
|
||||
bio->bi_private = &md_io;
|
||||
bio->bi_private = &mdev->md_io;
|
||||
bio->bi_end_io = drbd_md_io_complete;
|
||||
bio->bi_rw = rw;
|
||||
|
||||
@ -96,8 +94,8 @@ static int _drbd_md_sync_page_io(struct drbd_conf *mdev,
|
||||
bio_endio(bio, -EIO);
|
||||
else
|
||||
submit_bio(rw, bio);
|
||||
wait_for_completion(&md_io.event);
|
||||
ok = bio_flagged(bio, BIO_UPTODATE) && md_io.error == 0;
|
||||
wait_for_completion(&mdev->md_io.event);
|
||||
ok = bio_flagged(bio, BIO_UPTODATE) && mdev->md_io.error == 0;
|
||||
|
||||
out:
|
||||
bio_put(bio);
|
||||
|
@ -938,7 +938,6 @@ struct drbd_backing_dev {
|
||||
};
|
||||
|
||||
struct drbd_md_io {
|
||||
struct drbd_conf *mdev;
|
||||
struct completion event;
|
||||
int error;
|
||||
};
|
||||
@ -1095,7 +1094,8 @@ struct drbd_conf {
|
||||
wait_queue_head_t ee_wait;
|
||||
struct page *md_io_page; /* one page buffer for md_io */
|
||||
struct page *md_io_tmpp; /* for logical_block_size != 512 */
|
||||
struct mutex md_io_mutex; /* protects the md_io_buffer */
|
||||
struct drbd_md_io md_io;
|
||||
struct mutex md_io_mutex; /* protects the md_io, md_io_page and md_io_tmpp */
|
||||
spinlock_t al_lock;
|
||||
wait_queue_head_t al_wait;
|
||||
struct lru_cache *act_log; /* activity log */
|
||||
|
@ -70,8 +70,11 @@ rwlock_t global_state_lock;
|
||||
void drbd_md_io_complete(struct bio *bio, int error)
|
||||
{
|
||||
struct drbd_md_io *md_io;
|
||||
struct drbd_conf *mdev;
|
||||
|
||||
md_io = (struct drbd_md_io *)bio->bi_private;
|
||||
mdev = container_of(md_io, struct drbd_conf, md_io);
|
||||
|
||||
md_io->error = error;
|
||||
|
||||
complete(&md_io->event);
|
||||
|
Loading…
x
Reference in New Issue
Block a user