From: mwilck@arcor.de Date: Thu, 18 Jul 2013 18:48:59 +0000 (+0200) Subject: DDF: increase seq number in ddf_set_updates_pending X-Git-Tag: mdadm-3.3-rc2~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=35c3606df71e50859072e248489f2469f3c8edd6;p=thirdparty%2Fmdadm.git 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 --- diff --git a/super-ddf.c b/super-ddf.c index a3799b81..e5007b94 100644 --- a/super-ddf.c +++ b/super-ddf.c @@ -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