/* * snapshot.c Ceph snapshot context utility routines (part of libceph) * * Copyright (C) 2013 Inktank Storage, Inc. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ #include #include #include #include /* * Ceph snapshot contexts are reference counted objects, and the * returned structure holds a single reference. Acquire additional * references with ceph_get_snap_context(), and release them with * ceph_put_snap_context(). When the reference count reaches zero * the entire structure is freed. */ /* * Create a new ceph snapshot context large enough to hold the * indicated number of snapshot ids (which can be 0). Caller has * to fill in snapc->seq and snapc->snaps[0..snap_count-1]. * * Returns a null pointer if an error occurs. */ struct ceph_snap_context *ceph_create_snap_context(u32 snap_count, gfp_t gfp_flags) { struct ceph_snap_context *snapc; size_t size; size = sizeof (struct ceph_snap_context); size += snap_count * sizeof (snapc->snaps[0]); snapc = kzalloc(size, gfp_flags); if (!snapc) return NULL; atomic_set(&snapc->nref, 1); snapc->num_snaps = snap_count; return snapc; } EXPORT_SYMBOL(ceph_create_snap_context); struct ceph_snap_context *ceph_get_snap_context(struct ceph_snap_context *sc) { if (sc) atomic_inc(&sc->nref); return sc; } EXPORT_SYMBOL(ceph_get_snap_context); void ceph_put_snap_context(struct ceph_snap_context *sc) { if (!sc) return; if (atomic_dec_and_test(&sc->nref)) { /*printk(" deleting snap_context %p\n", sc);*/ kfree(sc); } } EXPORT_SYMBOL(ceph_put_snap_context); /log/include/net/bluetooth/rfcomm.h'>
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-01-24 16:54:39 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2017-01-24 16:54:39 -0800
commit883af14e67e8b8702b5560aa64c888c0cd0bd66c (patch)
tree74e3a6b53f5fad9f7848ab1b9f6921b7012940a4 /include/net/bluetooth/rfcomm.h
parent0263d4ebd94b36280608e296cba39b924b6e832b (diff)
parentaab45453ff5c77200c6da4ac909f7a4392aed17e (diff)
Merge branch 'akpm' (patches from Andrew)
Merge fixes from Andrew Morton: "26 fixes" * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (26 commits) MAINTAINERS: add Dan Streetman to zbud maintainers MAINTAINERS: add Dan Streetman to zswap maintainers mm: do not export ioremap_page_range symbol for external module mn10300: fix build error of missing fpu_save() romfs: use different way to generate fsid for BLOCK or MTD frv: add missing atomic64 operations mm, page_alloc: fix premature OOM when racing with cpuset mems update mm, page_alloc: move cpuset seqcount checking to slowpath mm, page_alloc: fix fast-path race with cpuset update or removal mm, page_alloc: fix check for NULL preferred_zone kernel/panic.c: add missing \n fbdev: color map copying bounds checking frv: add atomic64_add_unless() mm/mempolicy.c: do not put mempolicy before using its nodemask radix-tree: fix private list warnings Documentation/filesystems/proc.txt: add VmPin mm, memcg: do not retry precharge charges proc: add a schedule point in proc_pid_readdir() mm: alloc_contig: re-allow CMA to compact FS pages mm/slub.c: trace free objects at KERN_INFO ...
Diffstat (limited to 'include/net/bluetooth/rfcomm.h')