block/drbd: align properly u64 in nl messages

The attribute 0 is never used in drbd, so let's use it as pad attribute
in netlink messages. This minimizes the patch.

Note that this patch is only compile-tested.

Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Nicolas Dichtel 2016-05-09 11:40:20 +02:00 committed by David S. Miller
parent dc6079d8ab
commit 1dee3f59a8
2 changed files with 22 additions and 13 deletions

View File

@ -3633,14 +3633,15 @@ static int nla_put_status_info(struct sk_buff *skb, struct drbd_device *device,
goto nla_put_failure; goto nla_put_failure;
if (nla_put_u32(skb, T_sib_reason, sib ? sib->sib_reason : SIB_GET_STATUS_REPLY) || if (nla_put_u32(skb, T_sib_reason, sib ? sib->sib_reason : SIB_GET_STATUS_REPLY) ||
nla_put_u32(skb, T_current_state, device->state.i) || nla_put_u32(skb, T_current_state, device->state.i) ||
nla_put_u64(skb, T_ed_uuid, device->ed_uuid) || nla_put_u64_0pad(skb, T_ed_uuid, device->ed_uuid) ||
nla_put_u64(skb, T_capacity, drbd_get_capacity(device->this_bdev)) || nla_put_u64_0pad(skb, T_capacity,
nla_put_u64(skb, T_send_cnt, device->send_cnt) || drbd_get_capacity(device->this_bdev)) ||
nla_put_u64(skb, T_recv_cnt, device->recv_cnt) || nla_put_u64_0pad(skb, T_send_cnt, device->send_cnt) ||
nla_put_u64(skb, T_read_cnt, device->read_cnt) || nla_put_u64_0pad(skb, T_recv_cnt, device->recv_cnt) ||
nla_put_u64(skb, T_writ_cnt, device->writ_cnt) || nla_put_u64_0pad(skb, T_read_cnt, device->read_cnt) ||
nla_put_u64(skb, T_al_writ_cnt, device->al_writ_cnt) || nla_put_u64_0pad(skb, T_writ_cnt, device->writ_cnt) ||
nla_put_u64(skb, T_bm_writ_cnt, device->bm_writ_cnt) || nla_put_u64_0pad(skb, T_al_writ_cnt, device->al_writ_cnt) ||
nla_put_u64_0pad(skb, T_bm_writ_cnt, device->bm_writ_cnt) ||
nla_put_u32(skb, T_ap_bio_cnt, atomic_read(&device->ap_bio_cnt)) || nla_put_u32(skb, T_ap_bio_cnt, atomic_read(&device->ap_bio_cnt)) ||
nla_put_u32(skb, T_ap_pending_cnt, atomic_read(&device->ap_pending_cnt)) || nla_put_u32(skb, T_ap_pending_cnt, atomic_read(&device->ap_pending_cnt)) ||
nla_put_u32(skb, T_rs_pending_cnt, atomic_read(&device->rs_pending_cnt))) nla_put_u32(skb, T_rs_pending_cnt, atomic_read(&device->rs_pending_cnt)))
@ -3657,13 +3658,16 @@ static int nla_put_status_info(struct sk_buff *skb, struct drbd_device *device,
goto nla_put_failure; goto nla_put_failure;
if (nla_put_u32(skb, T_disk_flags, device->ldev->md.flags) || if (nla_put_u32(skb, T_disk_flags, device->ldev->md.flags) ||
nla_put_u64(skb, T_bits_total, drbd_bm_bits(device)) || nla_put_u64_0pad(skb, T_bits_total, drbd_bm_bits(device)) ||
nla_put_u64(skb, T_bits_oos, drbd_bm_total_weight(device))) nla_put_u64_0pad(skb, T_bits_oos,
drbd_bm_total_weight(device)))
goto nla_put_failure; goto nla_put_failure;
if (C_SYNC_SOURCE <= device->state.conn && if (C_SYNC_SOURCE <= device->state.conn &&
C_PAUSED_SYNC_T >= device->state.conn) { C_PAUSED_SYNC_T >= device->state.conn) {
if (nla_put_u64(skb, T_bits_rs_total, device->rs_total) || if (nla_put_u64_0pad(skb, T_bits_rs_total,
nla_put_u64(skb, T_bits_rs_failed, device->rs_failed)) device->rs_total) ||
nla_put_u64_0pad(skb, T_bits_rs_failed,
device->rs_failed))
goto nla_put_failure; goto nla_put_failure;
} }
} }

View File

@ -62,6 +62,11 @@ extern void CONCAT_(GENL_MAGIC_FAMILY, _genl_unregister)(void);
/* MAGIC helpers {{{2 */ /* MAGIC helpers {{{2 */
static inline int nla_put_u64_0pad(struct sk_buff *skb, int attrtype, u64 value)
{
return nla_put_64bit(skb, attrtype, sizeof(u64), &value, 0);
}
/* possible field types */ /* possible field types */
#define __flg_field(attr_nr, attr_flag, name) \ #define __flg_field(attr_nr, attr_flag, name) \
__field(attr_nr, attr_flag, name, NLA_U8, char, \ __field(attr_nr, attr_flag, name, NLA_U8, char, \
@ -80,7 +85,7 @@ extern void CONCAT_(GENL_MAGIC_FAMILY, _genl_unregister)(void);
nla_get_u32, nla_put_u32, true) nla_get_u32, nla_put_u32, true)
#define __u64_field(attr_nr, attr_flag, name) \ #define __u64_field(attr_nr, attr_flag, name) \
__field(attr_nr, attr_flag, name, NLA_U64, __u64, \ __field(attr_nr, attr_flag, name, NLA_U64, __u64, \
nla_get_u64, nla_put_u64, false) nla_get_u64, nla_put_u64_0pad, false)
#define __str_field(attr_nr, attr_flag, name, maxlen) \ #define __str_field(attr_nr, attr_flag, name, maxlen) \
__array(attr_nr, attr_flag, name, NLA_NUL_STRING, char, maxlen, \ __array(attr_nr, attr_flag, name, NLA_NUL_STRING, char, maxlen, \
nla_strlcpy, nla_put, false) nla_strlcpy, nla_put, false)