DDF: increase seq number in ddf_set_updates_pending

Increase seq number only when there's actually a metadata change.
This is better then increasing it at every write.

This also fixes another endianness bug.

Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
mwilck@arcor.de 2013-07-18 20:48:59 +02:00 committed by NeilBrown
parent 57666a41b2
commit 35c3606df7
1 changed files with 9 additions and 3 deletions

View File

@ -464,8 +464,14 @@ static void pr_state(struct ddf_super *ddf, const char *msg)
static void pr_state(const struct ddf_super *ddf, const char *msg) {}
#endif
#define ddf_set_updates_pending(x) \
do { (x)->updates_pending = 1; pr_state(x, __func__); } while (0)
static void _ddf_set_updates_pending(struct ddf_super *ddf, const char *func)
{
ddf->updates_pending = 1;
ddf->active->seq = __cpu_to_be32((__be32_to_cpu(ddf->active->seq)+1));
pr_state(ddf, func);
}
#define ddf_set_updates_pending(x) _ddf_set_updates_pending((x), __func__)
static unsigned int get_pd_index_from_refnum(const struct vcl *vc,
__u32 refnum, unsigned int nmax,
@ -2867,7 +2873,7 @@ static int __write_init_super_ddf(struct supertype *st)
}
memset(null_aligned, 0xff, NULL_CONF_SZ);
seq = ddf->active->seq + 1;
seq = ddf->active->seq;
/* try to write updated metadata,
* if we catch a failure move on to the next disk