All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: dan.j.williams@intel.com
Cc: linux-block@vger.kernel.org
Subject: [bug report] block: generic request_queue reference counting
Date: Thu, 10 Nov 2016 15:55:38 +0300	[thread overview]
Message-ID: <20161110125538.GD18664@mwanda> (raw)

[ 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

                 reply	other threads:[~2016-11-10 12:55 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20161110125538.GD18664@mwanda \
    --to=dan.carpenter@oracle.com \
    --cc=dan.j.williams@intel.com \
    --cc=linux-block@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.