diff options
author | Mark Brown <broonie@linaro.org> | 2013-08-14 11:22:09 +0100 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-08-14 11:22:09 +0100 |
commit | 3c729b4344456ebd520636563c854090e3dec611 (patch) | |
tree | 6caae9f4d4c9f9ae2e033d64486649c6f603a209 /drivers/block/drbd/drbd_actlog.c | |
parent | 90438c4bf987a653ad8679a4fa25a909f0c642b5 (diff) | |
parent | d4e4ab86bcba5a72779c43dc1459f71fea3d89c8 (diff) | |
download | linux-stable-3c729b4344456ebd520636563c854090e3dec611.tar.gz linux-stable-3c729b4344456ebd520636563c854090e3dec611.tar.bz2 linux-stable-3c729b4344456ebd520636563c854090e3dec611.zip |
Merge tag 'v3.11-rc5' into spi-s3c64xx
Linux 3.11-rc5
Diffstat (limited to 'drivers/block/drbd/drbd_actlog.c')
-rw-r--r-- | drivers/block/drbd/drbd_actlog.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/block/drbd/drbd_actlog.c b/drivers/block/drbd/drbd_actlog.c index 6608076dc39e..28c73ca320a8 100644 --- a/drivers/block/drbd/drbd_actlog.c +++ b/drivers/block/drbd/drbd_actlog.c @@ -659,6 +659,27 @@ void drbd_al_shrink(struct drbd_conf *mdev) wake_up(&mdev->al_wait); } +int drbd_initialize_al(struct drbd_conf *mdev, void *buffer) +{ + struct al_transaction_on_disk *al = buffer; + struct drbd_md *md = &mdev->ldev->md; + sector_t al_base = md->md_offset + md->al_offset; + int al_size_4k = md->al_stripes * md->al_stripe_size_4k; + int i; + + memset(al, 0, 4096); + al->magic = cpu_to_be32(DRBD_AL_MAGIC); + al->transaction_type = cpu_to_be16(AL_TR_INITIALIZED); + al->crc32c = cpu_to_be32(crc32c(0, al, 4096)); + + for (i = 0; i < al_size_4k; i++) { + int err = drbd_md_sync_page_io(mdev, mdev->ldev, al_base + i * 8, WRITE); + if (err) + return err; + } + return 0; +} + static int w_update_odbm(struct drbd_work *w, int unused) { struct update_odbm_work *udw = container_of(w, struct update_odbm_work, w); |