aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2009-11-12ceph: fix page invalidation deadlockSage Weil
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>
2009-11-12ceph: build cleanly without CONFIG_DEBUG_FSSage Weil
Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-11ceph: pr_info when mds reconnect completesSage Weil
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>
2009-11-11ceph: initialize i_size/i_rbytes on snapdirSage Weil
Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-11ceph: exclude snapdir from readdir resultsSage Weil
It was hidden from sync readdir, but not the cached dcache version. Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-10ceph: remove recon_gen logicSage Weil
We don't get an explicit affirmative confirmation that our caps reconnect, nor do we necessarily want to pay that cost. So, take all this code out for now. Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-10ceph: separate banner and connect during handshake into distinct stagesSage Weil
We need to make sure we only swab the address during the banner once. So break process_banner out of process_connect, and clean up the surrounding code so that these are distinct phases of the handshake. Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-09ceph: do not confuse stale and dead (unreconnected) capsSage Weil
We were using the cap_gen to track both stale caps (caps that timed out due to temporarily losing touch with the mds) and dead caps that did not reconnect after an MDS failure. Introduce a recon_gen counter to track reconnections to restarted MDSs and kill dead caps based on that instead. Rename gen to cap_gen while we're at it to make it more clear which is which. Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-07ceph: make CRUSH hash function a bucket propertySage Weil
Make the integer hash function a property of the bucket it is used on. This allows us to gracefully add support for new hash functions without starting from scatch. Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-06ceph: make object hash a pg_pool propertySage Weil
The object will be hashed to a placement seed (ps) based on the pg_pool's hash function. This allows new hashes to be introduced into an existing object store, or selection of a hash appropriate to the objects that will be stored in a particular pool. Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-06ceph: use strong hash function for mapping objects to pgsSage Weil
We were using the (weak) dcache hash function, but it was leaving lower bits consecutive for consecutive (inode) objects. We really want to make the object to pg mapping random and uniform, so use a proper hash function here. This is Robert Jenkin's public domain hash function (with some minor cleanup): http://burtleburtle.net/bob/hash/evahash.html This is a protocol revision. Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-06ceph: make CRUSH hash functions non-inlineSage Weil
These are way to big to be inline. I missed crush/* when doing the inline audit for akpm's review. Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-06ceph: clean up 'osd%d down' console msgSage Weil
No ceph prefix. Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-04ceph: convert port endiannessSage Weil
The port is informational only, but we should make it correct. Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-04ceph: fix sparse endian warningSage Weil
Use the __le macro, even though for -1 it doesn't matter. Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-04ceph: fix endian conversions for ceph_pgSage Weil
The endian conversions don't quite work with the old union ceph_pg. Just make it a regular struct, and make each field __le. This is simpler and it has the added bonus of actually working. Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-03ceph: use fixed endian encoding for ceph_entity_addrSage Weil
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-11-02ceph: init/destroy bdi in client create/destroy helpersSage Weil
This keeps bdi setup/teardown in line with client life cycle. Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-01crush: always return a value from crush_bucket_chooseSage Weil
Even when we encounter a corrupt bucket. We still BUG(). This fixes the warning fs/ceph/crush/mapper.c: In function 'crush_choose': fs/ceph/crush/mapper.c:352: warning: control may reach end of non-void function 'crush_bucket_choose' being inlined Signed-off-by: Sage Weil <sage@newdream.net>
2009-11-01ceph: fix uninitialized err variableSage Weil
Fixes warning fs/ceph/xattr.c: In function '__build_xattrs': fs/ceph/xattr.c:353: warning: 'err' may be used uninitialized in this function Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-30ceph: fix intra strip unit length calculationNoah Watkins
Commit 645a102581b3639836b17d147c35d574fd6e8267 fixes calculation of object offset for layouts with multiple stripes per object. This updates the calculation of the length written to take into account multiple stripes per object. Signed-off-by: Noah Watkins <noah@noahdesu.com> Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-28ceph: fix object striping calculation for non-default striping schemesSage Weil
We were incorrectly calculationing of object offset. If we have multiple stripe units per object, we need to shift to the start of the current su in addition to the offset within the su. Also rename bno to ono (object number) to avoid some variable naming confusion. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-28ceph: correct comment to match striping calculationSage Weil
The object extent offset is the file offset _modulo_ the stripe unit. The code was correct, the comment was wrong. Reported-by: Noah Watkins <jayhawk@soe.ucsc.edu> Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-28ceph: remove redundant use of le32_to_cpuNoah Watkins
Using stripe unit size calculated and saved on the stack to avoid a redundant call to le32_to_cpu. Signed-off-by: Noah Watkins <noah@noahdesu.com> Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-28ceph: replace list_entry with container_ofNoah Watkins
Usage of non-list.h list_entry function for container_of functionality replaced with direct use of container_of. Signed-off-by: Noah Watkins <noah@noahdesu.com> Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-27ceph: allocate and parse mount args before client instanceSage Weil
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-27ceph: fix, clean up string mount arg parsingSage Weil
Clearly demark int and string argument options, and do not try to convert string arguments to ints. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-26ceph: silence uninitialized variable warningSage Weil
Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-26ceph: reduce parse_mount_args stack usageSage Weil
Since we've increased the max mon count, we shouldn't put the addr array on the parse_mount_args stack. Put it on the heap instead. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-22ceph: remove small mon addr limit; use CEPH_MAX_MON where appropriateSage Weil
Get rid of separate max mon limit; use the system limit instead. This allows mounts when there are lots of mon addrs provided by mount.ceph (as with a host with lots of A/AAAA records). Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-21ceph: move directory size logic to ceph_getattrSage Weil
We can't fill i_size with rbytes at the fill_file_size stage without adding additional checks for directories. Notably, we want st_blocks to remain 0 on directories so that 'du' still works. Fill in i_blocks, i_size specially in ceph_getattr instead. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-19ceph: v0.17 of clientSage Weil
Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-19ceph: include preferred osd in placement seedSage Weil
Mix the preferred osd (if any) into the placement seed that is fed into the CRUSH object placement calculation. This prevents all the placement pgs from peering with the same osds. Rev the osd client protocol with this change. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-16ceph: enable readaheadSage Weil
Initialized bdi->ra_pages to enable readahead. Use 512KB default. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-15ceph: move dirty caps code aroundSage Weil
Cleanup only. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-15ceph: warn on allocation from msgpool with larger front_lenSage Weil
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 Weil
Defined a struct for the SUBSCRIBE_ACK, and use that to size the msgpool. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-15ceph: flush dirty caps via the cap_dirty listSage Weil
Previously we were flushing dirty caps by passing an extra flag when traversing the delayed caps list. Besides being a bit ugly, that can also miss caps that are dirty but didn't result in a cap requeue: notably, mark_caps_dirty(). Separate the flushing into a separate helper, and traverse the cap_dirty list. This also brings i_dirty_item in line with i_dirty_caps: we are on the list IFF caps != 0. We carry an inode ref IFF dirty_caps|flushing_caps != 0. Lose the unused return value from __ceph_mark_caps_dirty(). Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-14ceph: move generic flushing code into helperSage Weil
Both callers of __mark_caps_flushing() do the same work; move it into the helper. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-14ceph: initialize sb->s_bdi, bdi_unregister after kill_anon_superSage Weil
Writeback doesn't work without the bdi set, and writeback on umount doesn't work if we unregister the bdi too early. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-14ceph: convert encode/decode macros to inlinesSage Weil
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-13ceph: add version field to message headerSage Weil
This makes it easier for individual message types to indicate their particular encoding, and make future changes backward compatible. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-12ceph: remove unused CEPH_MSG_{OSD,MDS}_GETMAPSage Weil
Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-12ceph: ignore trailing data in monampSage Weil
This lets us extend the format more easily. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-09ceph: add file layout validationSage Weil
This tracks updates to code shared with userspace. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-09ceph: update to mon client protocol v15Sage Weil
The mon request headers now include session_mon information that must be properly initialized. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-09ceph: cancel osd requests before resending themSage Weil
This ensures we don't submit the same request twice if we are kicking a specific osd (as with an osd_reset), or when we hit a transient error and resend. Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-09ceph: reset osd session on fault, not peer_resetSage Weil
The peer_reset just takes longer (until we reconnect and discover the osd dropped the session... which it will). Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-09ceph: fail gracefully on corrupt osdmap (bad pg_temp mapping)Sage Weil
Return an error and report a corrupt map instead of crying BUG(). Signed-off-by: Sage Weil <sage@newdream.net>
2009-10-09ceph: revoke osd request message on request completionSage Weil
If an osd has failed or returned and a request has been sent twice, it's possible to get a reply and unregister the request while the request message is queued for delivery. Since the message references the caller's page vector, we need to revoke it before completing. Signed-off-by: Sage Weil <sage@newdream.net>