Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cc94c650 authored by Philipp Reisner's avatar Philipp Reisner
Browse files

drbd: moved md_io into mdev

parent 2b4dd36f
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -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);
+2 −2
Original line number Diff line number Diff line
@@ -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 */
+3 −0
Original line number Diff line number Diff line
@@ -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);