Hi Sergei,

I love your patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v5.9-rc7]
[cannot apply to block/for-next sparc-next/master next-20201002]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/0day-ci/linux/commits/Sergei-Shtepa/Block-snapshot-module-and-block-layer-filter-API/20201002-210406
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
472e5b056f000a778abb41f1e443de58eb259783
config: m68k-allmodconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # 
https://github.com/0day-ci/linux/commit/61a37e3bb74afbef1b725eaf80405e0e6e5d64b7
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Sergei-Shtepa/Block-snapshot-module-and-block-layer-filter-API/20201002-210406
        git checkout 61a37e3bb74afbef1b725eaf80405e0e6e5d64b7
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross 
ARCH=m68k 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>

All warnings (new ones prefixed by >>):

   In file included from include/linux/kernel.h:11,
                    from include/linux/list.h:9,
                    from include/linux/mutex.h:15,
                    from drivers/block/blk-snap/common.h:11,
                    from drivers/block/blk-snap/blk_deferred.c:3:
   include/linux/scatterlist.h: In function 'sg_set_buf':
   arch/m68k/include/asm/page_mm.h:169:49: warning: ordered comparison of 
pointer with null pointer [-Wextra]
     169 | #define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void 
*)PAGE_OFFSET && (void *)(kaddr) < high_memory)
         |                                                 ^~
   include/linux/compiler.h:78:42: note: in definition of macro 'unlikely'
      78 | # define unlikely(x) __builtin_expect(!!(x), 0)
         |                                          ^
   include/linux/scatterlist.h:143:2: note: in expansion of macro 'BUG_ON'
     143 |  BUG_ON(!virt_addr_valid(buf));
         |  ^~~~~~
   include/linux/scatterlist.h:143:10: note: in expansion of macro 
'virt_addr_valid'
     143 |  BUG_ON(!virt_addr_valid(buf));
         |          ^~~~~~~~~~~~~~~
   drivers/block/blk-snap/blk_deferred.c: At top level:
>> drivers/block/blk-snap/blk_deferred.c:140:13: warning: no previous prototype 
>> for '_blk_deferred_bio_alloc' [-Wmissing-prototypes]
     140 | struct bio *_blk_deferred_bio_alloc(int nr_iovecs)
         |             ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/block/blk-snap/blk_deferred.c:198:10: warning: no previous prototype 
>> for '_blk_deferred_submit_pages' [-Wmissing-prototypes]
     198 | sector_t _blk_deferred_submit_pages(struct block_device *blk_dev,
         |          ^~~~~~~~~~~~~~~~~~~~~~~~~~
--
   In file included from include/linux/kernel.h:11,
                    from include/linux/list.h:9,
                    from include/linux/mutex.h:15,
                    from drivers/block/blk-snap/common.h:11,
                    from drivers/block/blk-snap/blk_descr_file.c:3:
   include/linux/scatterlist.h: In function 'sg_set_buf':
   arch/m68k/include/asm/page_mm.h:169:49: warning: ordered comparison of 
pointer with null pointer [-Wextra]
     169 | #define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void 
*)PAGE_OFFSET && (void *)(kaddr) < high_memory)
         |                                                 ^~
   include/linux/compiler.h:78:42: note: in definition of macro 'unlikely'
      78 | # define unlikely(x) __builtin_expect(!!(x), 0)
         |                                          ^
   include/linux/scatterlist.h:143:2: note: in expansion of macro 'BUG_ON'
     143 |  BUG_ON(!virt_addr_valid(buf));
         |  ^~~~~~
   include/linux/scatterlist.h:143:10: note: in expansion of macro 
'virt_addr_valid'
     143 |  BUG_ON(!virt_addr_valid(buf));
         |          ^~~~~~~~~~~~~~~
   drivers/block/blk-snap/blk_descr_file.c: At top level:
>> drivers/block/blk-snap/blk_descr_file.c:39:6: warning: no previous prototype 
>> for '_blk_descr_file_cleanup' [-Wmissing-prototypes]
      39 | void _blk_descr_file_cleanup(void *descr_array, size_t count)
         |      ^~~~~~~~~~~~~~~~~~~~~~~
