The commit is pushed to "branch-rh7-3.10.0-514.26.1.vz7.35.x-ovz" and will 
appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-514.26.1.vz7.35.5
------>
commit 596e20e4cfc9660a390027c3d5b5d2d9fc61b203
Author: Stanislav Kinsburskiy <skinsbur...@virtuozzo.com>
Date:   Thu Aug 31 17:40:30 2017 +0300

    connector: per-ve helpers intoruduced
    
    This is precursor patch.
    
    Signed-off-by: Stanislav Kinsburskiy <skinsbur...@virtuozzo.com>
    Reviewed-by: Andrey Ryabinin <aryabi...@virtuozzo.com>
---
 drivers/connector/connector.c | 48 +++++++++++++++++++++++++++++--------------
 include/linux/connector.h     |  7 +++++++
 2 files changed, 40 insertions(+), 15 deletions(-)

diff --git a/drivers/connector/connector.c b/drivers/connector/connector.c
index bc2308a..bba667d 100644
--- a/drivers/connector/connector.c
+++ b/drivers/connector/connector.c
@@ -67,14 +67,14 @@ static struct cn_dev *get_cdev(struct ve_struct *ve)
        return &ve->cn->cdev;
 }
 
-int cn_netlink_send(struct cn_msg *msg, u32 __group, gfp_t gfp_mask)
+int cn_netlink_send_ve(struct ve_struct *ve, struct cn_msg *msg, u32 __group, 
gfp_t gfp_mask)
 {
        struct cn_callback_entry *__cbq;
        unsigned int size;
        struct sk_buff *skb;
        struct nlmsghdr *nlh;
        struct cn_msg *data;
-       struct cn_dev *dev = get_cdev(get_ve0());
+       struct cn_dev *dev = get_cdev(ve);
        u32 group = 0;
        int found = 0;
 
@@ -119,6 +119,11 @@ int cn_netlink_send(struct cn_msg *msg, u32 __group, gfp_t 
gfp_mask)
 
        return netlink_broadcast(dev->nls, skb, 0, group, gfp_mask);
 }
+
+int cn_netlink_send(struct cn_msg *msg, u32 __group, gfp_t gfp_mask)
+{
+       return cn_netlink_send_ve(get_ve0(), msg, __group, gfp_mask);
+}
 EXPORT_SYMBOL_GPL(cn_netlink_send);
 
 /*
@@ -183,18 +188,13 @@ static void cn_rx_skb(struct sk_buff *__skb)
        }
 }
 
-/*
- * Callback add routing - adds callback with given ID and name.
- * If there is registered callback with the same ID it will not be added.
- *
- * May sleep.
- */
-int cn_add_callback(struct cb_id *id, const char *name,
-                   void (*callback)(struct cn_msg *,
-                                    struct netlink_skb_parms *))
+int cn_add_callback_ve(struct ve_struct *ve,
+                      struct cb_id *id, const char *name,
+                      void (*callback)(struct cn_msg *,
+                                       struct netlink_skb_parms *))
 {
        int err;
-       struct cn_dev *dev = get_cdev(get_ve0());
+       struct cn_dev *dev = get_cdev(ve);
 
        if (!cn_already_initialized)
                return -EAGAIN;
@@ -205,8 +205,28 @@ int cn_add_callback(struct cb_id *id, const char *name,
 
        return 0;
 }
+
+/*
+ * Callback add routing - adds callback with given ID and name.
+ * If there is registered callback with the same ID it will not be added.
+ *
+ * May sleep.
+ */
+int cn_add_callback(struct cb_id *id, const char *name,
+                   void (*callback)(struct cn_msg *,
+                                    struct netlink_skb_parms *))
+{
+       return cn_add_callback_ve(get_ve0(), id, name, callback);
+}
 EXPORT_SYMBOL_GPL(cn_add_callback);
 
+void cn_del_callback_ve(struct ve_struct *ve, struct cb_id *id)
+{
+       struct cn_dev *dev = get_cdev(ve);
+
+       cn_queue_del_callback(dev->cbdev, id);
+}
+
 /*
  * Callback remove routing - removes callback
  * with given ID.
@@ -217,9 +237,7 @@ EXPORT_SYMBOL_GPL(cn_add_callback);
  */
 void cn_del_callback(struct cb_id *id)
 {
-       struct cn_dev *dev = get_cdev(get_ve0());
-
-       cn_queue_del_callback(dev->cbdev, id);
+       cn_del_callback_ve(get_ve0(), id);
 }
 EXPORT_SYMBOL_GPL(cn_del_callback);
 
diff --git a/include/linux/connector.h b/include/linux/connector.h
index 9e05e28..8b44bf0 100644
--- a/include/linux/connector.h
+++ b/include/linux/connector.h
@@ -76,6 +76,13 @@ struct cn_private {
 
 };
 
+int cn_add_callback_ve(struct ve_struct *ve,
+                      struct cb_id *id, const char *name,
+                      void (*callback)(struct cn_msg *,
+                                       struct netlink_skb_parms *));
+void cn_del_callback_ve(struct ve_struct *ve, struct cb_id *id);
+int cn_netlink_send_ve(struct ve_struct *ve, struct cn_msg *, u32, gfp_t);
+
 int cn_add_callback(struct cb_id *id, const char *name,
                    void (*callback)(struct cn_msg *, struct netlink_skb_parms 
*));
 void cn_del_callback(struct cb_id *);
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to