summaryrefslogtreecommitdiffstats
path: root/fs
Commit message (Collapse)AuthorAgeFilesLines
* ceph: use connection mutex to protect read and write stagesSage Weil2009-12-232-19/+33
| | | | | | | | | Use a single mutex (previously out_mutex) to protect both read and write activity from concurrent ceph_con_* calls. Drop the mutex when doing callbacks to avoid nested locking (the callback may need to call something like ceph_con_close). Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: unregister canceled/timed out osd requestsSage Weil2009-12-231-1/+2
| | | | | | | | Canceled or timed out osd requests were getting left in the request list and never deallocated (until umount). Unregister if they are canceled (control-c) or time out. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: only unregister registered bdiSage Weil2009-12-231-1/+2
| | | | Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: do not touch_caps while iterating over caps listSage Weil2009-12-233-7/+19
| | | | | | | | | | Avoid confusing iterate_session_caps(), flag the session while we are iterating so that __touch_cap does not rearrange items on the list. All other modifiers of session->s_caps do so under the protection of s_mutex. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: fix incremental osdmap pg_temp decoding bugSage Weil2009-12-211-2/+1
| | | | | | | | | An incremental pg_temp wasn't being decoded properly (wrong bound on for loop). Also remove unused local variable, while we're at it. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: fix error paths for corrupt osdmap messagesSage Weil2009-12-212-5/+8
| | | | | | | Both osdmap_decode() and osdmap_apply_incremental() should never return NULL. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: do not drop lease during revalidateSage Weil2009-12-211-2/+0
| | | | | | | We need to hold session s_mutex for __ceph_mdsc_drop_dentry_lease(), which we don't, so skip it. It was purely an optimization. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: ensure rename target dentry fails revalidationSage Weil2009-12-211-0/+4
| | | | | | | | | | This works around a bug in vfs_rename_dir() that rehashes the target dentry. Ensure such dentries always fail revalidation by timing out the dentry lease and kicking it out of the current directory lease gen. This can be reverted when the vfs bug is fixed. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: writeback congestion controlYehuda Sadeh2009-12-214-2/+105
| | | | | | | | Set bdi congestion bit when amount of write data in flight exceeds adjustable threshold. Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net> Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: writepage grabs and releases inodeYehuda Sadeh2009-12-211-1/+6
| | | | | | | | Fixes a deadlock that is triggered due to kswapd, while the page was locked and the iput couldn't tear down the address space. Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
* ceph: remove unaccessible codeYehuda Sadeh2009-12-211-4/+0
| | | | Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
* ceph: include link to bdi in debugfsSage Weil2009-12-212-0/+8
| | | | Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: make mds ops interruptibleSage Weil2009-12-211-6/+9
| | | | Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: plug leak of incoming message during connection fault/closeSage Weil2009-12-211-2/+8
| | | | | | | If we explicitly close a connection, or there is a socket error, we need to drop any partially received message. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: hex dump corrupt server data to KERN_DEBUGSage Weil2009-12-2110-7/+41
| | | | | | Also, print fsid using standard format, NOT hex dump. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: fix msgpool reservation leakYehuda Sadeh2009-12-212-1/+5
| | | | Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
* ceph: don't save sent messages on lossy connectionsSage Weil2009-12-211-3/+7
| | | | | | | For lossy connections we drop all state on socket errors, so there is no reason to keep sent ceph_msg's around. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: detect lossy state of connectionSage Weil2009-12-211-2/+4
| | | | | | | The server indicates whether a connection is lossy; set our LOSSYTX bit appropriately. Do not set lossy bit on outgoing connections. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: plug msg leak in con_faultSage Weil2009-12-211-2/+7
| | | | Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: carry explicit msg reference for currently sending messageSage Weil2009-12-212-4/+19
| | | | | | | Carry a ceph_msg reference for connection->out_msg. This will allow us to make out_sent optional. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: fix leak of monc mutexSage Weil2009-12-111-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>
* ceph: do not feed bad device ids to crushSage Weil2009-12-091-0/+5
| | | | | | Do not feed bad (large) device ids to CRUSH. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: use kref for ceph_msgSage Weil2009-12-073-35/+27
| | | | Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: use kref for ceph_osd_requestSage Weil2009-12-072-22/+26
| | | | Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: use kref for struct ceph_mds_requestSage Weil2009-12-072-38/+42
| | | | Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: simplify ceph_buffer interfaceSage Weil2009-12-075-29/+35
| | | | | | | | | We never allocate the ceph_buffer and buffer separtely, so use a single constructor. Disallow put on NULL buffer; make the caller check. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: use kref for ceph_bufferSage Weil2009-12-072-12/+20
| | | | Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: mark v0.18 releaseSage Weil2009-12-041-1/+1
| | | | Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: allow preferred osd to be get/set via layout ioctlSage Weil2009-12-032-1/+5
| | | | | | | | | There is certainly no reason not to report this. The only real downside to allowing the user to set it is that you don't get default values by zeroing the layout struct (the default is -1). Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: hide /.ceph from readdir resultsSage Weil2009-12-032-0/+9
| | | | | | | We need to skip /.ceph in (cached) readdir results, and exclude "/.ceph" from the cached ENOENT lookup check. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: whitespace cleanupSage Weil2009-12-035-9/+9
| | | | Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: plug leak of request_mutexSage Weil2009-12-011-0/+1
| | | | | | Fix leak of osd client request_mutex on receiving dup ack. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: remove useless IS_ERR checksSage Weil2009-11-211-10/+0
| | | | | | | | ceph_lookup_snap_realm either returns a valid pointer or NULL; there is no need to check IS_ERR(result). Reported-by: Julia Lawall <julia@diku.dk> Signed-off-by: Sage Weil <sage@newdream.net>
* fs/ceph: Move a dereference below a NULL testJulia Lawall2009-11-211-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | If the NULL test is necessary, then the dereference should be moved below the NULL test. The semantic patch that makes this change is as follows: (http://coccinelle.lip6.fr/). // <smpl> @@ type T; expression E; identifier i,fld; statement S; @@ - T i = E->fld; + T i; ... when != E when != i if (E == NULL) S + i = E->fld; // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Sage Weil <sage@newdream.net>
* fs/ceph: introduce missing kfreeJulia Lawall2009-11-211-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Error handling code following a kmalloc should free the allocated data. The semantic match that finds this problem is as follows: (http://www.emn.fr/x-info/coccinelle/) // <smpl> @r exists@ local idexpression x; statement S; expression E; identifier f,f1,l; position p1,p2; expression *ptr != NULL; @@ x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...); ... if (x == NULL) S <... when != x when != if (...) { <+...x...+> } ( x->f1 = E | (x->f1 == NULL || ...) | f(...,x->f1,...) ) ...> ( return \(0\|<+...x...+>\|ptr\); | return@p2 ...; ) @script:python@ p1 << r.p1; p2 << r.p2; @@ print "* file: %s kmalloc %s return %s" % (p1[0].file,p1[0].line,p2[0].line) // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: remove dead codeSage Weil2009-11-201-21/+0
| | | | | | Left over from mount/auth protocol changes. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: reset msgr backoff during open, not after successful handshakeSage Weil2009-11-201-2/+1
| | | | | | | | Reset the backoff delay when we reopen the connection, so that the delays for any initial connection problems are reasonable. We were resetting only after a successful handshake, which was of limited utility. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: reset requested max_size after mds reconnectSage Weil2009-11-201-4/+17
| | | | | | | | | | | | The max_size increase request to the MDS can get lost during an MDS restart and reconnect. Reset our requested value after the MDS recovers, so that any blocked writes will re-request a larger max_size upon waking. Also, explicit wake session caps after the reconnect. Normally the cap renewal catches this, but not in the cases where the caps didn't go stale in the first place, which would leave writers waiting on max_size asleep. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: mount fails immediately on errorYehuda Sadeh2009-11-202-1/+10
| | | | Signed-off-by: Yehuda Sadeh <yehuda@newdream.net>
* ceph: decode updated mdsmap formatSage Weil2009-11-203-7/+11
| | | | | | | | | The mds map now uses the global_id as the 'key' (instead of the addr, which was a poor choice). This is protocol change. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: fix debugfs entry, simplify fsid checksSage Weil2009-11-206-140/+51
| | | | | | | | | | | 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>
* ceph: small cleanup in hash functionSage Weil2009-11-201-1/+1
| | | | Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: move mempool creation to ceph_create_clientSage Weil2009-11-181-11/+12
| | | | Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: negotiate authentication protocol; implement AUTH_NONE protocolSage Weil2009-11-1820-76/+888
| | | | | | | | | | | | | | | | 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>
* ceph: handle errors during osd client initSage Weil2009-11-184-7/+19
| | | | | | Unwind initializing if we get ENOMEM during client initialization. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: remove unnecessary ceph_con_shutdownSage Weil2009-11-181-12/+1
| | | | | | | We require that ceph_con_close be called before we drop the connection, so this is unneeded. Just BUG if con->sock != NULL. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: remove bad calls to ceph_con_shutdownSage Weil2009-11-183-16/+19
| | | | | | | | | We want to ceph_con_close when we're done with the connection, before the ref count reaches 0. Once it does, do not call ceph_con_shutdown, as that takes the con mutex and may sleep, and besides that is unnecessary. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: fix page invalidation deadlockSage Weil2009-11-121-2/+2
| | | | | | | | | | | We occasionally want to make a best-effort attempt to invalidate cache pages without fear of blocking. If this fails, we fall back to an async invalidate in another thread. Use invalidate_mapping_pages instead of invalidate_inode_page2, as that will skip locked pages, and not deadlock. Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: build cleanly without CONFIG_DEBUG_FSSage Weil2009-11-125-0/+31
| | | | Signed-off-by: Sage Weil <sage@newdream.net>
* ceph: pr_info when mds reconnect completesSage Weil2009-11-111-0/+1
| | | | | | | This helps the user know what's going on during the (involved) reconnect process. They already see when the mds fails and reconnect starts. Signed-off-by: Sage Weil <sage@newdream.net>
OpenPOWER on IntegriCloud