--
   In file included from include/linux/kernel.h:11,
                    from include/linux/list.h:9,
                    from include/linux/mutex.h:15,
                    from drivers/block/blk-snap/common.h:11,
                    from drivers/block/blk-snap/blk_descr_mem.c:3:
   include/linux/scatterlist.h: In function 'sg_set_buf':
   arch/m68k/include/asm/page_mm.h:169:49: warning: ordered comparison of 
pointer with null pointer [-Wextra]
     169 | #define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void 
*)PAGE_OFFSET && (void *)(kaddr) < high_memory)
         |                                                 ^~
   include/linux/compiler.h:78:42: note: in definition of macro 'unlikely'
      78 | # define unlikely(x) __builtin_expect(!!(x), 0)
         |                                          ^
   include/linux/scatterlist.h:143:2: note: in expansion of macro 'BUG_ON'
     143 |  BUG_ON(!virt_addr_valid(buf));
         |  ^~~~~~
   include/linux/scatterlist.h:143:10: note: in expansion of macro 
'virt_addr_valid'
     143 |  BUG_ON(!virt_addr_valid(buf));
         |          ^~~~~~~~~~~~~~~
   drivers/block/blk-snap/blk_descr_mem.c: At top level:
>> drivers/block/blk-snap/blk_descr_mem.c:23:6: warning: no previous prototype 
>> for 'blk_descr_mem_cleanup' [-Wmissing-prototypes]
      23 | void blk_descr_mem_cleanup(void *descr_array, size_t count)
         |      ^~~~~~~~~~~~~~~~~~~~~
--
   In file included from include/linux/kernel.h:11,
                    from include/linux/list.h:9,
                    from include/linux/mutex.h:15,
                    from drivers/block/blk-snap/common.h:11,
                    from drivers/block/blk-snap/blk_redirect.c:3:
   include/linux/scatterlist.h: In function 'sg_set_buf':
   arch/m68k/include/asm/page_mm.h:169:49: warning: ordered comparison of 
pointer with null pointer [-Wextra]
     169 | #define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void 
*)PAGE_OFFSET && (void *)(kaddr) < high_memory)
         |                                                 ^~
   include/linux/compiler.h:78:42: note: in definition of macro 'unlikely'
      78 | # define unlikely(x) __builtin_expect(!!(x), 0)
         |                                          ^
   include/linux/scatterlist.h:143:2: note: in expansion of macro 'BUG_ON'
     143 |  BUG_ON(!virt_addr_valid(buf));
         |  ^~~~~~
   include/linux/scatterlist.h:143:10: note: in expansion of macro 
'virt_addr_valid'
     143 |  BUG_ON(!virt_addr_valid(buf));
         |          ^~~~~~~~~~~~~~~
   drivers/block/blk-snap/blk_redirect.c: At top level:
>> drivers/block/blk-snap/blk_redirect.c:44:13: warning: no previous prototype 
>> for '_blk_dev_redirect_bio_alloc' [-Wmissing-prototypes]
      44 | struct bio *_blk_dev_redirect_bio_alloc(int nr_iovecs, void 
*bi_private)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/block/blk-snap/blk_redirect.c:58:31: warning: no previous prototype 
>> for '_redirect_bio_allocate_list' [-Wmissing-prototypes]
      58 | struct blk_redirect_bio_list *_redirect_bio_allocate_list(struct bio 
*new_bio)
         |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/block/blk-snap/blk_redirect.c:72:5: warning: no previous prototype 
>> for 'bio_endio_list_push' [-Wmissing-prototypes]
      72 | int bio_endio_list_push(struct blk_redirect_bio *rq_redir, struct 
bio *new_bio)
         |     ^~~~~~~~~~~~~~~~~~~
>> drivers/block/blk-snap/blk_redirect.c:97:6: warning: no previous prototype 
>> for 'bio_endio_list_cleanup' [-Wmissing-prototypes]
      97 | void bio_endio_list_cleanup(struct blk_redirect_bio_list *curr)
         |      ^~~~~~~~~~~~~~~~~~~~~~
