summaryrefslogtreecommitdiffstats
path: root/fs/ceph/mon_client.c
AgeCommit message (Collapse)AuthorFilesLines
2010-02-16ceph: fix authentication races, auth_none oopsSage Weil1-16/+13
Call __validate_auth() under monc->mutex, and use helper for initial hello so that the pending_auth flag is set. This fixes possible races in which we have an authentication request (hello or otherwise) pending and send another one. In particular, with auth_none, we _never_ want to call ceph_build_auth() from __validate_auth(), since the ->build_request() method is NULL. Signed-off-by: Sage Weil <sage@newdream.net>
2010-02-16ceph: use rbtree for mon statfs requestsSage Weil1-20/+47
An rbtree is lighter weight, particularly given we will generally have very few in-flight statfs requests. Signed-off-by: Sage Weil <sage@newdream.net>
2010-02-10ceph: allow renewal of auth credentialsSage Weil1-7/+48
Add infrastructure to allow the mon_client to periodically renew its auth credentials. Also add a messenger callback that will force such a renewal if a peer rejects our authenticator. Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net> Signed-off-by: Sage Weil <sage@newdream.net>
2010-01-25ceph: alloc message data pages and check if tid existsYehuda Sadeh1-0/+1
Now doing it in the same callback that is also responsible for allocating the 'front' part of the message. If we get a message that we haven't got a corresponding tid for, mark it for skipping. Moving the mutex unlock/lock from the osd alloc_msg callback to the calling function in the messenger. Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
2010-01-25ceph: allocate middle of message before stating to readYehuda Sadeh1-7/+18
Both front and middle parts of the message are now being allocated at the ceph_alloc_msg(). Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
2010-01-14ceph: remove unused erank fieldSage Weil1-2/+1
The ceph_entity_addr erank field is obsolete; remove it. Get rid of trivial addr comparison helpers while we're at it. Signed-off-by: Sage Weil <sage@newdream.net>
2009-12-23ceph: include transaction id in ceph_msg_header (protocol change)Sage Weil1-2/+2
Many (most?) message types include a transaction id. By including it in the fixed size header, we always have it available even when we are unable to allocate memory for the (larger, variable sized) message body. This will allow us to error out the appropriate request instead of (silently) dropping the reply. Signed-off-by: Sage Weil <sage@newdream.net>
2009-12-21ceph: hex dump corrupt server data to KERN_DEBUGSage Weil1-0/+2
Also, print fsid using standard format, NOT hex dump. Signed-off-by: Sage Weil <sage@newdream.net>
2009-12-11ceph: fix leak of monc mutexSage Weil1-2/+3
Fix leak of monc mutex on ENOMEM or bad fsid when receiving new mon map. Audited all other users. Signed-off-by: Sage Weil <sage@newdream.net>
2009-12-03ceph: whitespace cleanupSage Weil1-1/+1
Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-20ceph: remove dead codeSage Weil1-21/+0
Left over from mount/auth protocol changes. Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-20ceph: fix debugfs entry, simplify fsid checksSage Weil1-105/+8
We may first learn our fsid from any of the mon, osd, or mds maps (whichever the monitor sends first). Consolidate checks in a single helper. Initialize the client debugfs entry then, since we need the fsid (and global_id) for the directory name. Also remove dead mount code. Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-18ceph: negotiate authentication protocol; implement AUTH_NONE protocolSage Weil1-40/+170
When we open a monitor session, we send an initial AUTH message listing the auth protocols we support, our entity name, and (possibly) a previously assigned global_id. The monitor chooses a protocol and responds with an initial message. Initially implement AUTH_NONE, a dummy protocol that provides no security, but works within the new framework. It generates 'authorizers' that are used when connecting to (mds, osd) services that simply state our entity name and global_id. This is a wire protocol change. Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-03ceph: use fixed endian encoding for ceph_entity_addrSage Weil1-0/+2
We exchange struct ceph_entity_addr over the wire and store it on disk. The sockaddr_storage.ss_family field, however, is host endianness. So, fix ss_family endianness to big endian when sending/receiving over the wire. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-27ceph: allocate and parse mount args before client instanceSage Weil1-0/+38
This simplifies much of the error handling during mount. It also means that we have the mount args before client creation, and we can initialize based on those options. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-15ceph: warn on allocation from msgpool with larger front_lenSage Weil1-3/+4
Pass the front_len we need when pulling a message off a msgpool, and WARN if it is greater than the pool's size. Then try to allocate a new message (to continue without failing). Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-15ceph: correct subscribe_ack msgpool payload sizeSage Weil1-4/+7
Defined a struct for the SUBSCRIBE_ACK, and use that to size the msgpool. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-14ceph: convert encode/decode macros to inlinesSage Weil1-2/+2
This avoids the fugly pass by reference and makes the code a bit easier to read. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-12ceph: ignore trailing data in monampSage Weil1-3/+0
This lets us extend the format more easily. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-09ceph: update to mon client protocol v15Sage Weil1-2/+6
The mon request headers now include session_mon information that must be properly initialized. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-08ceph: renew mon subscription before it expiresSage Weil1-2/+2
Be conservative: renew subscription once half the interval has expired. Do not reuse sub expiration to control hunting. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-06ceph: monitor clientSage Weil1-0/+694
The monitor cluster is responsible for managing cluster membership and state. The monitor client handles what minimal interaction the Ceph client has with it: checking for updated versions of the MDS and OSD maps, getting statfs() information, and unmounting. Signed-off-by: Sage Weil <sage@newdream.net>