History

bdi: Provide bdi_register_va() and bdi_alloc()

Add function that registers bdi and takes va_list instead of variable number of arguments. Add bdi_alloc() as simple wrapper for NUMA-unaware users allocating BDI.

Jan Kara committed 9 years ago

Commit baf7a611 parent 2bc19cd2 files · +21 −5Browse files

Unified · Split

2 files
  1. include/linux/backing-dev.h +6 −0
  2. mm/backing-dev.c +15 −5
include/linux/backing-dev.h+6−0
@@ -30,6 +30,8 @@ void bdi_put(struct backing_dev_info *bdi); · 29 unmodified lines
3030 __printf(3, 4)
3131 int bdi_register(struct backing_dev_info *bdi, struct device *parent,
3232 const char *fmt, ...);
33+int bdi_register_va(struct backing_dev_info *bdi, struct device *parent,
34+ const char *fmt, va_list args);
3335 int bdi_register_dev(struct backing_dev_info *bdi, dev_t dev);
3436 int bdi_register_owner(struct backing_dev_info *bdi, struct device *owner);
3537 void bdi_unregister(struct backing_dev_info *bdi);
@@ -37,6 +39,10 @@ void bdi_unregister(struct backing_dev_info *bdi); · 1 unmodified line
3739 int __must_check bdi_setup_and_register(struct backing_dev_info *, char *);
3840 void bdi_destroy(struct backing_dev_info *bdi);
3941 struct backing_dev_info *bdi_alloc_node(gfp_t gfp_mask, int node_id);
42+static inline struct backing_dev_info *bdi_alloc(gfp_t gfp_mask)
43+{
44+ return bdi_alloc_node(gfp_mask, NUMA_NO_NODE);
45+}
4046
4147 void wb_start_writeback(struct bdi_writeback *wb, long nr_pages,
4248 bool range_cyclic, enum wb_reason reason);
mm/backing-dev.c+15−5
@@ -856,18 +856,15 @@ struct backing_dev_info *bdi_alloc_node(gfp_t gfp_mask, int node_id) · 855 unmodified lines
856856 return bdi;
857857 }
858858
859−int bdi_register(struct backing_dev_info *bdi, struct device *parent,
860− const char *fmt, ...)
859+int bdi_register_va(struct backing_dev_info *bdi, struct device *parent,
860+ const char *fmt, va_list args)
861861 {
862− va_list args;
863862 struct device *dev;
864863
865864 if (bdi->dev) /* The driver needs to use separate queues per device */
866865 return 0;
867866
868− va_start(args, fmt);
869867 dev = device_create_vargs(bdi_class, parent, MKDEV(0, 0), bdi, fmt, args);
870− va_end(args);
871868 if (IS_ERR(dev))
872869 return PTR_ERR(dev);
873870
@@ -884,6 +881,19 @@ int bdi_register(struct backing_dev_info *bdi, struct device *parent, · 10 unmodified lines
884881 trace_writeback_bdi_register(bdi);
885882 return 0;
886883 }
884+EXPORT_SYMBOL(bdi_register_va);
885+
886+int bdi_register(struct backing_dev_info *bdi, struct device *parent,
887+ const char *fmt, ...)
888+{
889+ va_list args;
890+ int ret;
891+
892+ va_start(args, fmt);
893+ ret = bdi_register_va(bdi, parent, fmt, args);
894+ va_end(args);
895+ return ret;
896+}
887897 EXPORT_SYMBOL(bdi_register);
888898
889899 int bdi_register_dev(struct backing_dev_info *bdi, dev_t dev)