From: Nicolas Dichtel <nicolas.dichtel@6wind.com>
To: lars.ellenberg@linbit.com
Cc: netdev@vger.kernel.org, davem@davemloft.net,
philipp.reisner@linbit.com, drbd-dev@lists.linbit.com,
linux-kernel@vger.kernel.org,
Nicolas Dichtel <nicolas.dichtel@6wind.com>
Subject: [PATCH net-next] block/drbd: use nla_put_u64_64bit()
Date: Tue, 3 May 2016 10:50:35 +0200 [thread overview]
Message-ID: <1462265435-15141-1-git-send-email-nicolas.dichtel@6wind.com> (raw)
In-Reply-To: <20160426121850.GC20950@soda.linbit>
I had to define an intermediate function (nla_magic_put_flag()) because
handlers in genl_magic_struct.h expect a function with three arguments.
Note that this patch is only compile-tested.
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
---
drivers/block/drbd/drbd_nl.c | 29 +++++++++++++++++------------
include/linux/drbd_genl.h | 1 +
include/linux/genl_magic_struct.h | 4 ++++
3 files changed, 22 insertions(+), 12 deletions(-)
diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
index 1fd1dccebb6b..22ec2ede4110 100644
--- a/drivers/block/drbd/drbd_nl.c
+++ b/drivers/block/drbd/drbd_nl.c
@@ -3633,14 +3633,15 @@ static int nla_put_status_info(struct sk_buff *skb, struct drbd_device *device,
goto nla_put_failure;
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_u64(skb, T_ed_uuid, device->ed_uuid) ||
- nla_put_u64(skb, T_capacity, drbd_get_capacity(device->this_bdev)) ||
- nla_put_u64(skb, T_send_cnt, device->send_cnt) ||
- nla_put_u64(skb, T_recv_cnt, device->recv_cnt) ||
- nla_put_u64(skb, T_read_cnt, device->read_cnt) ||
- nla_put_u64(skb, T_writ_cnt, device->writ_cnt) ||
- nla_put_u64(skb, T_al_writ_cnt, device->al_writ_cnt) ||
- nla_put_u64(skb, T_bm_writ_cnt, device->bm_writ_cnt) ||
+ nla_put_u64_64bit(skb, T_ed_uuid, device->ed_uuid, T_pad) ||
+ nla_put_u64_64bit(skb, T_capacity,
+ drbd_get_capacity(device->this_bdev), T_pad) ||
+ nla_put_u64_64bit(skb, T_send_cnt, device->send_cnt, T_pad) ||
+ nla_put_u64_64bit(skb, T_recv_cnt, device->recv_cnt, T_pad) ||
+ nla_put_u64_64bit(skb, T_read_cnt, device->read_cnt, T_pad) ||
+ nla_put_u64_64bit(skb, T_writ_cnt, device->writ_cnt, T_pad) ||
+ nla_put_u64_64bit(skb, T_al_writ_cnt, device->al_writ_cnt, T_pad) ||
+ nla_put_u64_64bit(skb, T_bm_writ_cnt, device->bm_writ_cnt, T_pad) ||
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_rs_pending_cnt, atomic_read(&device->rs_pending_cnt)))
@@ -3657,13 +3658,17 @@ static int nla_put_status_info(struct sk_buff *skb, struct drbd_device *device,
goto nla_put_failure;
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(skb, T_bits_oos, drbd_bm_total_weight(device)))
+ nla_put_u64_64bit(skb, T_bits_total, drbd_bm_bits(device),
+ T_pad) ||
+ nla_put_u64_64bit(skb, T_bits_oos,
+ drbd_bm_total_weight(device), T_pad))
goto nla_put_failure;
if (C_SYNC_SOURCE <= device->state.conn &&
C_PAUSED_SYNC_T >= device->state.conn) {
- if (nla_put_u64(skb, T_bits_rs_total, device->rs_total) ||
- nla_put_u64(skb, T_bits_rs_failed, device->rs_failed))
+ if (nla_put_u64_64bit(skb, T_bits_rs_total,
+ device->rs_total, T_pad) ||
+ nla_put_u64_64bit(skb, T_bits_rs_failed,
+ device->rs_failed, T_pad))
goto nla_put_failure;
}
}
diff --git a/include/linux/drbd_genl.h b/include/linux/drbd_genl.h
index 2d0e5ad5de9d..8d327d8fbbc2 100644
--- a/include/linux/drbd_genl.h
+++ b/include/linux/drbd_genl.h
@@ -227,6 +227,7 @@ GENL_struct(DRBD_NLA_STATE_INFO, 8, state_info,
__u32_field(21, 0, ap_bio_cnt)
__u32_field(22, 0, ap_pending_cnt)
__u32_field(23, 0, rs_pending_cnt)
+ __unspec_field(24, 0, pad)
)
GENL_struct(DRBD_NLA_START_OV_PARMS, 9, start_ov_parms,
diff --git a/include/linux/genl_magic_struct.h b/include/linux/genl_magic_struct.h
index eecd19b37001..fde46be8fc40 100644
--- a/include/linux/genl_magic_struct.h
+++ b/include/linux/genl_magic_struct.h
@@ -61,11 +61,15 @@ extern void CONCAT_(GENL_MAGIC_FAMILY, _genl_unregister)(void);
*/
/* MAGIC helpers {{{2 */
+#define nla_magic_put_flag(skb, attr, val) nla_put_flag(skb, attr)
/* possible field types */
#define __flg_field(attr_nr, attr_flag, name) \
__field(attr_nr, attr_flag, name, NLA_U8, char, \
nla_get_u8, nla_put_u8, false)
+#define __unspec_field(attr_nr, attr_flag, name) \
+ __field(attr_nr, attr_flag, name, NLA_UNSPEC, unsigned char, \
+ nla_get_flag, nla_magic_put_flag, false)
#define __u8_field(attr_nr, attr_flag, name) \
__field(attr_nr, attr_flag, name, NLA_U8, unsigned char, \
nla_get_u8, nla_put_u8, false)
--
2.8.1
next prev parent reply other threads:[~2016-05-03 8:51 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-26 8:06 [PATCH net-next 0/8] netlink: align attributes when needed (patchset #3) Nicolas Dichtel
2016-04-26 8:06 ` [PATCH net-next 1/8] macsec: use nla_put_u64_64bit() Nicolas Dichtel
2016-04-26 8:06 ` [PATCH net-next 2/8] drivers/wireless: " Nicolas Dichtel
2016-04-26 8:06 ` [PATCH net-next 3/8] fs/quota: " Nicolas Dichtel
2016-04-26 11:08 ` Jan Kara
2016-04-26 12:31 ` Nicolas Dichtel
2016-04-26 12:37 ` Jan Kara
2016-04-26 16:24 ` David Miller
2016-04-26 8:06 ` [PATCH net-next 4/8] sock_diag: align nlattr properly when needed Nicolas Dichtel
2016-04-26 8:06 ` [PATCH net-next 5/8] ovs: " Nicolas Dichtel
2016-04-26 8:06 ` [PATCH net-next 6/8] rtnl: " Nicolas Dichtel
2016-04-26 8:06 ` [PATCH net-next 7/8] neigh: " Nicolas Dichtel
2016-04-26 8:06 ` [PATCH net-next 8/8] sched: " Nicolas Dichtel
2016-04-26 11:54 ` [PATCH net-next 0/8] netlink: align attributes when needed (patchset #3) Lars Ellenberg
2016-04-26 12:18 ` [Drbd-dev] " Lars Ellenberg
2016-05-03 8:50 ` Nicolas Dichtel [this message]
2016-05-03 9:28 ` [PATCH net-next] block/drbd: use nla_put_u64_64bit() Nicolas Dichtel
2016-05-03 9:39 ` [PATCH net-next v2] " Nicolas Dichtel
2016-05-03 10:06 ` Lars Ellenberg
2016-05-03 12:07 ` Nicolas Dichtel
2016-05-03 16:05 ` David Miller
2016-05-04 9:05 ` Lars Ellenberg
2016-05-04 12:49 ` Nicolas Dichtel
2016-05-04 12:52 ` [Drbd-dev] " Lars Ellenberg
2016-05-04 14:27 ` Eric Dumazet
2016-05-04 16:50 ` David Miller
2016-05-04 17:13 ` Eric Dumazet
2016-05-04 16:47 ` David Miller
2016-05-03 16:06 ` David Miller
2016-05-09 9:40 ` [PATCH net-next v3] block/drbd: align properly u64 in nl messages Nicolas Dichtel
2016-05-09 13:15 ` Lars Ellenberg
2016-05-10 9:09 ` Nicolas Dichtel
2016-05-10 9:40 ` [Drbd-dev] " Lars Ellenberg
2016-05-10 10:06 ` Nicolas Dichtel
2016-05-10 15:39 ` David Miller
2016-05-10 19:09 ` Lars Ellenberg
2016-05-10 19:26 ` David Miller
2016-04-26 16:25 ` [PATCH net-next 0/8] netlink: align attributes when needed (patchset #3) David Miller
2016-04-26 16:02 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1462265435-15141-1-git-send-email-nicolas.dichtel@6wind.com \
--to=nicolas.dichtel@6wind.com \
--cc=davem@davemloft.net \
--cc=drbd-dev@lists.linbit.com \
--cc=lars.ellenberg@linbit.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=philipp.reisner@linbit.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®