--
   In file included from include/linux/kernel.h:11,
                    from include/linux/list.h:9,
                    from include/linux/mutex.h:15,
                    from drivers/block/blk-snap/common.h:11,
                    from drivers/block/blk-snap/cbt_map.c:3:
   include/linux/scatterlist.h: In function 'sg_set_buf':
   arch/m68k/include/asm/page_mm.h:169:49: warning: ordered comparison of 
pointer with null pointer [-Wextra]
     169 | #define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void 
*)PAGE_OFFSET && (void *)(kaddr) < high_memory)
         |                                                 ^~
   include/linux/compiler.h:78:42: note: in definition of macro 'unlikely'
      78 | # define unlikely(x) __builtin_expect(!!(x), 0)
         |                                          ^
   include/linux/scatterlist.h:143:2: note: in expansion of macro 'BUG_ON'
     143 |  BUG_ON(!virt_addr_valid(buf));
         |  ^~~~~~
   include/linux/scatterlist.h:143:10: note: in expansion of macro 
'virt_addr_valid'
     143 |  BUG_ON(!virt_addr_valid(buf));
         |          ^~~~~~~~~~~~~~~
   drivers/block/blk-snap/cbt_map.c: At top level:
>> drivers/block/blk-snap/cbt_map.c:6:5: warning: no previous prototype for 
>> 'cbt_map_allocate' [-Wmissing-prototypes]
       6 | int cbt_map_allocate(struct cbt_map *cbt_map, unsigned int 
cbt_sect_in_block_degree,
         |     ^~~~~~~~~~~~~~~~
   In file included from include/linux/printk.h:7,
                    from include/linux/kernel.h:15,
                    from include/linux/list.h:9,
                    from include/linux/mutex.h:15,
                    from drivers/block/blk-snap/common.h:11,
                    from drivers/block/blk-snap/cbt_map.c:3:
   drivers/block/blk-snap/cbt_map.c: In function 'cbt_map_allocate':
   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=]
       5 | #define KERN_SOH "\001"  /* ASCII Start Of Header */
         |                  ^~~~~~
   include/linux/kern_levels.h:14:19: note: in expansion of macro 'KERN_SOH'
      14 | #define KERN_INFO KERN_SOH "6" /* informational */
         |                   ^~~~~~~~
   include/linux/printk.h:369:9: note: in expansion of macro 'KERN_INFO'
     369 |  printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~~
   drivers/block/blk-snap/cbt_map.c:15:2: note: in expansion of macro 'pr_info'
      15 |  pr_info("Allocate CBT map of %lu\n", cbt_map->map_size);
         |  ^~~~~~~
   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=]
       5 | #define KERN_SOH "\001"  /* ASCII Start Of Header */
         |                  ^~~~~~
   include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
      11 | #define KERN_ERR KERN_SOH "3" /* error conditions */
         |                  ^~~~~~~~
   include/linux/printk.h:339:9: note: in expansion of macro 'KERN_ERR'
     339 |  printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~
   drivers/block/blk-snap/cbt_map.c:30:3: note: in expansion of macro 'pr_err'
      30 |   pr_err("Cannot allocate CBT map. map_size=%lu\n", 
cbt_map->map_size);
         |   ^~~~~~
   drivers/block/blk-snap/cbt_map.c: At top level:
>> drivers/block/blk-snap/cbt_map.c:45:6: warning: no previous prototype for 
>> 'cbt_map_deallocate' [-Wmissing-prototypes]
      45 | void cbt_map_deallocate(struct cbt_map *cbt_map)
         |      ^~~~~~~~~~~~~~~~~~
>> drivers/block/blk-snap/cbt_map.c:92:6: warning: no previous prototype for 
>> 'cbt_map_destroy_cb' [-Wmissing-prototypes]
      92 | void cbt_map_destroy_cb(struct kref *kref)
         |      ^~~~~~~~~~~~~~~~~~
