locking/atomic, kref: Add kref_read()
Since we need to change the implementation, stop exposing internals. Provide kref_read() to read the current reference count; typically used for debug messages. Kills two anti-patterns: atomic_read(&kref->refcount) kref->refcount.counter Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: linux-kernel@vger.kernel.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
Родитель
1e24edca05
Коммит
2c935bc572
|
@ -520,7 +520,7 @@ static void mod_rq_state(struct drbd_request *req, struct bio_and_error *m,
|
|||
/* Completion does it's own kref_put. If we are going to
|
||||
* kref_sub below, we need req to be still around then. */
|
||||
int at_least = k_put + !!c_put;
|
||||
int refcount = atomic_read(&req->kref.refcount);
|
||||
int refcount = kref_read(&req->kref);
|
||||
if (refcount < at_least)
|
||||
drbd_err(device,
|
||||
"mod_rq_state: Logic BUG: %x -> %x: refcount = %d, should be >= %d\n",
|
||||
|
|
|
@ -1535,7 +1535,7 @@ static bool obj_request_overlaps_parent(struct rbd_obj_request *obj_request)
|
|||
static void rbd_obj_request_get(struct rbd_obj_request *obj_request)
|
||||
{
|
||||
dout("%s: obj %p (was %d)\n", __func__, obj_request,
|
||||
atomic_read(&obj_request->kref.refcount));
|
||||
kref_read(&obj_request->kref));
|
||||
kref_get(&obj_request->kref);
|
||||
}
|
||||
|
||||
|
@ -1544,14 +1544,14 @@ static void rbd_obj_request_put(struct rbd_obj_request *obj_request)
|
|||
{
|
||||
rbd_assert(obj_request != NULL);
|
||||
dout("%s: obj %p (was %d)\n", __func__, obj_request,
|
||||
atomic_read(&obj_request->kref.refcount));
|
||||
kref_read(&obj_request->kref));
|
||||
kref_put(&obj_request->kref, rbd_obj_request_destroy);
|
||||
}
|
||||
|
||||
static void rbd_img_request_get(struct rbd_img_request *img_request)
|
||||
{
|
||||
dout("%s: img %p (was %d)\n", __func__, img_request,
|
||||
atomic_read(&img_request->kref.refcount));
|
||||
kref_read(&img_request->kref));
|
||||
kref_get(&img_request->kref);
|
||||
}
|
||||
|
||||
|
@ -1562,7 +1562,7 @@ static void rbd_img_request_put(struct rbd_img_request *img_request)
|
|||
{
|
||||
rbd_assert(img_request != NULL);
|
||||
dout("%s: img %p (was %d)\n", __func__, img_request,
|
||||
atomic_read(&img_request->kref.refcount));
|
||||
kref_read(&img_request->kref));
|
||||
if (img_request_child_test(img_request))
|
||||
kref_put(&img_request->kref, rbd_parent_request_destroy);
|
||||
else
|
||||
|
|
|
@ -767,7 +767,7 @@ static void virtblk_remove(struct virtio_device *vdev)
|
|||
/* Stop all the virtqueues. */
|
||||
vdev->config->reset(vdev);
|
||||
|
||||
refc = atomic_read(&disk_to_dev(vblk->disk)->kobj.kref.refcount);
|
||||
refc = kref_read(&disk_to_dev(vblk->disk)->kobj.kref);
|
||||
put_disk(vblk->disk);
|
||||
vdev->config->del_vqs(vdev);
|
||||
kfree(vblk->vqs);
|
||||
|
|
|
@ -376,7 +376,7 @@ void drm_gem_cma_describe(struct drm_gem_cma_object *cma_obj,
|
|||
off = drm_vma_node_start(&obj->vma_node);
|
||||
|
||||
seq_printf(m, "%2d (%2d) %08llx %pad %p %zu",
|
||||
obj->name, obj->refcount.refcount.counter,
|
||||
obj->name, kref_read(&obj->refcount),
|
||||
off, &cma_obj->paddr, cma_obj->vaddr, obj->size);
|
||||
|
||||
seq_printf(m, "\n");
|
||||
|
|
|
@ -118,7 +118,7 @@ static int drm_gem_one_name_info(int id, void *ptr, void *data)
|
|||
seq_printf(m, "%6d %8zd %7d %8d\n",
|
||||
obj->name, obj->size,
|
||||
obj->handle_count,
|
||||
atomic_read(&obj->refcount.refcount));
|
||||
kref_read(&obj->refcount));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -159,7 +159,7 @@ EXPORT_SYMBOL(drm_mode_object_find);
|
|||
void drm_mode_object_unreference(struct drm_mode_object *obj)
|
||||
{
|
||||
if (obj->free_cb) {
|
||||
DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, atomic_read(&obj->refcount.refcount));
|
||||
DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, kref_read(&obj->refcount));
|
||||
kref_put(&obj->refcount, obj->free_cb);
|
||||
}
|
||||
}
|
||||
|
@ -176,7 +176,7 @@ EXPORT_SYMBOL(drm_mode_object_unreference);
|
|||
void drm_mode_object_reference(struct drm_mode_object *obj)
|
||||
{
|
||||
if (obj->free_cb) {
|
||||
DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, atomic_read(&obj->refcount.refcount));
|
||||
DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, kref_read(&obj->refcount));
|
||||
kref_get(&obj->refcount);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -486,7 +486,7 @@ static void etnaviv_gem_describe(struct drm_gem_object *obj, struct seq_file *m)
|
|||
|
||||
seq_printf(m, "%08x: %c %2d (%2d) %08lx %p %zd\n",
|
||||
etnaviv_obj->flags, is_active(etnaviv_obj) ? 'A' : 'I',
|
||||
obj->name, obj->refcount.refcount.counter,
|
||||
obj->name, kref_read(&obj->refcount),
|
||||
off, etnaviv_obj->vaddr, obj->size);
|
||||
|
||||
rcu_read_lock();
|
||||
|
|
|
@ -256,7 +256,7 @@ extern void drm_gem_object_unreference_unlocked(struct drm_gem_object *);
|
|||
static inline bool
|
||||
i915_gem_object_is_dead(const struct drm_i915_gem_object *obj)
|
||||
{
|
||||
return atomic_read(&obj->base.refcount.refcount) == 0;
|
||||
return kref_read(&obj->base.refcount) == 0;
|
||||
}
|
||||
|
||||
static inline bool
|
||||
|
|
|
@ -640,7 +640,7 @@ void msm_gem_describe(struct drm_gem_object *obj, struct seq_file *m)
|
|||
|
||||
seq_printf(m, "%08x: %c %2d (%2d) %08llx %p\t",
|
||||
msm_obj->flags, is_active(msm_obj) ? 'A' : 'I',
|
||||
obj->name, obj->refcount.refcount.counter,
|
||||
obj->name, kref_read(&obj->refcount),
|
||||
off, msm_obj->vaddr);
|
||||
|
||||
for (id = 0; id < priv->num_aspaces; id++)
|
||||
|
|
|
@ -527,7 +527,7 @@ static bool nouveau_fence_no_signaling(struct dma_fence *f)
|
|||
* caller should have a reference on the fence,
|
||||
* else fence could get freed here
|
||||
*/
|
||||
WARN_ON(atomic_read(&fence->base.refcount.refcount) <= 1);
|
||||
WARN_ON(kref_read(&fence->base.refcount) <= 1);
|
||||
|
||||
/*
|
||||
* This needs uevents to work correctly, but dma_fence_add_callback relies on
|
||||
|
|
|
@ -1033,7 +1033,7 @@ void omap_gem_describe(struct drm_gem_object *obj, struct seq_file *m)
|
|||
off = drm_vma_node_start(&obj->vma_node);
|
||||
|
||||
seq_printf(m, "%08x: %2d (%2d) %08llx %pad (%2d) %p %4d",
|
||||
omap_obj->flags, obj->name, obj->refcount.refcount.counter,
|
||||
omap_obj->flags, obj->name, kref_read(&obj->refcount),
|
||||
off, &omap_obj->paddr, omap_obj->paddr_cnt,
|
||||
omap_obj->vaddr, omap_obj->roll);
|
||||
|
||||
|
|
|
@ -140,8 +140,8 @@ static void ttm_bo_release_list(struct kref *list_kref)
|
|||
struct ttm_bo_device *bdev = bo->bdev;
|
||||
size_t acc_size = bo->acc_size;
|
||||
|
||||
BUG_ON(atomic_read(&bo->list_kref.refcount));
|
||||
BUG_ON(atomic_read(&bo->kref.refcount));
|
||||
BUG_ON(kref_read(&bo->list_kref));
|
||||
BUG_ON(kref_read(&bo->kref));
|
||||
BUG_ON(atomic_read(&bo->cpu_writers));
|
||||
BUG_ON(bo->mem.mm_node != NULL);
|
||||
BUG_ON(!list_empty(&bo->lru));
|
||||
|
|
|
@ -304,7 +304,7 @@ bool ttm_ref_object_exists(struct ttm_object_file *tfile,
|
|||
* Verify that the ref->obj pointer was actually valid!
|
||||
*/
|
||||
rmb();
|
||||
if (unlikely(atomic_read(&ref->kref.refcount) == 0))
|
||||
if (unlikely(kref_read(&ref->kref) == 0))
|
||||
goto out_false;
|
||||
|
||||
rcu_read_unlock();
|
||||
|
|
|
@ -55,14 +55,14 @@
|
|||
|
||||
#define put_ep(ep) { \
|
||||
PDBG("put_ep (via %s:%u) ep %p refcnt %d\n", __func__, __LINE__, \
|
||||
ep, atomic_read(&((ep)->kref.refcount))); \
|
||||
WARN_ON(atomic_read(&((ep)->kref.refcount)) < 1); \
|
||||
ep, kref_read(&((ep)->kref))); \
|
||||
WARN_ON(kref_read(&((ep)->kref)) < 1); \
|
||||
kref_put(&((ep)->kref), __free_ep); \
|
||||
}
|
||||
|
||||
#define get_ep(ep) { \
|
||||
PDBG("get_ep (via %s:%u) ep %p, refcnt %d\n", __func__, __LINE__, \
|
||||
ep, atomic_read(&((ep)->kref.refcount))); \
|
||||
ep, kref_read(&((ep)->kref))); \
|
||||
kref_get(&((ep)->kref)); \
|
||||
}
|
||||
|
||||
|
|
|
@ -961,7 +961,7 @@ int iwch_modify_qp(struct iwch_dev *rhp, struct iwch_qp *qhp,
|
|||
case IWCH_QP_STATE_RTS:
|
||||
switch (attrs->next_state) {
|
||||
case IWCH_QP_STATE_CLOSING:
|
||||
BUG_ON(atomic_read(&qhp->ep->com.kref.refcount) < 2);
|
||||
BUG_ON(kref_read(&qhp->ep->com.kref) < 2);
|
||||
qhp->attr.state = IWCH_QP_STATE_CLOSING;
|
||||
if (!internal) {
|
||||
abort=0;
|
||||
|
|
|
@ -654,14 +654,14 @@ enum c4iw_mmid_state {
|
|||
|
||||
#define c4iw_put_ep(ep) { \
|
||||
PDBG("put_ep (via %s:%u) ep %p refcnt %d\n", __func__, __LINE__, \
|
||||
ep, atomic_read(&((ep)->kref.refcount))); \
|
||||
WARN_ON(atomic_read(&((ep)->kref.refcount)) < 1); \
|
||||
ep, kref_read(&((ep)->kref))); \
|
||||
WARN_ON(kref_read(&((ep)->kref)) < 1); \
|
||||
kref_put(&((ep)->kref), _c4iw_free_ep); \
|
||||
}
|
||||
|
||||
#define c4iw_get_ep(ep) { \
|
||||
PDBG("get_ep (via %s:%u) ep %p, refcnt %d\n", __func__, __LINE__, \
|
||||
ep, atomic_read(&((ep)->kref.refcount))); \
|
||||
ep, kref_read(&((ep)->kref))); \
|
||||
kref_get(&((ep)->kref)); \
|
||||
}
|
||||
void _c4iw_free_ep(struct kref *kref);
|
||||
|
|
|
@ -1503,7 +1503,7 @@ int c4iw_modify_qp(struct c4iw_dev *rhp, struct c4iw_qp *qhp,
|
|||
case C4IW_QP_STATE_RTS:
|
||||
switch (attrs->next_state) {
|
||||
case C4IW_QP_STATE_CLOSING:
|
||||
BUG_ON(atomic_read(&qhp->ep->com.kref.refcount) < 2);
|
||||
BUG_ON(kref_read(&qhp->ep->com.kref) < 2);
|
||||
t4_set_wq_in_error(&qhp->wq);
|
||||
set_state(qhp, C4IW_QP_STATE_CLOSING);
|
||||
ep = qhp->ep;
|
||||
|
|
|
@ -80,7 +80,7 @@ usnic_ib_show_config(struct device *device, struct device_attribute *attr,
|
|||
left = PAGE_SIZE;
|
||||
|
||||
mutex_lock(&us_ibdev->usdev_lock);
|
||||
if (atomic_read(&us_ibdev->vf_cnt.refcount) > 0) {
|
||||
if (kref_read(&us_ibdev->vf_cnt) > 0) {
|
||||
char *busname;
|
||||
|
||||
/*
|
||||
|
@ -99,7 +99,7 @@ usnic_ib_show_config(struct device *device, struct device_attribute *attr,
|
|||
PCI_FUNC(us_ibdev->pdev->devfn),
|
||||
netdev_name(us_ibdev->netdev),
|
||||
us_ibdev->ufdev->mac,
|
||||
atomic_read(&us_ibdev->vf_cnt.refcount));
|
||||
kref_read(&us_ibdev->vf_cnt));
|
||||
UPDATE_PTR_LEFT(n, ptr, left);
|
||||
|
||||
for (res_type = USNIC_VNIC_RES_TYPE_EOL;
|
||||
|
@ -147,7 +147,7 @@ usnic_ib_show_max_vf(struct device *device, struct device_attribute *attr,
|
|||
us_ibdev = container_of(device, struct usnic_ib_dev, ib_dev.dev);
|
||||
|
||||
return scnprintf(buf, PAGE_SIZE, "%u\n",
|
||||
atomic_read(&us_ibdev->vf_cnt.refcount));
|
||||
kref_read(&us_ibdev->vf_cnt));
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
|
|
|
@ -291,11 +291,11 @@ int usnic_ib_query_device(struct ib_device *ibdev,
|
|||
qp_per_vf = max(us_ibdev->vf_res_cnt[USNIC_VNIC_RES_TYPE_WQ],
|
||||
us_ibdev->vf_res_cnt[USNIC_VNIC_RES_TYPE_RQ]);
|
||||
props->max_qp = qp_per_vf *
|
||||
atomic_read(&us_ibdev->vf_cnt.refcount);
|
||||
kref_read(&us_ibdev->vf_cnt);
|
||||
props->device_cap_flags = IB_DEVICE_PORT_ACTIVE_EVENT |
|
||||
IB_DEVICE_SYS_IMAGE_GUID | IB_DEVICE_BLOCK_MULTICAST_LOOPBACK;
|
||||
props->max_cq = us_ibdev->vf_res_cnt[USNIC_VNIC_RES_TYPE_CQ] *
|
||||
atomic_read(&us_ibdev->vf_cnt.refcount);
|
||||
kref_read(&us_ibdev->vf_cnt);
|
||||
props->max_pd = USNIC_UIOM_MAX_PD_CNT;
|
||||
props->max_mr = USNIC_UIOM_MAX_MR_CNT;
|
||||
props->local_ca_ack_delay = 0;
|
||||
|
|
|
@ -1396,7 +1396,7 @@ int genwqe_device_remove(struct genwqe_dev *cd)
|
|||
* application which will decrease this reference from
|
||||
* 1/unused to 0/illegal and not from 2/used 1/empty.
|
||||
*/
|
||||
rc = atomic_read(&cd->cdev_genwqe.kobj.kref.refcount);
|
||||
rc = kref_read(&cd->cdev_genwqe.kobj.kref);
|
||||
if (rc != 1) {
|
||||
dev_err(&pci_dev->dev,
|
||||
"[%s] err: cdev_genwqe...refcount=%d\n", __func__, rc);
|
||||
|
|
|
@ -67,7 +67,7 @@ static ssize_t mei_dbgfs_read_meclients(struct file *fp, char __user *ubuf,
|
|||
me_cl->props.max_number_of_connections,
|
||||
me_cl->props.max_msg_length,
|
||||
me_cl->props.single_recv_buf,
|
||||
atomic_read(&me_cl->refcnt.refcount));
|
||||
kref_read(&me_cl->refcnt));
|
||||
|
||||
mei_me_cl_put(me_cl);
|
||||
}
|
||||
|
|
|
@ -155,7 +155,7 @@ static void pnv_php_detach_device_nodes(struct device_node *parent)
|
|||
pnv_php_detach_device_nodes(dn);
|
||||
|
||||
of_node_put(dn);
|
||||
refcount = atomic_read(&dn->kobj.kref.refcount);
|
||||
refcount = kref_read(&dn->kobj.kref);
|
||||
if (refcount != 1)
|
||||
pr_warn("Invalid refcount %d on <%s>\n",
|
||||
refcount, of_node_full_name(dn));
|
||||
|
|
|
@ -345,7 +345,7 @@ EXPORT_SYMBOL_GPL(pci_create_slot);
|
|||
void pci_destroy_slot(struct pci_slot *slot)
|
||||
{
|
||||
dev_dbg(&slot->bus->dev, "dev %02x, dec refcount to %d\n",
|
||||
slot->number, atomic_read(&slot->kobj.kref.refcount) - 1);
|
||||
slot->number, kref_read(&slot->kobj.kref) - 1);
|
||||
|
||||
mutex_lock(&pci_slot_mutex);
|
||||
kobject_put(&slot->kobj);
|
||||
|
|
|
@ -74,7 +74,7 @@ static void bnx2fc_cmd_timeout(struct work_struct *work)
|
|||
&io_req->req_flags)) {
|
||||
/* Handle internally generated ABTS timeout */
|
||||
BNX2FC_IO_DBG(io_req, "ABTS timed out refcnt = %d\n",
|
||||
io_req->refcount.refcount.counter);
|
||||
kref_read(&io_req->refcount));
|
||||
if (!(test_and_set_bit(BNX2FC_FLAG_ABTS_DONE,
|
||||
&io_req->req_flags))) {
|
||||
/*
|
||||
|
@ -1141,7 +1141,7 @@ int bnx2fc_eh_abort(struct scsi_cmnd *sc_cmd)
|
|||
return SUCCESS;
|
||||
}
|
||||
BNX2FC_IO_DBG(io_req, "eh_abort - refcnt = %d\n",
|
||||
io_req->refcount.refcount.counter);
|
||||
kref_read(&io_req->refcount));
|
||||
|
||||
/* Hold IO request across abort processing */
|
||||
kref_get(&io_req->refcount);
|
||||
|
@ -1299,7 +1299,7 @@ void bnx2fc_process_cleanup_compl(struct bnx2fc_cmd *io_req,
|
|||
{
|
||||
BNX2FC_IO_DBG(io_req, "Entered process_cleanup_compl "
|
||||
"refcnt = %d, cmd_type = %d\n",
|
||||
io_req->refcount.refcount.counter, io_req->cmd_type);
|
||||
kref_read(&io_req->refcount), io_req->cmd_type);
|
||||
bnx2fc_scsi_done(io_req, DID_ERROR);
|
||||
kref_put(&io_req->refcount, bnx2fc_cmd_release);
|
||||
if (io_req->wait_for_comp)
|
||||
|
@ -1318,7 +1318,7 @@ void bnx2fc_process_abts_compl(struct bnx2fc_cmd *io_req,
|
|||
BNX2FC_IO_DBG(io_req, "Entered process_abts_compl xid = 0x%x"
|
||||
"refcnt = %d, cmd_type = %d\n",
|
||||
io_req->xid,
|
||||
io_req->refcount.refcount.counter, io_req->cmd_type);
|
||||
kref_read(&io_req->refcount), io_req->cmd_type);
|
||||
|
||||
if (test_and_set_bit(BNX2FC_FLAG_ABTS_DONE,
|
||||
&io_req->req_flags)) {
|
||||
|
|
|
@ -301,7 +301,7 @@ static inline void __cxgbi_sock_put(const char *fn, struct cxgbi_sock *csk)
|
|||
{
|
||||
log_debug(1 << CXGBI_DBG_SOCK,
|
||||
"%s, put csk 0x%p, ref %u-1.\n",
|
||||
fn, csk, atomic_read(&csk->refcnt.refcount));
|
||||
fn, csk, kref_read(&csk->refcnt));
|
||||
kref_put(&csk->refcnt, cxgbi_sock_free);
|
||||
}
|
||||
#define cxgbi_sock_put(csk) __cxgbi_sock_put(__func__, csk)
|
||||
|
@ -310,7 +310,7 @@ static inline void __cxgbi_sock_get(const char *fn, struct cxgbi_sock *csk)
|
|||
{
|
||||
log_debug(1 << CXGBI_DBG_SOCK,
|
||||
"%s, get csk 0x%p, ref %u+1.\n",
|
||||
fn, csk, atomic_read(&csk->refcnt.refcount));
|
||||
fn, csk, kref_read(&csk->refcnt));
|
||||
kref_get(&csk->refcnt);
|
||||
}
|
||||
#define cxgbi_sock_get(csk) __cxgbi_sock_get(__func__, csk)
|
||||
|
|
|
@ -607,7 +607,7 @@ lpfc_debugfs_nodelist_data(struct lpfc_vport *vport, char *buf, int size)
|
|||
len += snprintf(buf+len, size-len, "usgmap:%x ",
|
||||
ndlp->nlp_usg_map);
|
||||
len += snprintf(buf+len, size-len, "refcnt:%x",
|
||||
atomic_read(&ndlp->kref.refcount));
|
||||
kref_read(&ndlp->kref));
|
||||
len += snprintf(buf+len, size-len, "\n");
|
||||
}
|
||||
spin_unlock_irq(shost->host_lock);
|
||||
|
|
|
@ -3688,7 +3688,7 @@ lpfc_mbx_cmpl_dflt_rpi(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
|
|||
lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_NODE,
|
||||
"0006 rpi%x DID:%x flg:%x %d map:%x %p\n",
|
||||
ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag,
|
||||
atomic_read(&ndlp->kref.refcount),
|
||||
kref_read(&ndlp->kref),
|
||||
ndlp->nlp_usg_map, ndlp);
|
||||
if (NLP_CHK_NODE_ACT(ndlp)) {
|
||||
lpfc_nlp_put(ndlp);
|
||||
|
|
|
@ -3440,7 +3440,7 @@ lpfc_mbx_cmpl_reg_login(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
|
|||
lpfc_printf_vlog(vport, KERN_INFO, LOG_SLI,
|
||||
"0002 rpi:%x DID:%x flg:%x %d map:%x %p\n",
|
||||
ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag,
|
||||
atomic_read(&ndlp->kref.refcount),
|
||||
kref_read(&ndlp->kref),
|
||||
ndlp->nlp_usg_map, ndlp);
|
||||
if (ndlp->nlp_flag & NLP_REG_LOGIN_SEND)
|
||||
ndlp->nlp_flag &= ~NLP_REG_LOGIN_SEND;
|
||||
|
@ -3861,7 +3861,7 @@ out:
|
|||
lpfc_printf_vlog(vport, KERN_INFO, LOG_SLI,
|
||||
"0003 rpi:%x DID:%x flg:%x %d map%x %p\n",
|
||||
ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag,
|
||||
atomic_read(&ndlp->kref.refcount),
|
||||
kref_read(&ndlp->kref),
|
||||
ndlp->nlp_usg_map, ndlp);
|
||||
|
||||
if (vport->port_state < LPFC_VPORT_READY) {
|
||||
|
@ -4238,7 +4238,7 @@ lpfc_enable_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
|
|||
"0277 lpfc_enable_node: ndlp:x%p "
|
||||
"usgmap:x%x refcnt:%d\n",
|
||||
(void *)ndlp, ndlp->nlp_usg_map,
|
||||
atomic_read(&ndlp->kref.refcount));
|
||||
kref_read(&ndlp->kref));
|
||||
return NULL;
|
||||
}
|
||||
/* The ndlp should not already be in active mode */
|
||||
|
@ -4248,7 +4248,7 @@ lpfc_enable_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
|
|||
"0278 lpfc_enable_node: ndlp:x%p "
|
||||
"usgmap:x%x refcnt:%d\n",
|
||||
(void *)ndlp, ndlp->nlp_usg_map,
|
||||
atomic_read(&ndlp->kref.refcount));
|
||||
kref_read(&ndlp->kref));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -4272,7 +4272,7 @@ lpfc_enable_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
|
|||
"0008 rpi:%x DID:%x flg:%x refcnt:%d "
|
||||
"map:%x %p\n", ndlp->nlp_rpi, ndlp->nlp_DID,
|
||||
ndlp->nlp_flag,
|
||||
atomic_read(&ndlp->kref.refcount),
|
||||
kref_read(&ndlp->kref),
|
||||
ndlp->nlp_usg_map, ndlp);
|
||||
}
|
||||
|
||||
|
@ -4546,7 +4546,7 @@ lpfc_unreg_rpi(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp)
|
|||
(bf_get(lpfc_sli_intf_if_type,
|
||||
&phba->sli4_hba.sli_intf) ==
|
||||
LPFC_SLI_INTF_IF_TYPE_2) &&
|
||||
(atomic_read(&ndlp->kref.refcount) > 0)) {
|
||||
(kref_read(&ndlp->kref) > 0)) {
|
||||
mbox->context1 = lpfc_nlp_get(ndlp);
|
||||
mbox->mbox_cmpl =
|
||||
lpfc_sli4_unreg_rpi_cmpl_clr;
|
||||
|
@ -4695,14 +4695,14 @@ lpfc_cleanup_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp)
|
|||
"0280 lpfc_cleanup_node: ndlp:x%p "
|
||||
"usgmap:x%x refcnt:%d\n",
|
||||
(void *)ndlp, ndlp->nlp_usg_map,
|
||||
atomic_read(&ndlp->kref.refcount));
|
||||
kref_read(&ndlp->kref));
|
||||
lpfc_dequeue_node(vport, ndlp);
|
||||
} else {
|
||||
lpfc_printf_vlog(vport, KERN_WARNING, LOG_NODE,
|
||||
"0281 lpfc_cleanup_node: ndlp:x%p "
|
||||
"usgmap:x%x refcnt:%d\n",
|
||||
(void *)ndlp, ndlp->nlp_usg_map,
|
||||
atomic_read(&ndlp->kref.refcount));
|
||||
kref_read(&ndlp->kref));
|
||||
lpfc_disable_node(vport, ndlp);
|
||||
}
|
||||
|
||||
|
@ -4791,7 +4791,7 @@ lpfc_nlp_remove(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp)
|
|||
lpfc_printf_vlog(vport, KERN_INFO, LOG_NODE,
|
||||
"0005 rpi:%x DID:%x flg:%x %d map:%x %p\n",
|
||||
ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag,
|
||||
atomic_read(&ndlp->kref.refcount),
|
||||
kref_read(&ndlp->kref),
|
||||
ndlp->nlp_usg_map, ndlp);
|
||||
if ((mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL))
|
||||
!= NULL) {
|
||||
|
@ -5557,7 +5557,7 @@ lpfc_mbx_cmpl_fdmi_reg_login(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
|
|||
lpfc_printf_vlog(vport, KERN_INFO, LOG_SLI,
|
||||
"0004 rpi:%x DID:%x flg:%x %d map:%x %p\n",
|
||||
ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag,
|
||||
atomic_read(&ndlp->kref.refcount),
|
||||
kref_read(&ndlp->kref),
|
||||
ndlp->nlp_usg_map, ndlp);
|
||||
/*
|
||||
* Start issuing Fabric-Device Management Interface (FDMI) command to
|
||||
|
@ -5728,7 +5728,7 @@ lpfc_nlp_init(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
|
|||
"0007 rpi:%x DID:%x flg:%x refcnt:%d "
|
||||
"map:%x %p\n", ndlp->nlp_rpi, ndlp->nlp_DID,
|
||||
ndlp->nlp_flag,
|
||||
atomic_read(&ndlp->kref.refcount),
|
||||
kref_read(&ndlp->kref),
|
||||
ndlp->nlp_usg_map, ndlp);
|
||||
|
||||
ndlp->active_rrqs_xri_bitmap =
|
||||
|
@ -5767,7 +5767,7 @@ lpfc_nlp_release(struct kref *kref)
|
|||
"0279 lpfc_nlp_release: ndlp:x%p did %x "
|
||||
"usgmap:x%x refcnt:%d rpi:%x\n",
|
||||
(void *)ndlp, ndlp->nlp_DID, ndlp->nlp_usg_map,
|
||||
atomic_read(&ndlp->kref.refcount), ndlp->nlp_rpi);
|
||||
kref_read(&ndlp->kref), ndlp->nlp_rpi);
|
||||
|
||||
/* remove ndlp from action. */
|
||||
lpfc_nlp_remove(ndlp->vport, ndlp);
|
||||
|
@ -5804,7 +5804,7 @@ lpfc_nlp_get(struct lpfc_nodelist *ndlp)
|
|||
lpfc_debugfs_disc_trc(ndlp->vport, LPFC_DISC_TRC_NODE,
|
||||
"node get: did:x%x flg:x%x refcnt:x%x",
|
||||
ndlp->nlp_DID, ndlp->nlp_flag,
|
||||
atomic_read(&ndlp->kref.refcount));
|
||||
kref_read(&ndlp->kref));
|
||||
/* The check of ndlp usage to prevent incrementing the
|
||||
* ndlp reference count that is in the process of being
|
||||
* released.
|
||||
|
@ -5817,7 +5817,7 @@ lpfc_nlp_get(struct lpfc_nodelist *ndlp)
|
|||
"0276 lpfc_nlp_get: ndlp:x%p "
|
||||
"usgmap:x%x refcnt:%d\n",
|
||||
(void *)ndlp, ndlp->nlp_usg_map,
|
||||
atomic_read(&ndlp->kref.refcount));
|
||||
kref_read(&ndlp->kref));
|
||||
return NULL;
|
||||
} else
|
||||
kref_get(&ndlp->kref);
|
||||
|
@ -5844,7 +5844,7 @@ lpfc_nlp_put(struct lpfc_nodelist *ndlp)
|
|||
lpfc_debugfs_disc_trc(ndlp->vport, LPFC_DISC_TRC_NODE,
|
||||
"node put: did:x%x flg:x%x refcnt:x%x",
|
||||
ndlp->nlp_DID, ndlp->nlp_flag,
|
||||
atomic_read(&ndlp->kref.refcount));
|
||||
kref_read(&ndlp->kref));
|
||||
phba = ndlp->phba;
|
||||
spin_lock_irqsave(&phba->ndlp_lock, flags);
|
||||
/* Check the ndlp memory free acknowledge flag to avoid the
|
||||
|
@ -5857,7 +5857,7 @@ lpfc_nlp_put(struct lpfc_nodelist *ndlp)
|
|||
"0274 lpfc_nlp_put: ndlp:x%p "
|
||||
"usgmap:x%x refcnt:%d\n",
|
||||
(void *)ndlp, ndlp->nlp_usg_map,
|
||||
atomic_read(&ndlp->kref.refcount));
|
||||
kref_read(&ndlp->kref));
|
||||
return 1;
|
||||
}
|
||||
/* Check the ndlp inactivate log flag to avoid the possible
|
||||
|
@ -5870,7 +5870,7 @@ lpfc_nlp_put(struct lpfc_nodelist *ndlp)
|
|||
"0275 lpfc_nlp_put: ndlp:x%p "
|
||||
"usgmap:x%x refcnt:%d\n",
|
||||
(void *)ndlp, ndlp->nlp_usg_map,
|
||||
atomic_read(&ndlp->kref.refcount));
|
||||
kref_read(&ndlp->kref));
|
||||
return 1;
|
||||
}
|
||||
/* For last put, mark the ndlp usage flags to make sure no
|
||||
|
@ -5878,7 +5878,7 @@ lpfc_nlp_put(struct lpfc_nodelist *ndlp)
|
|||
* in between the process when the final kref_put has been
|
||||
* invoked on this ndlp.
|
||||
*/
|
||||
if (atomic_read(&ndlp->kref.refcount) == 1) {
|
||||
if (kref_read(&ndlp->kref) == 1) {
|
||||
/* Indicate ndlp is put to inactive state. */
|
||||
NLP_SET_IACT_REQ(ndlp);
|
||||
/* Acknowledge ndlp memory free has been seen. */
|
||||
|
@ -5906,8 +5906,8 @@ lpfc_nlp_not_used(struct lpfc_nodelist *ndlp)
|
|||
lpfc_debugfs_disc_trc(ndlp->vport, LPFC_DISC_TRC_NODE,
|
||||
"node not used: did:x%x flg:x%x refcnt:x%x",
|
||||
ndlp->nlp_DID, ndlp->nlp_flag,
|
||||
atomic_read(&ndlp->kref.refcount));
|
||||
if (atomic_read(&ndlp->kref.refcount) == 1)
|
||||
kref_read(&ndlp->kref));
|
||||
if (kref_read(&ndlp->kref) == 1)
|
||||
if (lpfc_nlp_put(ndlp))
|
||||
return 1;
|
||||
return 0;
|
||||
|
|
|
@ -2660,8 +2660,7 @@ lpfc_cleanup(struct lpfc_vport *vport)
|
|||
"usgmap:x%x refcnt:%d\n",
|
||||
ndlp->nlp_DID, (void *)ndlp,
|
||||
ndlp->nlp_usg_map,
|
||||
atomic_read(
|
||||
&ndlp->kref.refcount));
|
||||
kref_read(&ndlp->kref));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -371,7 +371,7 @@ static int tcm_qla2xxx_write_pending(struct se_cmd *se_cmd)
|
|||
*/
|
||||
pr_debug("write_pending aborted cmd[%p] refcount %d "
|
||||
"transport_state %x, t_state %x, se_cmd_flags %x\n",
|
||||
cmd,cmd->se_cmd.cmd_kref.refcount.counter,
|
||||
cmd, kref_read(&cmd->se_cmd.cmd_kref),
|
||||
cmd->se_cmd.transport_state,
|
||||
cmd->se_cmd.t_state,
|
||||
cmd->se_cmd.se_cmd_flags);
|
||||
|
@ -584,7 +584,7 @@ static int tcm_qla2xxx_queue_data_in(struct se_cmd *se_cmd)
|
|||
*/
|
||||
pr_debug("queue_data_in aborted cmd[%p] refcount %d "
|
||||
"transport_state %x, t_state %x, se_cmd_flags %x\n",
|
||||
cmd,cmd->se_cmd.cmd_kref.refcount.counter,
|
||||
cmd, kref_read(&cmd->se_cmd.cmd_kref),
|
||||
cmd->se_cmd.transport_state,
|
||||
cmd->se_cmd.t_state,
|
||||
cmd->se_cmd.se_cmd_flags);
|
||||
|
|
|
@ -1300,7 +1300,7 @@ static int ion_debug_heap_show(struct seq_file *s, void *unused)
|
|||
seq_printf(s, "%16s %16u %16zu %d %d\n",
|
||||
buffer->task_comm, buffer->pid,
|
||||
buffer->size, buffer->kmap_cnt,
|
||||
atomic_read(&buffer->ref.refcount));
|
||||
kref_read(&buffer->ref));
|
||||
total_orphaned_size += buffer->size;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -188,7 +188,7 @@ bool comedi_buf_is_mmapped(struct comedi_subdevice *s)
|
|||
{
|
||||
struct comedi_buf_map *bm = s->async->buf_map;
|
||||
|
||||
return bm && (atomic_read(&bm->refcount.refcount) > 1);
|
||||
return bm && (kref_read(&bm->refcount) > 1);
|
||||
}
|
||||
|
||||
int comedi_buf_alloc(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
|
|
|
@ -788,7 +788,7 @@ static struct t10_pr_registration *__core_scsi3_alloc_registration(
|
|||
* __core_scsi3_add_registration()
|
||||
*/
|
||||
dest_lun = rcu_dereference_check(deve_tmp->se_lun,
|
||||
atomic_read(&deve_tmp->pr_kref.refcount) != 0);
|
||||
kref_read(&deve_tmp->pr_kref) != 0);
|
||||
|
||||
pr_reg_atp = __core_scsi3_do_alloc_registration(dev,
|
||||
nacl_tmp, dest_lun, deve_tmp,
|
||||
|
@ -1463,7 +1463,7 @@ static int core_scsi3_lunacl_depend_item(struct se_dev_entry *se_deve)
|
|||
* For nacl->dynamic_node_acl=1
|
||||
*/
|
||||
lun_acl = rcu_dereference_check(se_deve->se_lun_acl,
|
||||
atomic_read(&se_deve->pr_kref.refcount) != 0);
|
||||
kref_read(&se_deve->pr_kref) != 0);
|
||||
if (!lun_acl)
|
||||
return 0;
|
||||
|
||||
|
@ -1478,7 +1478,7 @@ static void core_scsi3_lunacl_undepend_item(struct se_dev_entry *se_deve)
|
|||
* For nacl->dynamic_node_acl=1
|
||||
*/
|
||||
lun_acl = rcu_dereference_check(se_deve->se_lun_acl,
|
||||
atomic_read(&se_deve->pr_kref.refcount) != 0);
|
||||
kref_read(&se_deve->pr_kref) != 0);
|
||||
if (!lun_acl) {
|
||||
kref_put(&se_deve->pr_kref, target_pr_kref_release);
|
||||
return;
|
||||
|
@ -1759,7 +1759,7 @@ core_scsi3_decode_spec_i_port(
|
|||
* 2nd loop which will never fail.
|
||||
*/
|
||||
dest_lun = rcu_dereference_check(dest_se_deve->se_lun,
|
||||
atomic_read(&dest_se_deve->pr_kref.refcount) != 0);
|
||||
kref_read(&dest_se_deve->pr_kref) != 0);
|
||||
|
||||
dest_pr_reg = __core_scsi3_alloc_registration(cmd->se_dev,
|
||||
dest_node_acl, dest_lun, dest_se_deve,
|
||||
|
@ -3466,7 +3466,7 @@ after_iport_check:
|
|||
iport_ptr);
|
||||
if (!dest_pr_reg) {
|
||||
struct se_lun *dest_lun = rcu_dereference_check(dest_se_deve->se_lun,
|
||||
atomic_read(&dest_se_deve->pr_kref.refcount) != 0);
|
||||
kref_read(&dest_se_deve->pr_kref) != 0);
|
||||
|
||||
spin_unlock(&dev->dev_reservation_lock);
|
||||
if (core_scsi3_alloc_registration(cmd->se_dev, dest_node_acl,
|
||||
|
|
|
@ -454,7 +454,7 @@ static void ft_sess_free(struct kref *kref)
|
|||
|
||||
void ft_sess_put(struct ft_sess *sess)
|
||||
{
|
||||
int sess_held = atomic_read(&sess->kref.refcount);
|
||||
int sess_held = kref_read(&sess->kref);
|
||||
|
||||
BUG_ON(!sess_held);
|
||||
kref_put(&sess->kref, ft_sess_free);
|
||||
|
|
|
@ -3687,7 +3687,7 @@ static void ffs_closed(struct ffs_data *ffs)
|
|||
goto done;
|
||||
|
||||
if (opts->no_configfs || !opts->func_inst.group.cg_item.ci_parent
|
||||
|| !atomic_read(&opts->func_inst.group.cg_item.ci_kref.refcount))
|
||||
|| !kref_read(&opts->func_inst.group.cg_item.ci_kref))
|
||||
goto done;
|
||||
|
||||
ci = opts->func_inst.group.cg_item.ci_parent->ci_parent;
|
||||
|
|
|
@ -122,7 +122,7 @@ void exofs_sysfs_dbg_print(void)
|
|||
list_for_each_entry_safe(k_name, k_tmp, &exofs_kset->list, entry) {
|
||||
printk(KERN_INFO "%s: name %s ref %d\n",
|
||||
__func__, kobject_name(k_name),
|
||||
(int)atomic_read(&k_name->kref.refcount));
|
||||
(int)kref_read(&k_name->kref));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -349,7 +349,7 @@ static void sc_show_sock_container(struct seq_file *seq,
|
|||
" func key: 0x%08x\n"
|
||||
" func type: %u\n",
|
||||
sc,
|
||||
atomic_read(&sc->sc_kref.refcount),
|
||||
kref_read(&sc->sc_kref),
|
||||
&saddr, inet ? ntohs(sport) : 0,
|
||||
&daddr, inet ? ntohs(dport) : 0,
|
||||
sc->sc_node->nd_name,
|
||||
|
|
|
@ -97,7 +97,7 @@
|
|||
typeof(sc) __sc = (sc); \
|
||||
mlog(ML_SOCKET, "[sc %p refs %d sock %p node %u page %p " \
|
||||
"pg_off %zu] " fmt, __sc, \
|
||||
atomic_read(&__sc->sc_kref.refcount), __sc->sc_sock, \
|
||||
kref_read(&__sc->sc_kref), __sc->sc_sock, \
|
||||
__sc->sc_node->nd_num, __sc->sc_page, __sc->sc_page_off , \
|
||||
##args); \
|
||||
} while (0)
|
||||
|
|
|
@ -81,7 +81,7 @@ static void __dlm_print_lock(struct dlm_lock *lock)
|
|||
lock->ml.type, lock->ml.convert_type, lock->ml.node,
|
||||
dlm_get_lock_cookie_node(be64_to_cpu(lock->ml.cookie)),
|
||||
dlm_get_lock_cookie_seq(be64_to_cpu(lock->ml.cookie)),
|
||||
atomic_read(&lock->lock_refs.refcount),
|
||||
kref_read(&lock->lock_refs),
|
||||
(list_empty(&lock->ast_list) ? 'y' : 'n'),
|
||||
(lock->ast_pending ? 'y' : 'n'),
|
||||
(list_empty(&lock->bast_list) ? 'y' : 'n'),
|
||||
|
@ -106,7 +106,7 @@ void __dlm_print_one_lock_resource(struct dlm_lock_resource *res)
|
|||
printk("lockres: %s, owner=%u, state=%u\n",
|
||||
buf, res->owner, res->state);
|
||||
printk(" last used: %lu, refcnt: %u, on purge list: %s\n",
|
||||
res->last_used, atomic_read(&res->refs.refcount),
|
||||
res->last_used, kref_read(&res->refs),
|
||||
list_empty(&res->purge) ? "no" : "yes");
|
||||
printk(" on dirty list: %s, on reco list: %s, "
|
||||
"migrating pending: %s\n",
|
||||
|
@ -298,7 +298,7 @@ static int dump_mle(struct dlm_master_list_entry *mle, char *buf, int len)
|
|||
mle_type, mle->master, mle->new_master,
|
||||
!list_empty(&mle->hb_events),
|
||||
!!mle->inuse,
|
||||
atomic_read(&mle->mle_refs.refcount));
|
||||
kref_read(&mle->mle_refs));
|
||||
|
||||
out += snprintf(buf + out, len - out, "Maybe=");
|
||||
out += stringify_nodemap(mle->maybe_map, O2NM_MAX_NODES,
|
||||
|
@ -494,7 +494,7 @@ static int dump_lock(struct dlm_lock *lock, int list_type, char *buf, int len)
|
|||
lock->ast_pending, lock->bast_pending,
|
||||
lock->convert_pending, lock->lock_pending,
|
||||
lock->cancel_pending, lock->unlock_pending,
|
||||
atomic_read(&lock->lock_refs.refcount));
|
||||
kref_read(&lock->lock_refs));
|
||||
spin_unlock(&lock->spinlock);
|
||||
|
||||
return out;
|
||||
|
@ -521,7 +521,7 @@ static int dump_lockres(struct dlm_lock_resource *res, char *buf, int len)
|
|||
!list_empty(&res->recovering),
|
||||
res->inflight_locks, res->migration_pending,
|
||||
atomic_read(&res->asts_reserved),
|
||||
atomic_read(&res->refs.refcount));
|
||||
kref_read(&res->refs));
|
||||
|
||||
/* refmap */
|
||||
out += snprintf(buf + out, len - out, "RMAP:");
|
||||
|
@ -777,7 +777,7 @@ static int debug_state_print(struct dlm_ctxt *dlm, char *buf, int len)
|
|||
/* Purge Count: xxx Refs: xxx */
|
||||
out += snprintf(buf + out, len - out,
|
||||
"Purge Count: %d Refs: %d\n", dlm->purge_count,
|
||||
atomic_read(&dlm->dlm_refs.refcount));
|
||||
kref_read(&dlm->dlm_refs));
|
||||
|
||||
/* Dead Node: xxx */
|
||||
out += snprintf(buf + out, len - out,
|
||||
|
|
|
@ -2072,7 +2072,7 @@ static struct dlm_ctxt *dlm_alloc_ctxt(const char *domain,
|
|||
INIT_LIST_HEAD(&dlm->dlm_eviction_callbacks);
|
||||
|
||||
mlog(0, "context init: refcount %u\n",
|
||||
atomic_read(&dlm->dlm_refs.refcount));
|
||||
kref_read(&dlm->dlm_refs));
|
||||
|
||||
leave:
|
||||
if (ret < 0 && dlm) {
|
||||
|
|
|
@ -233,7 +233,7 @@ static void __dlm_put_mle(struct dlm_master_list_entry *mle)
|
|||
|
||||
assert_spin_locked(&dlm->spinlock);
|
||||
assert_spin_locked(&dlm->master_lock);
|
||||
if (!atomic_read(&mle->mle_refs.refcount)) {
|
||||
if (!kref_read(&mle->mle_refs)) {
|
||||
/* this may or may not crash, but who cares.
|
||||
* it's a BUG. */
|
||||
mlog(ML_ERROR, "bad mle: %p\n", mle);
|
||||
|
@ -1124,9 +1124,9 @@ recheck:
|
|||
unsigned long timeo = msecs_to_jiffies(DLM_MASTERY_TIMEOUT_MS);
|
||||
|
||||
/*
|
||||
if (atomic_read(&mle->mle_refs.refcount) < 2)
|
||||
if (kref_read(&mle->mle_refs) < 2)
|
||||
mlog(ML_ERROR, "mle (%p) refs=%d, name=%.*s\n", mle,
|
||||
atomic_read(&mle->mle_refs.refcount),
|
||||
kref_read(&mle->mle_refs),
|
||||
res->lockname.len, res->lockname.name);
|
||||
*/
|
||||
atomic_set(&mle->woken, 0);
|
||||
|
@ -1979,7 +1979,7 @@ ok:
|
|||
* on this mle. */
|
||||
spin_lock(&dlm->master_lock);
|
||||
|
||||
rr = atomic_read(&mle->mle_refs.refcount);
|
||||
rr = kref_read(&mle->mle_refs);
|
||||
if (mle->inuse > 0) {
|
||||
if (extra_ref && rr < 3)
|
||||
err = 1;
|
||||
|
|
|
@ -251,7 +251,7 @@ leave:
|
|||
mlog(0, "lock %u:%llu should be gone now! refs=%d\n",
|
||||
dlm_get_lock_cookie_node(be64_to_cpu(lock->ml.cookie)),
|
||||
dlm_get_lock_cookie_seq(be64_to_cpu(lock->ml.cookie)),
|
||||
atomic_read(&lock->lock_refs.refcount)-1);
|
||||
kref_read(&lock->lock_refs)-1);
|
||||
dlm_lock_put(lock);
|
||||
}
|
||||
if (actions & DLM_UNLOCK_CALL_AST)
|
||||
|
|
|
@ -247,7 +247,7 @@ static inline void drm_framebuffer_unreference(struct drm_framebuffer *fb)
|
|||
*/
|
||||
static inline uint32_t drm_framebuffer_read_refcount(struct drm_framebuffer *fb)
|
||||
{
|
||||
return atomic_read(&fb->base.refcount.refcount);
|
||||
return kref_read(&fb->base.refcount);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -878,7 +878,7 @@ static inline int ttm_bo_reserve(struct ttm_buffer_object *bo,
|
|||
{
|
||||
int ret;
|
||||
|
||||
WARN_ON(!atomic_read(&bo->kref.refcount));
|
||||
WARN_ON(!kref_read(&bo->kref));
|
||||
|
||||
ret = __ttm_bo_reserve(bo, interruptible, no_wait, ticket);
|
||||
if (likely(ret == 0))
|
||||
|
@ -903,7 +903,7 @@ static inline int ttm_bo_reserve_slowpath(struct ttm_buffer_object *bo,
|
|||
{
|
||||
int ret = 0;
|
||||
|
||||
WARN_ON(!atomic_read(&bo->kref.refcount));
|
||||
WARN_ON(!kref_read(&bo->kref));
|
||||
|
||||
if (interruptible)
|
||||
ret = ww_mutex_lock_slow_interruptible(&bo->resv->lock,
|
||||
|
|
|
@ -35,6 +35,11 @@ static inline void kref_init(struct kref *kref)
|
|||
atomic_set(&kref->refcount, 1);
|
||||
}
|
||||
|
||||
static inline int kref_read(const struct kref *kref)
|
||||
{
|
||||
return atomic_read(&kref->refcount);
|
||||
}
|
||||
|
||||
/**
|
||||
* kref_get - increment refcount for object.
|
||||
* @kref: object.
|
||||
|
|
|
@ -198,7 +198,7 @@ static inline struct cache_head *cache_get(struct cache_head *h)
|
|||
|
||||
static inline void cache_put(struct cache_head *h, struct cache_detail *cd)
|
||||
{
|
||||
if (atomic_read(&h->ref.refcount) <= 2 &&
|
||||
if (kref_read(&h->ref) <= 2 &&
|
||||
h->expiry_time < cd->nextcheck)
|
||||
cd->nextcheck = h->expiry_time;
|
||||
kref_put(&h->ref, cd->cache_put);
|
||||
|
|
|
@ -987,7 +987,7 @@ static inline void hci_conn_drop(struct hci_conn *conn)
|
|||
static inline void hci_dev_put(struct hci_dev *d)
|
||||
{
|
||||
BT_DBG("%s orig refcnt %d", d->name,
|
||||
atomic_read(&d->dev.kobj.kref.refcount));
|
||||
kref_read(&d->dev.kobj.kref));
|
||||
|
||||
put_device(&d->dev);
|
||||
}
|
||||
|
@ -995,7 +995,7 @@ static inline void hci_dev_put(struct hci_dev *d)
|
|||
static inline struct hci_dev *hci_dev_hold(struct hci_dev *d)
|
||||
{
|
||||
BT_DBG("%s orig refcnt %d", d->name,
|
||||
atomic_read(&d->dev.kobj.kref.refcount));
|
||||
kref_read(&d->dev.kobj.kref));
|
||||
|
||||
get_device(&d->dev);
|
||||
return d;
|
||||
|
|
|
@ -920,7 +920,7 @@ static void chan_close_cb(struct l2cap_chan *chan)
|
|||
BT_DBG("dev %p removing %speer %p", dev,
|
||||
last ? "last " : "1 ", peer);
|
||||
BT_DBG("chan %p orig refcnt %d", chan,
|
||||
atomic_read(&chan->kref.refcount));
|
||||
kref_read(&chan->kref));
|
||||
|
||||
l2cap_chan_put(chan);
|
||||
break;
|
||||
|
|
|
@ -810,7 +810,7 @@ static struct l2cap_chan *a2mp_chan_open(struct l2cap_conn *conn, bool locked)
|
|||
/* AMP Manager functions */
|
||||
struct amp_mgr *amp_mgr_get(struct amp_mgr *mgr)
|
||||
{
|
||||
BT_DBG("mgr %p orig refcnt %d", mgr, atomic_read(&mgr->kref.refcount));
|
||||
BT_DBG("mgr %p orig refcnt %d", mgr, kref_read(&mgr->kref));
|
||||
|
||||
kref_get(&mgr->kref);
|
||||
|
||||
|
@ -833,7 +833,7 @@ static void amp_mgr_destroy(struct kref *kref)
|
|||
|
||||
int amp_mgr_put(struct amp_mgr *mgr)
|
||||
{
|
||||
BT_DBG("mgr %p orig refcnt %d", mgr, atomic_read(&mgr->kref.refcount));
|
||||
BT_DBG("mgr %p orig refcnt %d", mgr, kref_read(&mgr->kref));
|
||||
|
||||
return kref_put(&mgr->kref, &_mgr_destroy);
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
void amp_ctrl_get(struct amp_ctrl *ctrl)
|
||||
{
|
||||
BT_DBG("ctrl %p orig refcnt %d", ctrl,
|
||||
atomic_read(&ctrl->kref.refcount));
|
||||
kref_read(&ctrl->kref));
|
||||
|
||||
kref_get(&ctrl->kref);
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ static void amp_ctrl_destroy(struct kref *kref)
|
|||
int amp_ctrl_put(struct amp_ctrl *ctrl)
|
||||
{
|
||||
BT_DBG("ctrl %p orig refcnt %d", ctrl,
|
||||
atomic_read(&ctrl->kref.refcount));
|
||||
kref_read(&ctrl->kref));
|
||||
|
||||
return kref_put(&ctrl->kref, &_ctrl_destroy);
|
||||
}
|
||||
|
|
|
@ -481,14 +481,14 @@ static void l2cap_chan_destroy(struct kref *kref)
|
|||
|
||||
void l2cap_chan_hold(struct l2cap_chan *c)
|
||||
{
|
||||
BT_DBG("chan %p orig refcnt %d", c, atomic_read(&c->kref.refcount));
|
||||
BT_DBG("chan %p orig refcnt %d", c, kref_read(&c->kref));
|
||||
|
||||
kref_get(&c->kref);
|
||||
}
|
||||
|
||||
void l2cap_chan_put(struct l2cap_chan *c)
|
||||
{
|
||||
BT_DBG("chan %p orig refcnt %d", c, atomic_read(&c->kref.refcount));
|
||||
BT_DBG("chan %p orig refcnt %d", c, kref_read(&c->kref));
|
||||
|
||||
kref_put(&c->kref, l2cap_chan_destroy);
|
||||
}
|
||||
|
|
|
@ -3425,7 +3425,7 @@ static void ceph_msg_release(struct kref *kref)
|
|||
struct ceph_msg *ceph_msg_get(struct ceph_msg *msg)
|
||||
{
|
||||
dout("%s %p (was %d)\n", __func__, msg,
|
||||
atomic_read(&msg->kref.refcount));
|
||||
kref_read(&msg->kref));
|
||||
kref_get(&msg->kref);
|
||||
return msg;
|
||||
}
|
||||
|
@ -3434,7 +3434,7 @@ EXPORT_SYMBOL(ceph_msg_get);
|
|||
void ceph_msg_put(struct ceph_msg *msg)
|
||||
{
|
||||
dout("%s %p (was %d)\n", __func__, msg,
|
||||
atomic_read(&msg->kref.refcount));
|
||||
kref_read(&msg->kref));
|
||||
kref_put(&msg->kref, ceph_msg_release);
|
||||
}
|
||||
EXPORT_SYMBOL(ceph_msg_put);
|
||||
|
|
|
@ -438,7 +438,7 @@ static void ceph_osdc_release_request(struct kref *kref)
|
|||
void ceph_osdc_get_request(struct ceph_osd_request *req)
|
||||
{
|
||||
dout("%s %p (was %d)\n", __func__, req,
|
||||
atomic_read(&req->r_kref.refcount));
|
||||
kref_read(&req->r_kref));
|
||||
kref_get(&req->r_kref);
|
||||
}
|
||||
EXPORT_SYMBOL(ceph_osdc_get_request);
|
||||
|
@ -447,7 +447,7 @@ void ceph_osdc_put_request(struct ceph_osd_request *req)
|
|||
{
|
||||
if (req) {
|
||||
dout("%s %p (was %d)\n", __func__, req,
|
||||
atomic_read(&req->r_kref.refcount));
|
||||
kref_read(&req->r_kref));
|
||||
kref_put(&req->r_kref, ceph_osdc_release_request);
|
||||
}
|
||||
}
|
||||
|
@ -487,11 +487,11 @@ static void request_reinit(struct ceph_osd_request *req)
|
|||
struct ceph_msg *reply_msg = req->r_reply;
|
||||
|
||||
dout("%s req %p\n", __func__, req);
|
||||
WARN_ON(atomic_read(&req->r_kref.refcount) != 1);
|
||||
WARN_ON(kref_read(&req->r_kref) != 1);
|
||||
request_release_checks(req);
|
||||
|
||||
WARN_ON(atomic_read(&request_msg->kref.refcount) != 1);
|
||||
WARN_ON(atomic_read(&reply_msg->kref.refcount) != 1);
|
||||
WARN_ON(kref_read(&request_msg->kref) != 1);
|
||||
WARN_ON(kref_read(&reply_msg->kref) != 1);
|
||||
target_destroy(&req->r_t);
|
||||
|
||||
request_init(req);
|
||||
|
|
|
@ -1358,7 +1358,7 @@ static int c_show(struct seq_file *m, void *p)
|
|||
ifdebug(CACHE)
|
||||
seq_printf(m, "# expiry=%ld refcnt=%d flags=%lx\n",
|
||||
convert_to_wallclock(cp->expiry_time),
|
||||
atomic_read(&cp->ref.refcount), cp->flags);
|
||||
kref_read(&cp->ref), cp->flags);
|
||||
cache_get(cp);
|
||||
if (cache_check(cd, cp, NULL))
|
||||
/* cache_check does a cache_put on failure */
|
||||
|
|
|
@ -490,7 +490,7 @@ static struct svc_xprt *svc_xprt_dequeue(struct svc_pool *pool)
|
|||
svc_xprt_get(xprt);
|
||||
|
||||
dprintk("svc: transport %p dequeued, inuse=%d\n",
|
||||
xprt, atomic_read(&xprt->xpt_ref.refcount));
|
||||
xprt, kref_read(&xprt->xpt_ref));
|
||||
}
|
||||
spin_unlock_bh(&pool->sp_lock);
|
||||
out:
|
||||
|
@ -820,7 +820,7 @@ static int svc_handle_xprt(struct svc_rqst *rqstp, struct svc_xprt *xprt)
|
|||
/* XPT_DATA|XPT_DEFERRED case: */
|
||||
dprintk("svc: server %p, pool %u, transport %p, inuse=%d\n",
|
||||
rqstp, rqstp->rq_pool->sp_id, xprt,
|
||||
atomic_read(&xprt->xpt_ref.refcount));
|
||||
kref_read(&xprt->xpt_ref));
|
||||
rqstp->rq_deferred = svc_deferred_dequeue(xprt);
|
||||
if (rqstp->rq_deferred)
|
||||
len = svc_deferred_recv(rqstp);
|
||||
|
@ -978,7 +978,7 @@ static void svc_age_temp_xprts(unsigned long closure)
|
|||
* through, close it. */
|
||||
if (!test_and_set_bit(XPT_OLD, &xprt->xpt_flags))
|
||||
continue;
|
||||
if (atomic_read(&xprt->xpt_ref.refcount) > 1 ||
|
||||
if (kref_read(&xprt->xpt_ref) > 1 ||
|
||||
test_bit(XPT_BUSY, &xprt->xpt_flags))
|
||||
continue;
|
||||
list_del_init(le);
|
||||
|
|
|
@ -1201,9 +1201,9 @@ static void __svc_rdma_free(struct work_struct *work)
|
|||
ib_drain_qp(rdma->sc_qp);
|
||||
|
||||
/* We should only be called from kref_put */
|
||||
if (atomic_read(&xprt->xpt_ref.refcount) != 0)
|
||||
if (kref_read(&xprt->xpt_ref) != 0)
|
||||
pr_err("svcrdma: sc_xprt still in use? (%d)\n",
|
||||
atomic_read(&xprt->xpt_ref.refcount));
|
||||
kref_read(&xprt->xpt_ref));
|
||||
|
||||
/*
|
||||
* Destroy queued, but not processed read completions. Note
|
||||
|
|
Загрузка…
Ссылка в новой задаче