linux/fs/ceph
Sage Weil 7c1332b8cb ceph: fix iterate_caps removal race
We need to be able to iterate over all caps on a session with a
possibly slow callback on each cap.  To allow this, we used to
prevent cap reordering while we were iterating.  However, we were
not safe from races with removal: removing the 'next' cap would
make the next pointer from list_for_each_entry_safe be invalid,
and cause a lock up or similar badness.

Instead, we keep an iterator pointer in the session pointing to
the current cap.  As before, we avoid reordering.  For removal,
if the cap isn't the current cap we are iterating over, we are
fine.  If it is, we clear cap->ci (to mark the cap as pending
removal) but leave it in the session list.  In iterate_caps, we
can safely finish removal and get the next cap pointer.

While we're at it, clean up put_cap to not take a cap reservation
context, as it was never used.

Signed-off-by: Sage Weil <sage@newdream.net>
2010-02-17 10:02:47 -08:00
..
crush ceph: whitespace cleanup 2009-12-03 14:59:44 -08:00
Kconfig ceph: aes crypto and base64 encode/decode helpers 2010-02-10 15:04:46 -08:00
Makefile ceph: add support for auth_x authentication protocol 2010-02-11 11:48:45 -08:00
README ceph: make object hash a pg_pool property 2009-11-06 21:55:25 -08:00
addr.c ceph: cleanup async writeback, truncation, invalidate helpers 2010-02-11 11:48:54 -08:00
armor.c ceph: aes crypto and base64 encode/decode helpers 2010-02-10 15:04:46 -08:00
auth.c ceph: add support for auth_x authentication protocol 2010-02-11 11:48:45 -08:00
auth.h ceph: allow renewal of auth credentials 2010-02-10 15:04:47 -08:00
auth_none.c ceph: add struct version to auth encoding 2010-02-10 15:04:48 -08:00
auth_none.h ceph: negotiate authentication protocol; implement AUTH_NONE protocol 2009-11-18 16:19:57 -08:00
auth_x.c ceph: add support for auth_x authentication protocol 2010-02-11 11:48:45 -08:00
auth_x.h ceph: add support for auth_x authentication protocol 2010-02-11 11:48:45 -08:00
auth_x_protocol.h ceph: add support for auth_x authentication protocol 2010-02-11 11:48:45 -08:00
buffer.c ceph: buffer decoding helpers 2010-02-10 15:04:39 -08:00
buffer.h ceph: buffer decoding helpers 2010-02-10 15:04:39 -08:00
caps.c ceph: fix iterate_caps removal race 2010-02-17 10:02:47 -08:00
ceph_debug.h ceph: client types 2009-10-06 11:31:07 -07:00
ceph_frag.c ceph: client types 2009-10-06 11:31:07 -07:00
ceph_frag.h ceph: client types 2009-10-06 11:31:07 -07:00
ceph_fs.c ceph: make object hash a pg_pool property 2009-11-06 21:55:25 -08:00
ceph_fs.h ceph: always send truncation info with read and write osd ops 2010-02-02 16:29:50 -08:00
ceph_hash.c ceph: whitespace cleanup 2009-12-03 14:59:44 -08:00
ceph_hash.h ceph: make object hash a pg_pool property 2009-11-06 21:55:25 -08:00
ceph_strings.c ceph: negotiate authentication protocol; implement AUTH_NONE protocol 2009-11-18 16:19:57 -08:00
crypto.c ceph: aes crypto and base64 encode/decode helpers 2010-02-10 15:04:46 -08:00
crypto.h ceph: aes crypto and base64 encode/decode helpers 2010-02-10 15:04:46 -08:00
debugfs.c ceph: clean up readdir caps reservation 2010-02-17 10:02:43 -08:00
decode.h ceph: buffer decoding helpers 2010-02-10 15:04:39 -08:00
dir.c ceph: add feature bits to connection handshake (protocol change) 2009-12-23 09:30:21 -08:00
export.c ceph: nfs re-export support 2009-10-06 11:31:13 -07:00
file.c ceph: fix sync read eof check deadlock 2010-02-11 11:48:53 -08:00
inode.c ceph: cleanup async writeback, truncation, invalidate helpers 2010-02-11 11:48:54 -08:00
ioctl.c ceph: allow preferred osd to be get/set via layout ioctl 2009-12-03 14:59:48 -08:00
ioctl.h ceph: allow preferred osd to be get/set via layout ioctl 2009-12-03 14:59:48 -08:00
mds_client.c ceph: fix iterate_caps removal race 2010-02-17 10:02:47 -08:00
mds_client.h ceph: fix iterate_caps removal race 2010-02-17 10:02:47 -08:00
mdsmap.c ceph: hex dump corrupt server data to KERN_DEBUG 2009-12-21 16:39:52 -08:00
mdsmap.h ceph: decode updated mdsmap format 2009-11-20 14:24:33 -08:00
messenger.c ceph: cancel delayed work when closing connection 2010-02-16 22:01:07 -08:00
messenger.h ceph: allow renewal of auth credentials 2010-02-10 15:04:47 -08:00
mon_client.c ceph: fix authentication races, auth_none oops 2010-02-16 22:01:11 -08:00
mon_client.h ceph: use rbtree for mon statfs requests 2010-02-16 22:01:10 -08:00
msgpool.c ceph: more informative msgpool errors 2009-12-23 08:17:21 -08:00
msgpool.h ceph: warn on allocation from msgpool with larger front_len 2009-10-15 18:14:43 -07:00
msgr.h ceph: include type in ceph_entity_addr, filepath 2010-01-29 12:41:09 -08:00
osd_client.c ceph: reset osd connections after fault 2010-02-15 12:11:51 -08:00
osd_client.h ceph: put unused osd connections on lru 2010-02-11 11:48:48 -08:00
osdmap.c ceph: add uid field to ceph_pg_pool 2010-02-11 11:48:49 -08:00
osdmap.h ceph: fix endian conversions for ceph_pg 2009-11-04 16:36:07 -08:00
pagelist.c ceph: support ceph_pagelist for message payload 2009-12-23 12:12:31 -08:00
pagelist.h ceph: support ceph_pagelist for message payload 2009-12-23 12:12:31 -08:00
rados.h ceph: add uid field to ceph_pg_pool 2010-02-11 11:48:49 -08:00
snap.c ceph: use rbtree for snap_realms 2010-02-16 22:01:09 -08:00
super.c ceph: clean up readdir caps reservation 2010-02-17 10:02:43 -08:00
super.h ceph: fix iterate_caps removal race 2010-02-17 10:02:47 -08:00
types.h ceph: make object hash a pg_pool property 2009-11-06 21:55:25 -08:00
xattr.c ceph: simplify ceph_buffer interface 2009-12-07 12:17:17 -08:00

README

#
# The following files are shared by (and manually synchronized
# between) the Ceph userland and kernel client.
#
# userland                  kernel
src/include/ceph_fs.h	    fs/ceph/ceph_fs.h
src/include/ceph_fs.cc	    fs/ceph/ceph_fs.c
src/include/msgr.h	    fs/ceph/msgr.h
src/include/rados.h	    fs/ceph/rados.h
src/include/ceph_strings.cc fs/ceph/ceph_strings.c
src/include/ceph_frag.h	    fs/ceph/ceph_frag.h
src/include/ceph_frag.cc    fs/ceph/ceph_frag.c
src/include/ceph_hash.h	    fs/ceph/ceph_hash.h
src/include/ceph_hash.cc    fs/ceph/ceph_hash.c
src/crush/crush.c	    fs/ceph/crush/crush.c
src/crush/crush.h	    fs/ceph/crush/crush.h
src/crush/mapper.c	    fs/ceph/crush/mapper.c
src/crush/mapper.h	    fs/ceph/crush/mapper.h
src/crush/hash.h	    fs/ceph/crush/hash.h
src/crush/hash.c	    fs/ceph/crush/hash.c