>> drivers/block/blk-snap/cbt_map.c:132:5: warning: no previous prototype for 
>> '_cbt_map_set' [-Wmissing-prototypes]
     132 | int _cbt_map_set(struct cbt_map *cbt_map, sector_t sector_start, 
sector_t sector_cnt,
         |     ^~~~~~~~~~~~
   In file included from include/linux/printk.h:7,
                    from include/linux/kernel.h:15,
                    from include/linux/list.h:9,
                    from include/linux/mutex.h:15,
                    from drivers/block/blk-snap/common.h:11,
                    from drivers/block/blk-snap/cbt_map.c:3:
   drivers/block/blk-snap/cbt_map.c: In function '_cbt_map_set':
   include/linux/kern_levels.h:5:18: warning: format '%ld' expects argument of 
type 'long int', but argument 2 has type 'size_t' {aka 'unsigned int'} 
[-Wformat=]
       5 | #define KERN_SOH "\001"  /* ASCII Start Of Header */
         |                  ^~~~~~
   include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
      11 | #define KERN_ERR KERN_SOH "3" /* error conditions */
         |                  ^~~~~~~~
   include/linux/printk.h:339:9: note: in expansion of macro 'KERN_ERR'
     339 |  printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~
   drivers/block/blk-snap/cbt_map.c:153:4: note: in expansion of macro 'pr_err'
     153 |    pr_err("Block index is too large. #%ld was demanded, map size 
%ld\n",
         |    ^~~~~~
   include/linux/kern_levels.h:5:18: warning: format '%ld' expects argument of 
type 'long int', but argument 3 has type 'size_t' {aka 'unsigned int'} 
[-Wformat=]
       5 | #define KERN_SOH "\001"  /* ASCII Start Of Header */
         |                  ^~~~~~
   include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
      11 | #define KERN_ERR KERN_SOH "3" /* error conditions */
         |                  ^~~~~~~~
   include/linux/printk.h:339:9: note: in expansion of macro 'KERN_ERR'
     339 |  printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~
   drivers/block/blk-snap/cbt_map.c:153:4: note: in expansion of macro 'pr_err'
     153 |    pr_err("Block index is too large. #%ld was demanded, map size 
%ld\n",
         |    ^~~~~~
   drivers/block/blk-snap/cbt_map.c: In function 'cbt_map_read_to_user':
   include/linux/kern_levels.h:5:18: warning: format '%ld' expects argument of 
type 'long int', but argument 2 has type 'size_t' {aka 'unsigned int'} 
[-Wformat=]
       5 | #define KERN_SOH "\001"  /* ASCII Start Of Header */
         |                  ^~~~~~
   include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
      11 | #define KERN_ERR KERN_SOH "3" /* error conditions */
         |                  ^~~~~~~~
   include/linux/printk.h:339:9: note: in expansion of macro 'KERN_ERR'
     339 |  printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~
   drivers/block/blk-snap/cbt_map.c:205:3: note: in expansion of macro 'pr_err'
     205 |   pr_err("Not all CBT data was read. Left [%ld] bytes\n", left_size);
         |   ^~~~~~
--
   In file included from include/linux/kernel.h:11,
                    from include/linux/list.h:9,
                    from include/linux/mutex.h:15,
                    from drivers/block/blk-snap/common.h:11,
                    from drivers/block/blk-snap/ctrl_fops.c:3:
   include/linux/scatterlist.h: In function 'sg_set_buf':
   arch/m68k/include/asm/page_mm.h:169:49: warning: ordered comparison of 
pointer with null pointer [-Wextra]
     169 | #define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void 
*)PAGE_OFFSET && (void *)(kaddr) < high_memory)
         |                                                 ^~
   include/linux/compiler.h:78:42: note: in definition of macro 'unlikely'
      78 | # define unlikely(x) __builtin_expect(!!(x), 0)
         |                                          ^
   include/linux/scatterlist.h:143:2: note: in expansion of macro 'BUG_ON'
     143 |  BUG_ON(!virt_addr_valid(buf));
         |  ^~~~~~
   include/linux/scatterlist.h:143:10: note: in expansion of macro 
'virt_addr_valid'
     143 |  BUG_ON(!virt_addr_valid(buf));
         |          ^~~~~~~~~~~~~~~
   drivers/block/blk-snap/ctrl_fops.c: At top level:
>> drivers/block/blk-snap/ctrl_fops.c:140:5: warning: no previous prototype for 
>> 'ioctl_compatibility_flags' [-Wmissing-prototypes]
     140 | int ioctl_compatibility_flags(unsigned long arg)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/block/blk-snap/ctrl_fops.c:159:5: warning: no previous prototype for 
>> 'ioctl_get_version' [-Wmissing-prototypes]
     159 | int ioctl_get_version(unsigned long arg)
         |     ^~~~~~~~~~~~~~~~~
>> drivers/block/blk-snap/ctrl_fops.c:174:5: warning: no previous prototype for 
>> 'ioctl_tracking_add' [-Wmissing-prototypes]
     174 | int ioctl_tracking_add(unsigned long arg)
         |     ^~~~~~~~~~~~~~~~~~
>> drivers/block/blk-snap/ctrl_fops.c:189:5: warning: no previous prototype for 
>> 'ioctl_tracking_remove' [-Wmissing-prototypes]
     189 | int ioctl_tracking_remove(unsigned long arg)
         |     ^~~~~~~~~~~~~~~~~~~~~
>> drivers/block/blk-snap/ctrl_fops.c:201:5: warning: no previous prototype for 
>> 'ioctl_tracking_collect' [-Wmissing-prototypes]
     201 | int ioctl_tracking_collect(unsigned long arg)
         |     ^~~~~~~~~~~~~~~~~~~~~~
>> drivers/block/blk-snap/ctrl_fops.c:264:5: warning: no previous prototype for 
>> 'ioctl_tracking_block_size' [-Wmissing-prototypes]
     264 | int ioctl_tracking_block_size(unsigned long arg)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/block/blk-snap/ctrl_fops.c:277:5: warning: no previous prototype for 
>> 'ioctl_tracking_read_cbt_map' [-Wmissing-prototypes]
     277 | int ioctl_tracking_read_cbt_map(unsigned long arg)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/block/blk-snap/ctrl_fops.c:295:5: warning: no previous prototype for 
>> 'ioctl_tracking_mark_dirty_blocks' [-Wmissing-prototypes]
     295 | int ioctl_tracking_mark_dirty_blocks(unsigned long arg)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from include/linux/printk.h:7,
                    from include/linux/kernel.h:15,
                    from include/linux/list.h:9,
                    from include/linux/mutex.h:15,
                    from drivers/block/blk-snap/common.h:11,
                    from drivers/block/blk-snap/ctrl_fops.c:3:
   drivers/block/blk-snap/ctrl_fops.c: In function 
'ioctl_tracking_mark_dirty_blocks':
   include/linux/kern_levels.h:5:18: warning: format '%ld' expects argument of 
type 'long int', but argument 2 has type 'size_t' {aka 'unsigned int'} 
[-Wformat=]
       5 | #define KERN_SOH "\001"  /* ASCII Start Of Header */
         |                  ^~~~~~
   include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
      11 | #define KERN_ERR KERN_SOH "3" /* error conditions */
         |                  ^~~~~~~~
   include/linux/printk.h:339:9: note: in expansion of macro 'KERN_ERR'
     339 |  printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~
   drivers/block/blk-snap/ctrl_fops.c:313:3: note: in expansion of macro 
'pr_err'
     313 |   pr_err("Unable to mark dirty blocks: cannot allocate [%ld] 
bytes\n", buffer_size);
         |   ^~~~~~
   drivers/block/blk-snap/ctrl_fops.c: At top level:
>> drivers/block/blk-snap/ctrl_fops.c:335:5: warning: no previous prototype for 
>> 'ioctl_snapshot_create' [-Wmissing-prototypes]
     335 | int ioctl_snapshot_create(unsigned long arg)
         |     ^~~~~~~~~~~~~~~~~~~~~
   In file included from include/linux/printk.h:7,
                    from include/linux/kernel.h:15,
                    from include/linux/list.h:9,
                    from include/linux/mutex.h:15,
                    from drivers/block/blk-snap/common.h:11,
                    from drivers/block/blk-snap/ctrl_fops.c:3:
   drivers/block/blk-snap/ctrl_fops.c: In function 'ioctl_snapshot_create':
   include/linux/kern_levels.h:5:18: warning: format '%ld' expects argument of 
type 'long int', but argument 2 has type 'size_t' {aka 'unsigned int'} 
[-Wformat=]
       5 | #define KERN_SOH "\001"  /* ASCII Start Of Header */
         |                  ^~~~~~
   include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
      11 | #define KERN_ERR KERN_SOH "3" /* error conditions */
         |                  ^~~~~~~~
   include/linux/printk.h:339:9: note: in expansion of macro 'KERN_ERR'
     339 |  printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~
   drivers/block/blk-snap/ctrl_fops.c:352:3: note: in expansion of macro 
'pr_err'
     352 |   pr_err("Unable to create snapshot: cannot allocate [%ld] bytes\n",
         |   ^~~~~~
   include/linux/kern_levels.h:5:18: warning: format '%ld' expects argument of 
type 'long int', but argument 2 has type 'size_t' {aka 'unsigned int'} 
[-Wformat=]
       5 | #define KERN_SOH "\001"  /* ASCII Start Of Header */
         |                  ^~~~~~
   include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
      11 | #define KERN_ERR KERN_SOH "3" /* error conditions */
         |                  ^~~~~~~~
   include/linux/printk.h:339:9: note: in expansion of macro 'KERN_ERR'
     339 |  printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~
   drivers/block/blk-snap/ctrl_fops.c:373:4: note: in expansion of macro 
'pr_err'
     373 |    pr_err("Unable to create snapshot: cannot allocate [%ld] bytes\n",
         |    ^~~~~~
   drivers/block/blk-snap/ctrl_fops.c: At top level:
>> drivers/block/blk-snap/ctrl_fops.c:403:5: warning: no previous prototype for 
>> 'ioctl_snapshot_destroy' [-Wmissing-prototypes]
     403 | int ioctl_snapshot_destroy(unsigned long arg)
         |     ^~~~~~~~~~~~~~~~~~~~~~
>> drivers/block/blk-snap/ctrl_fops.c:428:5: warning: no previous prototype for 
>> 'ioctl_snapstore_create' [-Wmissing-prototypes]
     428 | int ioctl_snapstore_create(unsigned long arg)
         |     ^~~~~~~~~~~~~~~~~~~~~~
>> drivers/block/blk-snap/ctrl_fops.c:470:5: warning: no previous prototype for 
>> 'ioctl_snapstore_file' [-Wmissing-prototypes]
     470 | int ioctl_snapstore_file(unsigned long arg)
         |     ^~~~~~~~~~~~~~~~~~~~
   In file included from include/linux/printk.h:7,
                    from include/linux/kernel.h:15,
                    from include/linux/list.h:9,
                    from include/linux/mutex.h:15,
                    from drivers/block/blk-snap/common.h:11,
                    from drivers/block/blk-snap/ctrl_fops.c:3:
   drivers/block/blk-snap/ctrl_fops.c: In function 'ioctl_snapstore_file':
   include/linux/kern_levels.h:5:18: warning: format '%ld' expects argument of 
type 'long int', but argument 2 has type 'size_t' {aka 'unsigned int'} 
[-Wformat=]
       5 | #define KERN_SOH "\001"  /* ASCII Start Of Header */
         |                  ^~~~~~
   include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
      11 | #define KERN_ERR KERN_SOH "3" /* error conditions */
         |                  ^~~~~~~~
   include/linux/printk.h:339:9: note: in expansion of macro 'KERN_ERR'
     339 |  printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~
   drivers/block/blk-snap/ctrl_fops.c:488:3: note: in expansion of macro 
'pr_err'
     488 |   pr_err("Unable to add file to snapstore: cannot allocate [%ld] 
bytes\n",
         |   ^~~~~~
   drivers/block/blk-snap/ctrl_fops.c: At top level:
>> drivers/block/blk-snap/ctrl_fops.c:506:5: warning: no previous prototype for 
>> 'ioctl_snapstore_memory' [-Wmissing-prototypes]
     506 | int ioctl_snapstore_memory(unsigned long arg)
         |     ^~~~~~~~~~~~~~~~~~~~~~
>> drivers/block/blk-snap/ctrl_fops.c:522:5: warning: no previous prototype for 
>> 'ioctl_snapstore_cleanup' [-Wmissing-prototypes]
     522 | int ioctl_snapstore_cleanup(unsigned long arg)
         |     ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/block/blk-snap/ctrl_fops.c:549:5: warning: no previous prototype for 
>> 'ioctl_snapstore_file_multidev' [-Wmissing-prototypes]
     549 | int ioctl_snapstore_file_multidev(unsigned long arg)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from include/linux/printk.h:7,
                    from include/linux/kernel.h:15,
                    from include/linux/list.h:9,
                    from include/linux/mutex.h:15,
                    from drivers/block/blk-snap/common.h:11,
                    from drivers/block/blk-snap/ctrl_fops.c:3:
   drivers/block/blk-snap/ctrl_fops.c: In function 
'ioctl_snapstore_file_multidev':
   include/linux/kern_levels.h:5:18: warning: format '%ld' expects argument of 
type 'long int', but argument 2 has type 'size_t' {aka 'unsigned int'} 
[-Wformat=]
       5 | #define KERN_SOH "\001"  /* ASCII Start Of Header */
         |                  ^~~~~~
   include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
      11 | #define KERN_ERR KERN_SOH "3" /* error conditions */
         |                  ^~~~~~~~
   include/linux/printk.h:339:9: note: in expansion of macro 'KERN_ERR'
     339 |  printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~
   drivers/block/blk-snap/ctrl_fops.c:568:3: note: in expansion of macro 
'pr_err'
     568 |   pr_err("Unable to add file to multidev snapstore: cannot allocate 
[%ld] bytes\n",
         |   ^~~~~~
   drivers/block/blk-snap/ctrl_fops.c: At top level:
>> drivers/block/blk-snap/ctrl_fops.c:598:5: warning: no previous prototype for 
>> 'ioctl_snapshot_errno' [-Wmissing-prototypes]
     598 | int ioctl_snapshot_errno(unsigned long arg)
         |     ^~~~~~~~~~~~~~~~~~~~
>> drivers/block/blk-snap/ctrl_fops.c:625:5: warning: no previous prototype for 
>> 'ioctl_collect_snapimages' [-Wmissing-prototypes]
     625 | int ioctl_collect_snapimages(unsigned long arg)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~
..

vim +/_blk_deferred_bio_alloc +140 drivers/block/blk-snap/blk_deferred.c

   139  
 > 140  struct bio *_blk_deferred_bio_alloc(int nr_iovecs)
   141  {
   142          struct bio *new_bio = bio_alloc_bioset(GFP_NOIO, nr_iovecs, 
&blk_deferred_bioset);
   143  
   144          if (new_bio == NULL)
   145                  return NULL;
   146  
   147          new_bio->bi_end_io = blk_deferred_bio_endio;
   148          new_bio->bi_private = ((void *)new_bio) - sizeof(struct 
dio_bio_complete);
   149  
   150          return new_bio;
   151  }
   152  
   153  static void blk_deferred_complete(struct blk_deferred_request *dio_req, 
sector_t portion_sect_cnt,
   154                                    int result)
   155  {
   156          atomic64_add(portion_sect_cnt, &dio_req->sect_processed);
   157  
   158          if (dio_req->sect_len == 
atomic64_read(&dio_req->sect_processed))
   159                  complete(&dio_req->complete);
   160  
   161          if (result != SUCCESS) {
   162                  dio_req->result = result;
   163                  pr_err("Failed to process defer IO request. 
errno=%d\n", result);
   164          }
   165  }
   166  
   167  void blk_deferred_bio_endio(struct bio *bio)
   168  {
   169          int local_err;
   170          struct dio_bio_complete *complete_param = (struct 
dio_bio_complete *)bio->bi_private;
   171  
   172          if (complete_param == NULL) {
   173                  //bio already complete
   174          } else {
   175                  if (bio->bi_status != BLK_STS_OK)
   176                          local_err = -EIO;
   177                  else
   178                          local_err = SUCCESS;
   179  
   180                  blk_deferred_complete(complete_param->dio_req, 
complete_param->bio_sect_len,
   181                                        local_err);
   182                  bio->bi_private = NULL;
   183          }
   184  
   185          bio_put(bio);
   186  }
   187  
   188  static inline size_t _page_count_calculate(sector_t size_sector)
   189  {
   190          size_t page_count = size_sector / (PAGE_SIZE / SECTOR_SIZE);
   191  
   192          if (unlikely(size_sector & ((PAGE_SIZE / SECTOR_SIZE) - 1)))
   193                  page_count += 1;
   194  
   195          return page_count;
   196  }
   197  
 > 198  sector_t _blk_deferred_submit_pages(struct block_device *blk_dev,
   199                                      struct blk_deferred_request 
*dio_req, int direction,
   200                                      sector_t arr_ofs, struct page 
**page_array, sector_t ofs_sector,
   201                                      sector_t size_sector)
   202  {
   203          struct bio *bio = NULL;
   204          int nr_iovecs;
   205          int page_inx = arr_ofs >> (PAGE_SHIFT - SECTOR_SHIFT);
   206          sector_t process_sect = 0;
   207  
   208          nr_iovecs = _page_count_calculate(size_sector);
   209  
   210          while (NULL == (bio = _blk_deferred_bio_alloc(nr_iovecs))) {
   211                  size_sector = (size_sector >> 1) & ~((PAGE_SIZE / 
SECTOR_SIZE) - 1);
   212                  if (size_sector == 0)
   213                          return 0;
   214  
   215                  nr_iovecs = _page_count_calculate(size_sector);
   216          }
   217  
   218          bio_set_dev(bio, blk_dev);
   219  
   220          if (direction == READ)
   221                  bio_set_op_attrs(bio, REQ_OP_READ, 0);
   222          else
   223                  bio_set_op_attrs(bio, REQ_OP_WRITE, 0);
   224  
   225          bio->bi_iter.bi_sector = ofs_sector;
   226  
   227          { //add first
   228                  sector_t unordered = arr_ofs & ((PAGE_SIZE / 
SECTOR_SIZE) - 1);
   229                  sector_t bvec_len_sect =
   230                          min_t(sector_t, ((PAGE_SIZE / SECTOR_SIZE) - 
unordered), size_sector);
   231                  struct page *page = page_array[page_inx];
   232                  unsigned int len = (unsigned 
int)from_sectors(bvec_len_sect);
   233                  unsigned int offset = (unsigned 
int)from_sectors(unordered);
   234  
   235                  if (unlikely(page == NULL)) {
   236                          pr_err("NULL found in page array");
   237                          bio_put(bio);
   238                          return 0;
   239                  }
   240                  if (unlikely(bio_add_page(bio, page, len, offset) != 
len)) {
   241                          bio_put(bio);
   242                          return 0;
   243                  }
   244                  ++page_inx;
   245                  process_sect += bvec_len_sect;
   246          }
   247  
   248          while (process_sect < size_sector) {
   249                  sector_t bvec_len_sect =
   250                          min_t(sector_t, (PAGE_SIZE / SECTOR_SIZE), 
(size_sector - process_sect));
   251                  struct page *page = page_array[page_inx];
   252                  unsigned int len = (unsigned 
int)from_sectors(bvec_len_sect);
   253  
   254  
   255                  if (unlikely(page == NULL)) {
   256                          pr_err("NULL found in page array");
   257                          break;
   258                  }
   259                  if (unlikely(bio_add_page(bio, page, len, 0) != len))
   260                          break;
   261  
   262                  ++page_inx;
   263                  process_sect += bvec_len_sect;
   264          }
   265  
   266          ((struct dio_bio_complete *)bio->bi_private)->dio_req = dio_req;
   267          ((struct dio_bio_complete *)bio->bi_private)->bio_sect_len = 
process_sect;
   268  
   269          submit_bio(bio);
   270  
   271          return process_sect;
   272  }
   273  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

Reply via email to