Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 345965
b: refs/heads/master
c: 85f103d
h: refs/heads/master
i:
  345963: 8385025
v: v3
  • Loading branch information
Lars Ellenberg authored and Philipp Reisner committed Nov 8, 2012
1 parent 42dd2cc commit eec9423
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6038178ebe29e6b5e4d519a5ac56653d156c90f9
refs/heads/master: 85f103d88c8eb91755eb3c103e5ead2c9389e35e
16 changes: 14 additions & 2 deletions trunk/drivers/block/drbd/drbd_actlog.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@
#include "drbd_int.h"
#include "drbd_wrappers.h"


enum al_transaction_types {
AL_TR_UPDATE = 0,
AL_TR_INITIALIZED = 0xffff
};
/* all fields on disc in big endian */
struct __packed al_transaction_on_disk {
/* don't we all like magic */
Expand All @@ -44,7 +49,8 @@ struct __packed al_transaction_on_disk {
__be32 crc32c;

/* type of transaction, special transaction types like:
* purge-all, set-all-idle, set-all-active, ... to-be-defined */
* purge-all, set-all-idle, set-all-active, ... to-be-defined
* see also enum al_transaction_types */
__be16 transaction_type;

/* we currently allow only a few thousand extents,
Expand Down Expand Up @@ -476,6 +482,7 @@ int drbd_al_read_log(struct drbd_conf *mdev, struct drbd_backing_dev *bdev)
int active_extents = 0;
int transactions = 0;
int found_valid = 0;
int found_initialized = 0;
int from = 0;
int to = 0;
u32 from_tnr = 0;
Expand Down Expand Up @@ -504,6 +511,10 @@ int drbd_al_read_log(struct drbd_conf *mdev, struct drbd_backing_dev *bdev)
/* invalid data in that block */
if (rv == 0)
continue;
if (be16_to_cpu(b->transaction_type) == AL_TR_INITIALIZED) {
++found_initialized;
continue;
}

/* IO error */
if (rv == -1) {
Expand Down Expand Up @@ -535,7 +546,8 @@ int drbd_al_read_log(struct drbd_conf *mdev, struct drbd_backing_dev *bdev)
}

if (!found_valid) {
dev_warn(DEV, "No usable activity log found.\n");
if (found_initialized != mx)
dev_warn(DEV, "No usable activity log found.\n");
mutex_unlock(&mdev->md_io_mutex);
return 1;
}
Expand Down

0 comments on commit eec9423

Please sign in to comment.