linux-block.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [bug report] block: generic request_queue reference counting
@ 2016-11-10 12:55 Dan Carpenter
  0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2016-11-10 12:55 UTC (permalink / raw)
  To: dan.j.williams; +Cc: linux-block

[ For some reason, I suddenly started paying attention to these?  Maybe
  I have been grepping XXX out of my warning messages for the past year?
  - dan ]

Hello Dan Williams,

The patch 3ef28e83ab15: "block: generic request_queue reference
counting" from Oct 21, 2015, leads to the following static checker
warning:

	block/blk-core.c:757 blk_alloc_queue_node()
	warn: use 'gfp_mask' here instead of GFP_XXX?

block/blk-core.c
   692  struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
                                                         ^^^^^^^^
   693  {
   694          struct request_queue *q;
   695          int err;
   696  
   697          q = kmem_cache_alloc_node(blk_requestq_cachep,
   698                                  gfp_mask | __GFP_ZERO, node_id);
                                        ^^^^^^^^
   699          if (!q)
   700                  return NULL;
   701  
   702          q->id = ida_simple_get(&blk_queue_ida, 0, 0, gfp_mask);
                                                             ^^^^^^^^
We use this earlier.


   703          if (q->id < 0)
   704                  goto fail_q;
   705  
   706          q->bio_split = bioset_create(BIO_POOL_SIZE, 0);
   707          if (!q->bio_split)
   708                  goto fail_id;
   709  
   710          q->backing_dev_info.ra_pages =
   711                          (VM_MAX_READAHEAD * 1024) / PAGE_SIZE;
   712          q->backing_dev_info.capabilities = BDI_CAP_CGROUP_WRITEBACK;
   713          q->backing_dev_info.name = "block";
   714          q->node = node_id;
   715  
   716          err = bdi_init(&q->backing_dev_info);
   717          if (err)
   718                  goto fail_split;
   719  
   720          setup_timer(&q->backing_dev_info.laptop_mode_wb_timer,
   721                      laptop_mode_timer_fn, (unsigned long) q);
   722          setup_timer(&q->timeout, blk_rq_timed_out_timer, (unsigned long) q);
   723          INIT_LIST_HEAD(&q->queue_head);
   724          INIT_LIST_HEAD(&q->timeout_list);
   725          INIT_LIST_HEAD(&q->icq_list);
   726  #ifdef CONFIG_BLK_CGROUP
   727          INIT_LIST_HEAD(&q->blkg_list);
   728  #endif
   729          INIT_DELAYED_WORK(&q->delay_work, blk_delay_work);
   730  
   731          kobject_init(&q->kobj, &blk_queue_ktype);
   732  
   733          mutex_init(&q->sysfs_lock);
   734          spin_lock_init(&q->__queue_lock);
   735  
   736          /*
   737           * By default initialize queue_lock to internal lock and driver can
   738           * override it later if need be.
   739           */
   740          q->queue_lock = &q->__queue_lock;
   741  
   742          /*
   743           * A queue starts its life with bypass turned on to avoid
   744           * unnecessary bypass on/off overhead and nasty surprises during
   745           * init.  The initial bypass will be finished when the queue is
   746           * registered by blk_register_queue().
   747           */
   748          q->bypass_depth = 1;
   749          __set_bit(QUEUE_FLAG_BYPASS, &q->queue_flags);
   750  
   751          init_waitqueue_head(&q->mq_freeze_wq);
   752  
   753          /*
   754           * Init percpu_ref in atomic mode so that it's faster to shutdown.
   755           * See blk_register_queue() for details.
   756           */
   757          if (percpu_ref_init(&q->q_usage_counter,
   758                                  blk_queue_usage_counter_release,
   759                                  PERCPU_REF_INIT_ATOMIC, GFP_KERNEL))
                                                                ^^^^^^^^^^
Should probably use it here too.

   760                  goto fail_bdi;
   761  
   762          if (blkcg_init_queue(q))
   763                  goto fail_ref;
   764  
   765          return q;
   766  
   767  fail_ref:
   768          percpu_ref_exit(&q->q_usage_counter);
   769  fail_bdi:
   770          bdi_destroy(&q->backing_dev_info);
   771  fail_split:

regards,
dan carpenter

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2016-11-10 12:55 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-10 12:55 [bug report] block: generic request_queue reference counting Dan Carpenter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).