Message ID | 20180518130413.16997-25-roman.penyaev@profitbricks.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Roman, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on linus/master] [also build test WARNING on v4.17-rc5 next-20180517] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Roman-Pen/InfiniBand-Transport-IBTRS-and-Network-Block-Device-IBNBD/20180520-222445 config: sh-allmodconfig (attached as .config) compiler: sh4-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=sh All warnings (new ones prefixed by >>): In file included from include/linux/printk.h:7:0, from include/linux/kernel.h:14, from include/linux/list.h:9, from include/linux/module.h:9, from drivers/block/ibnbd/ibnbd-clt-sysfs.c:37: drivers/block/ibnbd/ibnbd-clt-sysfs.c: In function 'ibnbd_clt_parse_map_options': include/linux/kern_levels.h:5:18: warning: format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'size_t {aka unsigned int}' [-Wformat=] #define KERN_SOH "\001" /* ASCII Start Of Header */ ^ include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH' #define KERN_ERR KERN_SOH "3" /* error conditions */ ^~~~~~~~ include/linux/printk.h:304:9: note: in expansion of macro 'KERN_ERR' printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~ >> drivers/block/ibnbd/ibnbd-clt-sysfs.c:139:5: note: in expansion of macro 'pr_err' pr_err("map_device: too many (> %lu) paths " ^~~~~~ drivers/block/ibnbd/ibnbd-clt-sysfs.c: In function 'ibnbd_clt_map_device_store': >> drivers/block/ibnbd/ibnbd-clt-sysfs.c:613:1: warning: the frame size of 1616 bytes is larger than 1024 bytes [-Wframe-larger-than=] } ^ vim +/pr_err +139 drivers/block/ibnbd/ibnbd-clt-sysfs.c ea541da7d Roman Pen 2018-05-18 88 ea541da7d Roman Pen 2018-05-18 89 static int ibnbd_clt_parse_map_options(const char *buf, ea541da7d Roman Pen 2018-05-18 90 char *sessname, ea541da7d Roman Pen 2018-05-18 91 struct ibtrs_addr *paths, ea541da7d Roman Pen 2018-05-18 92 size_t *path_cnt, ea541da7d Roman Pen 2018-05-18 93 size_t max_path_cnt, ea541da7d Roman Pen 2018-05-18 94 char *pathname, ea541da7d Roman Pen 2018-05-18 95 enum ibnbd_access_mode *access_mode, ea541da7d Roman Pen 2018-05-18 96 enum ibnbd_io_mode *io_mode) ea541da7d Roman Pen 2018-05-18 97 { ea541da7d Roman Pen 2018-05-18 98 char *options, *sep_opt; ea541da7d Roman Pen 2018-05-18 99 char *p; ea541da7d Roman Pen 2018-05-18 100 substring_t args[MAX_OPT_ARGS]; ea541da7d Roman Pen 2018-05-18 101 int opt_mask = 0; ea541da7d Roman Pen 2018-05-18 102 int token; ea541da7d Roman Pen 2018-05-18 103 int ret = -EINVAL; ea541da7d Roman Pen 2018-05-18 104 int i; ea541da7d Roman Pen 2018-05-18 105 int p_cnt = 0; ea541da7d Roman Pen 2018-05-18 106 ea541da7d Roman Pen 2018-05-18 107 options = kstrdup(buf, GFP_KERNEL); ea541da7d Roman Pen 2018-05-18 108 if (!options) ea541da7d Roman Pen 2018-05-18 109 return -ENOMEM; ea541da7d Roman Pen 2018-05-18 110 ea541da7d Roman Pen 2018-05-18 111 sep_opt = strstrip(options); ea541da7d Roman Pen 2018-05-18 112 strip(sep_opt); ea541da7d Roman Pen 2018-05-18 113 while ((p = strsep(&sep_opt, " ")) != NULL) { ea541da7d Roman Pen 2018-05-18 114 if (!*p) ea541da7d Roman Pen 2018-05-18 115 continue; ea541da7d Roman Pen 2018-05-18 116 ea541da7d Roman Pen 2018-05-18 117 token = match_token(p, ibnbd_opt_tokens, args); ea541da7d Roman Pen 2018-05-18 118 opt_mask |= token; ea541da7d Roman Pen 2018-05-18 119 ea541da7d Roman Pen 2018-05-18 120 switch (token) { ea541da7d Roman Pen 2018-05-18 121 case IBNBD_OPT_SESSNAME: ea541da7d Roman Pen 2018-05-18 122 p = match_strdup(args); ea541da7d Roman Pen 2018-05-18 123 if (!p) { ea541da7d Roman Pen 2018-05-18 124 ret = -ENOMEM; ea541da7d Roman Pen 2018-05-18 125 goto out; ea541da7d Roman Pen 2018-05-18 126 } ea541da7d Roman Pen 2018-05-18 127 if (strlen(p) > NAME_MAX) { ea541da7d Roman Pen 2018-05-18 128 pr_err("map_device: sessname too long\n"); ea541da7d Roman Pen 2018-05-18 129 ret = -EINVAL; ea541da7d Roman Pen 2018-05-18 130 kfree(p); ea541da7d Roman Pen 2018-05-18 131 goto out; ea541da7d Roman Pen 2018-05-18 132 } ea541da7d Roman Pen 2018-05-18 133 strlcpy(sessname, p, NAME_MAX); ea541da7d Roman Pen 2018-05-18 134 kfree(p); ea541da7d Roman Pen 2018-05-18 135 break; ea541da7d Roman Pen 2018-05-18 136 ea541da7d Roman Pen 2018-05-18 137 case IBNBD_OPT_PATH: ea541da7d Roman Pen 2018-05-18 138 if (p_cnt >= max_path_cnt) { ea541da7d Roman Pen 2018-05-18 @139 pr_err("map_device: too many (> %lu) paths " ea541da7d Roman Pen 2018-05-18 140 "provided\n", max_path_cnt); ea541da7d Roman Pen 2018-05-18 141 ret = -ENOMEM; ea541da7d Roman Pen 2018-05-18 142 goto out; ea541da7d Roman Pen 2018-05-18 143 } ea541da7d Roman Pen 2018-05-18 144 p = match_strdup(args); ea541da7d Roman Pen 2018-05-18 145 if (!p) { ea541da7d Roman Pen 2018-05-18 146 ret = -ENOMEM; ea541da7d Roman Pen 2018-05-18 147 goto out; ea541da7d Roman Pen 2018-05-18 148 } ea541da7d Roman Pen 2018-05-18 149 ea541da7d Roman Pen 2018-05-18 150 ret = ibtrs_addr_to_sockaddr(p, strlen(p), IBTRS_PORT, ea541da7d Roman Pen 2018-05-18 151 &paths[p_cnt]); ea541da7d Roman Pen 2018-05-18 152 if (ret) { ea541da7d Roman Pen 2018-05-18 153 pr_err("Can't parse path %s: %d\n", p, ret); ea541da7d Roman Pen 2018-05-18 154 kfree(p); ea541da7d Roman Pen 2018-05-18 155 goto out; ea541da7d Roman Pen 2018-05-18 156 } ea541da7d Roman Pen 2018-05-18 157 ea541da7d Roman Pen 2018-05-18 158 p_cnt++; ea541da7d Roman Pen 2018-05-18 159 ea541da7d Roman Pen 2018-05-18 160 kfree(p); ea541da7d Roman Pen 2018-05-18 161 break; ea541da7d Roman Pen 2018-05-18 162 ea541da7d Roman Pen 2018-05-18 163 case IBNBD_OPT_DEV_PATH: ea541da7d Roman Pen 2018-05-18 164 p = match_strdup(args); ea541da7d Roman Pen 2018-05-18 165 if (!p) { ea541da7d Roman Pen 2018-05-18 166 ret = -ENOMEM; ea541da7d Roman Pen 2018-05-18 167 goto out; ea541da7d Roman Pen 2018-05-18 168 } ea541da7d Roman Pen 2018-05-18 169 if (strlen(p) > NAME_MAX) { ea541da7d Roman Pen 2018-05-18 170 pr_err("map_device: Device path too long\n"); ea541da7d Roman Pen 2018-05-18 171 ret = -EINVAL; ea541da7d Roman Pen 2018-05-18 172 kfree(p); ea541da7d Roman Pen 2018-05-18 173 goto out; ea541da7d Roman Pen 2018-05-18 174 } ea541da7d Roman Pen 2018-05-18 175 strlcpy(pathname, p, NAME_MAX); ea541da7d Roman Pen 2018-05-18 176 kfree(p); ea541da7d Roman Pen 2018-05-18 177 break; ea541da7d Roman Pen 2018-05-18 178 ea541da7d Roman Pen 2018-05-18 179 case IBNBD_OPT_ACCESS_MODE: ea541da7d Roman Pen 2018-05-18 180 p = match_strdup(args); ea541da7d Roman Pen 2018-05-18 181 if (!p) { ea541da7d Roman Pen 2018-05-18 182 ret = -ENOMEM; ea541da7d Roman Pen 2018-05-18 183 goto out; ea541da7d Roman Pen 2018-05-18 184 } ea541da7d Roman Pen 2018-05-18 185 ea541da7d Roman Pen 2018-05-18 186 if (!strcmp(p, "ro")) { ea541da7d Roman Pen 2018-05-18 187 *access_mode = IBNBD_ACCESS_RO; ea541da7d Roman Pen 2018-05-18 188 } else if (!strcmp(p, "rw")) { ea541da7d Roman Pen 2018-05-18 189 *access_mode = IBNBD_ACCESS_RW; ea541da7d Roman Pen 2018-05-18 190 } else if (!strcmp(p, "migration")) { ea541da7d Roman Pen 2018-05-18 191 *access_mode = IBNBD_ACCESS_MIGRATION; ea541da7d Roman Pen 2018-05-18 192 } else { ea541da7d Roman Pen 2018-05-18 193 pr_err("map_device: Invalid access_mode:" ea541da7d Roman Pen 2018-05-18 194 " '%s'\n", p); ea541da7d Roman Pen 2018-05-18 195 ret = -EINVAL; ea541da7d Roman Pen 2018-05-18 196 kfree(p); ea541da7d Roman Pen 2018-05-18 197 goto out; ea541da7d Roman Pen 2018-05-18 198 } ea541da7d Roman Pen 2018-05-18 199 ea541da7d Roman Pen 2018-05-18 200 kfree(p); ea541da7d Roman Pen 2018-05-18 201 break; ea541da7d Roman Pen 2018-05-18 202 ea541da7d Roman Pen 2018-05-18 203 case IBNBD_OPT_IO_MODE: ea541da7d Roman Pen 2018-05-18 204 p = match_strdup(args); ea541da7d Roman Pen 2018-05-18 205 if (!p) { ea541da7d Roman Pen 2018-05-18 206 ret = -ENOMEM; ea541da7d Roman Pen 2018-05-18 207 goto out; ea541da7d Roman Pen 2018-05-18 208 } ea541da7d Roman Pen 2018-05-18 209 if (!strcmp(p, "blockio")) { ea541da7d Roman Pen 2018-05-18 210 *io_mode = IBNBD_BLOCKIO; ea541da7d Roman Pen 2018-05-18 211 } else if (!strcmp(p, "fileio")) { ea541da7d Roman Pen 2018-05-18 212 *io_mode = IBNBD_FILEIO; ea541da7d Roman Pen 2018-05-18 213 } else { ea541da7d Roman Pen 2018-05-18 214 pr_err("map_device: Invalid io_mode: '%s'.\n", ea541da7d Roman Pen 2018-05-18 215 p); ea541da7d Roman Pen 2018-05-18 216 ret = -EINVAL; ea541da7d Roman Pen 2018-05-18 217 kfree(p); ea541da7d Roman Pen 2018-05-18 218 goto out; ea541da7d Roman Pen 2018-05-18 219 } ea541da7d Roman Pen 2018-05-18 220 kfree(p); ea541da7d Roman Pen 2018-05-18 221 break; ea541da7d Roman Pen 2018-05-18 222 ea541da7d Roman Pen 2018-05-18 223 default: ea541da7d Roman Pen 2018-05-18 224 pr_err("map_device: Unknown parameter or missing value" ea541da7d Roman Pen 2018-05-18 225 " '%s'\n", p); ea541da7d Roman Pen 2018-05-18 226 ret = -EINVAL; ea541da7d Roman Pen 2018-05-18 227 goto out; ea541da7d Roman Pen 2018-05-18 228 } ea541da7d Roman Pen 2018-05-18 229 } ea541da7d Roman Pen 2018-05-18 230 ea541da7d Roman Pen 2018-05-18 231 for (i = 0; i < ARRAY_SIZE(ibnbd_opt_mandatory); i++) { ea541da7d Roman Pen 2018-05-18 232 if ((opt_mask & ibnbd_opt_mandatory[i])) { ea541da7d Roman Pen 2018-05-18 233 ret = 0; ea541da7d Roman Pen 2018-05-18 234 } else { ea541da7d Roman Pen 2018-05-18 235 pr_err("map_device: Parameters missing\n"); ea541da7d Roman Pen 2018-05-18 236 ret = -EINVAL; ea541da7d Roman Pen 2018-05-18 237 break; ea541da7d Roman Pen 2018-05-18 238 } ea541da7d Roman Pen 2018-05-18 239 } ea541da7d Roman Pen 2018-05-18 240 ea541da7d Roman Pen 2018-05-18 241 out: ea541da7d Roman Pen 2018-05-18 242 *path_cnt = p_cnt; ea541da7d Roman Pen 2018-05-18 243 kfree(options); ea541da7d Roman Pen 2018-05-18 244 return ret; ea541da7d Roman Pen 2018-05-18 245 } ea541da7d Roman Pen 2018-05-18 246 :::::: The code at line 139 was first introduced by commit :::::: ea541da7d8b2518d2b1d68d23d19bb13cca1119b ibnbd: client: sysfs interface functions :::::: TO: Roman Pen <roman.penyaev@profitbricks.com> :::::: CC: 0day robot <lkp@intel.com> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Hi Roman, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on linus/master] [also build test WARNING on v4.17-rc5 next-20180517] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Roman-Pen/InfiniBand-Transport-IBTRS-and-Network-Block-Device-IBNBD/20180520-222445 reproduce: # apt-get install sparse make ARCH=x86_64 allmodconfig make C=1 CF=-D__CHECK_ENDIAN__ sparse warnings: (new ones prefixed by >>) >> drivers/block/ibnbd/ibnbd-clt.c:133:39: sparse: expression using sizeof(void) >> drivers/block/ibnbd/ibnbd-clt.c:133:39: sparse: expression using sizeof(void) drivers/block/ibnbd/ibnbd-clt.c:135:37: sparse: expression using sizeof(void) drivers/block/ibnbd/ibnbd-clt.c:135:37: sparse: expression using sizeof(void) drivers/block/ibnbd/ibnbd-clt.c:592:29: sparse: expression using sizeof(void) -- >> drivers/block/ibnbd/ibnbd-srv.c:357:48: sparse: incorrect type in argument 1 (different base types) @@ expected int [signed] dev_id @@ got restricted __le32 consint [signed] dev_id @@ drivers/block/ibnbd/ibnbd-srv.c:357:48: expected int [signed] dev_id drivers/block/ibnbd/ibnbd-srv.c:357:48: got restricted __le32 const [usertype] device_id >> drivers/block/ibnbd/ibnbd-srv.c:696:25: sparse: expression using sizeof(void) include/linux/blkdev.h:1105:24: sparse: expression using sizeof(void) vim +133 drivers/block/ibnbd/ibnbd-clt.c 563b98df Roman Pen 2018-05-18 108 563b98df Roman Pen 2018-05-18 109 static int ibnbd_clt_set_dev_attr(struct ibnbd_clt_dev *dev, 563b98df Roman Pen 2018-05-18 110 const struct ibnbd_msg_open_rsp *rsp) 563b98df Roman Pen 2018-05-18 111 { 563b98df Roman Pen 2018-05-18 112 struct ibnbd_clt_session *sess = dev->sess; 563b98df Roman Pen 2018-05-18 113 563b98df Roman Pen 2018-05-18 114 if (unlikely(!rsp->logical_block_size)) 563b98df Roman Pen 2018-05-18 115 return -EINVAL; 563b98df Roman Pen 2018-05-18 116 563b98df Roman Pen 2018-05-18 117 dev->device_id = le32_to_cpu(rsp->device_id); 563b98df Roman Pen 2018-05-18 118 dev->nsectors = le64_to_cpu(rsp->nsectors); 563b98df Roman Pen 2018-05-18 119 dev->logical_block_size = le16_to_cpu(rsp->logical_block_size); 563b98df Roman Pen 2018-05-18 120 dev->physical_block_size = le16_to_cpu(rsp->physical_block_size); 563b98df Roman Pen 2018-05-18 121 dev->max_write_same_sectors = le32_to_cpu(rsp->max_write_same_sectors); 563b98df Roman Pen 2018-05-18 122 dev->max_discard_sectors = le32_to_cpu(rsp->max_discard_sectors); 563b98df Roman Pen 2018-05-18 123 dev->discard_granularity = le32_to_cpu(rsp->discard_granularity); 563b98df Roman Pen 2018-05-18 124 dev->discard_alignment = le32_to_cpu(rsp->discard_alignment); 563b98df Roman Pen 2018-05-18 125 dev->secure_discard = le16_to_cpu(rsp->secure_discard); 563b98df Roman Pen 2018-05-18 126 dev->rotational = rsp->rotational; 563b98df Roman Pen 2018-05-18 127 dev->remote_io_mode = rsp->io_mode; 563b98df Roman Pen 2018-05-18 128 563b98df Roman Pen 2018-05-18 129 dev->max_hw_sectors = sess->max_io_size / dev->logical_block_size; 563b98df Roman Pen 2018-05-18 130 dev->max_segments = BMAX_SEGMENTS; 563b98df Roman Pen 2018-05-18 131 563b98df Roman Pen 2018-05-18 132 if (dev->remote_io_mode == IBNBD_BLOCKIO) { 563b98df Roman Pen 2018-05-18 @133 dev->max_hw_sectors = min_t(u32, dev->max_hw_sectors, 563b98df Roman Pen 2018-05-18 134 le32_to_cpu(rsp->max_hw_sectors)); 563b98df Roman Pen 2018-05-18 135 dev->max_segments = min_t(u16, dev->max_segments, 563b98df Roman Pen 2018-05-18 136 le16_to_cpu(rsp->max_segments)); 563b98df Roman Pen 2018-05-18 137 } 563b98df Roman Pen 2018-05-18 138 563b98df Roman Pen 2018-05-18 139 return 0; 563b98df Roman Pen 2018-05-18 140 } 563b98df Roman Pen 2018-05-18 141 :::::: The code at line 133 was first introduced by commit :::::: 563b98df79220ea51ec7d61fa671c810eef1db6b ibnbd: client: main functionality :::::: TO: Roman Pen <roman.penyaev@profitbricks.com> :::::: CC: 0day robot <lkp@intel.com> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Hi Roman,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on v4.17-rc6 next-20180517]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Roman-Pen/InfiniBand-Transport-IBTRS-and-Network-Block-Device-IBNBD/20180520-222445
config: i386-allyesconfig (attached as .config)
compiler: gcc-7 (Debian 7.3.0-16) 7.3.0
reproduce:
# save the attached .config to linux build tree
make ARCH=i386
All warnings (new ones prefixed by >>):
drivers/block/ibnbd/ibnbd-clt-sysfs.c: In function 'ibnbd_clt_parse_map_options':
>> drivers/block/ibnbd/ibnbd-clt-sysfs.c:139:12: warning: format '%lu' expects argument of type 'long unsigned int', but argument 2 has type 'size_t {aka unsigned int}' [-Wformat=]
pr_err("map_device: too many (> %lu) paths "
^~~~~~
drivers/block/ibnbd/ibnbd-clt-sysfs.c: In function 'ibnbd_clt_map_device_store':
drivers/block/ibnbd/ibnbd-clt-sysfs.c:613:1: warning: the frame size of 1612 bytes is larger than 1024 bytes [-Wframe-larger-than=]
}
^
vim +139 drivers/block/ibnbd/ibnbd-clt-sysfs.c
ea541da7d Roman Pen 2018-05-18 88
ea541da7d Roman Pen 2018-05-18 89 static int ibnbd_clt_parse_map_options(const char *buf,
ea541da7d Roman Pen 2018-05-18 90 char *sessname,
ea541da7d Roman Pen 2018-05-18 91 struct ibtrs_addr *paths,
ea541da7d Roman Pen 2018-05-18 92 size_t *path_cnt,
ea541da7d Roman Pen 2018-05-18 93 size_t max_path_cnt,
ea541da7d Roman Pen 2018-05-18 94 char *pathname,
ea541da7d Roman Pen 2018-05-18 95 enum ibnbd_access_mode *access_mode,
ea541da7d Roman Pen 2018-05-18 96 enum ibnbd_io_mode *io_mode)
ea541da7d Roman Pen 2018-05-18 97 {
ea541da7d Roman Pen 2018-05-18 98 char *options, *sep_opt;
ea541da7d Roman Pen 2018-05-18 99 char *p;
ea541da7d Roman Pen 2018-05-18 100 substring_t args[MAX_OPT_ARGS];
ea541da7d Roman Pen 2018-05-18 101 int opt_mask = 0;
ea541da7d Roman Pen 2018-05-18 102 int token;
ea541da7d Roman Pen 2018-05-18 103 int ret = -EINVAL;
ea541da7d Roman Pen 2018-05-18 104 int i;
ea541da7d Roman Pen 2018-05-18 105 int p_cnt = 0;
ea541da7d Roman Pen 2018-05-18 106
ea541da7d Roman Pen 2018-05-18 107 options = kstrdup(buf, GFP_KERNEL);
ea541da7d Roman Pen 2018-05-18 108 if (!options)
ea541da7d Roman Pen 2018-05-18 109 return -ENOMEM;
ea541da7d Roman Pen 2018-05-18 110
ea541da7d Roman Pen 2018-05-18 111 sep_opt = strstrip(options);
ea541da7d Roman Pen 2018-05-18 112 strip(sep_opt);
ea541da7d Roman Pen 2018-05-18 113 while ((p = strsep(&sep_opt, " ")) != NULL) {
ea541da7d Roman Pen 2018-05-18 114 if (!*p)
ea541da7d Roman Pen 2018-05-18 115 continue;
ea541da7d Roman Pen 2018-05-18 116
ea541da7d Roman Pen 2018-05-18 117 token = match_token(p, ibnbd_opt_tokens, args);
ea541da7d Roman Pen 2018-05-18 118 opt_mask |= token;
ea541da7d Roman Pen 2018-05-18 119
ea541da7d Roman Pen 2018-05-18 120 switch (token) {
ea541da7d Roman Pen 2018-05-18 121 case IBNBD_OPT_SESSNAME:
ea541da7d Roman Pen 2018-05-18 122 p = match_strdup(args);
ea541da7d Roman Pen 2018-05-18 123 if (!p) {
ea541da7d Roman Pen 2018-05-18 124 ret = -ENOMEM;
ea541da7d Roman Pen 2018-05-18 125 goto out;
ea541da7d Roman Pen 2018-05-18 126 }
ea541da7d Roman Pen 2018-05-18 127 if (strlen(p) > NAME_MAX) {
ea541da7d Roman Pen 2018-05-18 128 pr_err("map_device: sessname too long\n");
ea541da7d Roman Pen 2018-05-18 129 ret = -EINVAL;
ea541da7d Roman Pen 2018-05-18 130 kfree(p);
ea541da7d Roman Pen 2018-05-18 131 goto out;
ea541da7d Roman Pen 2018-05-18 132 }
ea541da7d Roman Pen 2018-05-18 133 strlcpy(sessname, p, NAME_MAX);
ea541da7d Roman Pen 2018-05-18 134 kfree(p);
ea541da7d Roman Pen 2018-05-18 135 break;
ea541da7d Roman Pen 2018-05-18 136
ea541da7d Roman Pen 2018-05-18 137 case IBNBD_OPT_PATH:
ea541da7d Roman Pen 2018-05-18 138 if (p_cnt >= max_path_cnt) {
ea541da7d Roman Pen 2018-05-18 @139 pr_err("map_device: too many (> %lu) paths "
ea541da7d Roman Pen 2018-05-18 140 "provided\n", max_path_cnt);
ea541da7d Roman Pen 2018-05-18 141 ret = -ENOMEM;
ea541da7d Roman Pen 2018-05-18 142 goto out;
ea541da7d Roman Pen 2018-05-18 143 }
ea541da7d Roman Pen 2018-05-18 144 p = match_strdup(args);
ea541da7d Roman Pen 2018-05-18 145 if (!p) {
ea541da7d Roman Pen 2018-05-18 146 ret = -ENOMEM;
ea541da7d Roman Pen 2018-05-18 147 goto out;
ea541da7d Roman Pen 2018-05-18 148 }
ea541da7d Roman Pen 2018-05-18 149
ea541da7d Roman Pen 2018-05-18 150 ret = ibtrs_addr_to_sockaddr(p, strlen(p), IBTRS_PORT,
ea541da7d Roman Pen 2018-05-18 151 &paths[p_cnt]);
ea541da7d Roman Pen 2018-05-18 152 if (ret) {
ea541da7d Roman Pen 2018-05-18 153 pr_err("Can't parse path %s: %d\n", p, ret);
ea541da7d Roman Pen 2018-05-18 154 kfree(p);
ea541da7d Roman Pen 2018-05-18 155 goto out;
ea541da7d Roman Pen 2018-05-18 156 }
ea541da7d Roman Pen 2018-05-18 157
ea541da7d Roman Pen 2018-05-18 158 p_cnt++;
ea541da7d Roman Pen 2018-05-18 159
ea541da7d Roman Pen 2018-05-18 160 kfree(p);
ea541da7d Roman Pen 2018-05-18 161 break;
ea541da7d Roman Pen 2018-05-18 162
ea541da7d Roman Pen 2018-05-18 163 case IBNBD_OPT_DEV_PATH:
ea541da7d Roman Pen 2018-05-18 164 p = match_strdup(args);
ea541da7d Roman Pen 2018-05-18 165 if (!p) {
ea541da7d Roman Pen 2018-05-18 166 ret = -ENOMEM;
ea541da7d Roman Pen 2018-05-18 167 goto out;
ea541da7d Roman Pen 2018-05-18 168 }
ea541da7d Roman Pen 2018-05-18 169 if (strlen(p) > NAME_MAX) {
ea541da7d Roman Pen 2018-05-18 170 pr_err("map_device: Device path too long\n");
ea541da7d Roman Pen 2018-05-18 171 ret = -EINVAL;
ea541da7d Roman Pen 2018-05-18 172 kfree(p);
ea541da7d Roman Pen 2018-05-18 173 goto out;
ea541da7d Roman Pen 2018-05-18 174 }
ea541da7d Roman Pen 2018-05-18 175 strlcpy(pathname, p, NAME_MAX);
ea541da7d Roman Pen 2018-05-18 176 kfree(p);
ea541da7d Roman Pen 2018-05-18 177 break;
ea541da7d Roman Pen 2018-05-18 178
ea541da7d Roman Pen 2018-05-18 179 case IBNBD_OPT_ACCESS_MODE:
ea541da7d Roman Pen 2018-05-18 180 p = match_strdup(args);
ea541da7d Roman Pen 2018-05-18 181 if (!p) {
ea541da7d Roman Pen 2018-05-18 182 ret = -ENOMEM;
ea541da7d Roman Pen 2018-05-18 183 goto out;
ea541da7d Roman Pen 2018-05-18 184 }
ea541da7d Roman Pen 2018-05-18 185
ea541da7d Roman Pen 2018-05-18 186 if (!strcmp(p, "ro")) {
ea541da7d Roman Pen 2018-05-18 187 *access_mode = IBNBD_ACCESS_RO;
ea541da7d Roman Pen 2018-05-18 188 } else if (!strcmp(p, "rw")) {
ea541da7d Roman Pen 2018-05-18 189 *access_mode = IBNBD_ACCESS_RW;
ea541da7d Roman Pen 2018-05-18 190 } else if (!strcmp(p, "migration")) {
ea541da7d Roman Pen 2018-05-18 191 *access_mode = IBNBD_ACCESS_MIGRATION;
ea541da7d Roman Pen 2018-05-18 192 } else {
ea541da7d Roman Pen 2018-05-18 193 pr_err("map_device: Invalid access_mode:"
ea541da7d Roman Pen 2018-05-18 194 " '%s'\n", p);
ea541da7d Roman Pen 2018-05-18 195 ret = -EINVAL;
ea541da7d Roman Pen 2018-05-18 196 kfree(p);
ea541da7d Roman Pen 2018-05-18 197 goto out;
ea541da7d Roman Pen 2018-05-18 198 }
ea541da7d Roman Pen 2018-05-18 199
ea541da7d Roman Pen 2018-05-18 200 kfree(p);
ea541da7d Roman Pen 2018-05-18 201 break;
ea541da7d Roman Pen 2018-05-18 202
ea541da7d Roman Pen 2018-05-18 203 case IBNBD_OPT_IO_MODE:
ea541da7d Roman Pen 2018-05-18 204 p = match_strdup(args);
ea541da7d Roman Pen 2018-05-18 205 if (!p) {
ea541da7d Roman Pen 2018-05-18 206 ret = -ENOMEM;
ea541da7d Roman Pen 2018-05-18 207 goto out;
ea541da7d Roman Pen 2018-05-18 208 }
ea541da7d Roman Pen 2018-05-18 209 if (!strcmp(p, "blockio")) {
ea541da7d Roman Pen 2018-05-18 210 *io_mode = IBNBD_BLOCKIO;
ea541da7d Roman Pen 2018-05-18 211 } else if (!strcmp(p, "fileio")) {
ea541da7d Roman Pen 2018-05-18 212 *io_mode = IBNBD_FILEIO;
ea541da7d Roman Pen 2018-05-18 213 } else {
ea541da7d Roman Pen 2018-05-18 214 pr_err("map_device: Invalid io_mode: '%s'.\n",
ea541da7d Roman Pen 2018-05-18 215 p);
ea541da7d Roman Pen 2018-05-18 216 ret = -EINVAL;
ea541da7d Roman Pen 2018-05-18 217 kfree(p);
ea541da7d Roman Pen 2018-05-18 218 goto out;
ea541da7d Roman Pen 2018-05-18 219 }
ea541da7d Roman Pen 2018-05-18 220 kfree(p);
ea541da7d Roman Pen 2018-05-18 221 break;
ea541da7d Roman Pen 2018-05-18 222
ea541da7d Roman Pen 2018-05-18 223 default:
ea541da7d Roman Pen 2018-05-18 224 pr_err("map_device: Unknown parameter or missing value"
ea541da7d Roman Pen 2018-05-18 225 " '%s'\n", p);
ea541da7d Roman Pen 2018-05-18 226 ret = -EINVAL;
ea541da7d Roman Pen 2018-05-18 227 goto out;
ea541da7d Roman Pen 2018-05-18 228 }
ea541da7d Roman Pen 2018-05-18 229 }
ea541da7d Roman Pen 2018-05-18 230
ea541da7d Roman Pen 2018-05-18 231 for (i = 0; i < ARRAY_SIZE(ibnbd_opt_mandatory); i++) {
ea541da7d Roman Pen 2018-05-18 232 if ((opt_mask & ibnbd_opt_mandatory[i])) {
ea541da7d Roman Pen 2018-05-18 233 ret = 0;
ea541da7d Roman Pen 2018-05-18 234 } else {
ea541da7d Roman Pen 2018-05-18 235 pr_err("map_device: Parameters missing\n");
ea541da7d Roman Pen 2018-05-18 236 ret = -EINVAL;
ea541da7d Roman Pen 2018-05-18 237 break;
ea541da7d Roman Pen 2018-05-18 238 }
ea541da7d Roman Pen 2018-05-18 239 }
ea541da7d Roman Pen 2018-05-18 240
ea541da7d Roman Pen 2018-05-18 241 out:
ea541da7d Roman Pen 2018-05-18 242 *path_cnt = p_cnt;
ea541da7d Roman Pen 2018-05-18 243 kfree(options);
ea541da7d Roman Pen 2018-05-18 244 return ret;
ea541da7d Roman Pen 2018-05-18 245 }
ea541da7d Roman Pen 2018-05-18 246
:::::: The code at line 139 was first introduced by commit
:::::: ea541da7d8b2518d2b1d68d23d19bb13cca1119b ibnbd: client: sysfs interface functions
:::::: TO: Roman Pen <roman.penyaev@profitbricks.com>
:::::: CC: 0day robot <lkp@intel.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig index ad9b687a236a..d8c1590411c8 100644 --- a/drivers/block/Kconfig +++ b/drivers/block/Kconfig @@ -481,4 +481,6 @@ config BLK_DEV_RSXX To compile this driver as a module, choose M here: the module will be called rsxx. +source "drivers/block/ibnbd/Kconfig" + endif # BLK_DEV diff --git a/drivers/block/Makefile b/drivers/block/Makefile index dc061158b403..65346a1d0b1a 100644 --- a/drivers/block/Makefile +++ b/drivers/block/Makefile @@ -38,6 +38,7 @@ obj-$(CONFIG_BLK_DEV_PCIESSD_MTIP32XX) += mtip32xx/ obj-$(CONFIG_BLK_DEV_RSXX) += rsxx/ obj-$(CONFIG_BLK_DEV_NULL_BLK) += null_blk.o obj-$(CONFIG_ZRAM) += zram/ +obj-$(CONFIG_BLK_DEV_IBNBD) += ibnbd/ skd-y := skd_main.o swim_mod-y := swim.o swim_asm.o diff --git a/drivers/block/ibnbd/Kconfig b/drivers/block/ibnbd/Kconfig new file mode 100644 index 000000000000..b381c6c084d2 --- /dev/null +++ b/drivers/block/ibnbd/Kconfig @@ -0,0 +1,22 @@ +config BLK_DEV_IBNBD + bool + +config BLK_DEV_IBNBD_CLIENT + tristate "Network block device driver on top of IBTRS transport" + depends on INFINIBAND_IBTRS_CLIENT + select BLK_DEV_IBNBD + help + IBNBD client allows for mapping of a remote block devices over + IBTRS protocol from a target system where IBNBD server is running. + + If unsure, say N. + +config BLK_DEV_IBNBD_SERVER + tristate "Network block device over RDMA Infiniband server support" + depends on INFINIBAND_IBTRS_SERVER + select BLK_DEV_IBNBD + help + IBNBD server allows for exporting local block devices to a remote client + over IBTRS protocol. + + If unsure, say N. diff --git a/drivers/block/ibnbd/Makefile b/drivers/block/ibnbd/Makefile new file mode 100644 index 000000000000..5f20e72e0633 --- /dev/null +++ b/drivers/block/ibnbd/Makefile @@ -0,0 +1,13 @@ +ccflags-y := -Idrivers/infiniband/ulp/ibtrs + +ibnbd-client-y := ibnbd-clt.o \ + ibnbd-clt-sysfs.o + +ibnbd-server-y := ibnbd-srv.o \ + ibnbd-srv-dev.o \ + ibnbd-srv-sysfs.o + +obj-$(CONFIG_BLK_DEV_IBNBD_CLIENT) += ibnbd-client.o +obj-$(CONFIG_BLK_DEV_IBNBD_SERVER) += ibnbd-server.o + +-include $(src)/compat/compat.mk