2006-02-20 05:15:16 +00:00
|
|
|
|
2007-05-25 20:10:48 +00:00
|
|
|
some smallish projects:
|
|
|
|
|
|
|
|
- userspace crush tools
|
|
|
|
- xml import/export?
|
|
|
|
|
|
|
|
- generalize monitor client?
|
|
|
|
- throttle message resend attempts
|
|
|
|
|
2007-07-17 17:51:11 +00:00
|
|
|
- ENOSPC on client, OSD
|
|
|
|
|
2007-05-25 20:10:48 +00:00
|
|
|
|
|
|
|
code cleanup
|
2007-11-20 18:19:11 +00:00
|
|
|
- userspace encoding/decoding needs major cleanup
|
|
|
|
- use le32 etc annotation
|
|
|
|
- probably kill base case in encoder.h, replace with int types, with appropriate swabbing
|
2007-05-25 20:10:48 +00:00
|
|
|
|
2007-11-20 18:19:11 +00:00
|
|
|
kernel client
|
2008-01-31 17:57:44 +00:00
|
|
|
- some bugs
|
|
|
|
- open path needs to call fill_trace/fill_inode such that ci->i_max_size gets filled in
|
|
|
|
- cap handler probably needs i_mutex or something when updating file sizes
|
|
|
|
- which means it probably needs to be done in a different worker thread (NOT the messenger's)
|
2008-01-31 19:18:18 +00:00
|
|
|
- prevent client_reply from racing against a subsequent file_caps.
|
2008-01-17 02:26:21 +00:00
|
|
|
- msgr layer
|
2008-01-21 16:58:52 +00:00
|
|
|
- callbacks for 'remote reset'
|
|
|
|
- idle state, to keep connect_seq around after a disconnect
|
2008-02-26 16:59:38 +00:00
|
|
|
- fix 32bit inode handling
|
|
|
|
- see nfs_fhget, nfs_find_actor as reference for allowing multiple inodes with the same i_ino
|
2008-01-21 16:47:44 +00:00
|
|
|
- audit locking
|
|
|
|
- audit use of kmalloc vs spinlocks
|
2008-02-26 16:59:38 +00:00
|
|
|
- convert rest of ceph_fs.h to le32/le64 notation, cleaning up userspace appropriately
|
2008-01-19 16:18:14 +00:00
|
|
|
- vfs
|
2008-01-31 23:29:57 +00:00
|
|
|
- can we use dentry_path(), if it gets merged into mainline?
|
2008-01-30 16:31:25 +00:00
|
|
|
- fix file open vs file_cap race
|
|
|
|
- preemptively release caps as part of request if doing utimes/etc. on an open file?
|
2007-11-20 18:19:11 +00:00
|
|
|
- mds client
|
2008-01-21 16:47:44 +00:00
|
|
|
/ - handle file caps, ack back to mds, etc.
|
2008-01-08 23:57:37 +00:00
|
|
|
- actually flush dirty data, too
|
2008-01-18 23:38:05 +00:00
|
|
|
- test ceph_fill_trace when files/directories are moved around by another client
|
2007-11-20 18:19:11 +00:00
|
|
|
- osd client
|
2008-01-08 23:57:37 +00:00
|
|
|
- readpages (readahead)
|
2007-12-24 05:16:04 +00:00
|
|
|
- async (caching) mode
|
|
|
|
- sync mode (write-through)
|
2008-01-21 16:58:52 +00:00
|
|
|
- capability changes (flush.. need way to initiate/block on writeback initiated by mds)
|
2007-12-24 05:16:04 +00:00
|
|
|
- osd ack vs commit handling. hmm!
|
|
|
|
- handle map changes (resubmit ops)
|
2007-11-20 18:19:11 +00:00
|
|
|
- mon client
|
2007-12-21 02:14:56 +00:00
|
|
|
- work out message resend logic..?
|
2008-01-08 18:03:52 +00:00
|
|
|
- unmount
|
2008-01-21 16:47:44 +00:00
|
|
|
/ - close open file handles, mds sessions
|
|
|
|
- flush data before unmount.
|
2007-05-25 20:10:48 +00:00
|
|
|
|
2007-12-19 04:54:23 +00:00
|
|
|
osdmon
|
|
|
|
- allow fresh replacement osds. add osd_created in osdmap, probably
|
|
|
|
- actually, MasterOSDMap? and clean out OSDMap, parsing in kernel client, etc.
|
|
|
|
- monitor needs to monitor some osds...
|
|
|
|
- bootstrap crush map
|
|
|
|
|
|
|
|
crush
|
|
|
|
- xml import/export?
|
|
|
|
- named storage "pools"
|
|
|
|
- generic rule definition
|
|
|
|
- crush tools
|
2008-01-19 00:44:18 +00:00
|
|
|
- more efficient failure when all/too many osds are down
|
|
|
|
- allow forcefeed for more complicated rule structures. (e.g. make force_stack a list< set<int> >)
|
|
|
|
- "knob" bucket
|
2007-12-19 04:54:23 +00:00
|
|
|
|
|
|
|
pgmon
|
|
|
|
- monitor pg states, notify on out?
|
|
|
|
- watch osd utilization; adjust overload in cluster map
|
|
|
|
|
|
|
|
mon
|
2007-12-21 01:50:39 +00:00
|
|
|
- some sort of tester for PaxosService...
|
2007-12-19 04:54:23 +00:00
|
|
|
|
|
|
|
|
2007-10-29 17:12:02 +00:00
|
|
|
mds mustfix
|
2008-02-13 11:14:37 +00:00
|
|
|
- fix cap release size/mtime vs new open race
|
|
|
|
- mtime/size update should hold FileLock in writing state until
|
|
|
|
things are flushed to the log...?
|
|
|
|
- take "wr" reference ala ScatterLock et al?
|
2007-10-12 22:46:27 +00:00
|
|
|
- rename slave in-memory rollback on failure
|
2007-09-13 03:58:22 +00:00
|
|
|
- proper handling of cache expire messages during rejoin phase?
|
2007-11-16 21:46:52 +00:00
|
|
|
-> i think cache expires are fine; the rejoin_ack handler just has to behave if rejoining items go missing
|
|
|
|
- try_remove_unlinked_dn thing
|
2007-07-20 17:47:49 +00:00
|
|
|
|
2007-11-16 21:46:52 +00:00
|
|
|
- rerun destro trace against latest, with various journal lengths
|
2007-07-17 17:51:11 +00:00
|
|
|
|
2007-10-12 22:46:27 +00:00
|
|
|
mds
|
2008-01-31 19:18:18 +00:00
|
|
|
- fix file_data_version
|
2008-01-31 19:53:58 +00:00
|
|
|
- on recovery, validate file sizes when max_size > size
|
2008-01-31 19:18:18 +00:00
|
|
|
|
2008-01-01 23:40:52 +00:00
|
|
|
|
|
|
|
|
2007-07-17 17:51:11 +00:00
|
|
|
- extend/clean up filepath to allow paths relative to an ino
|
2007-11-20 18:19:11 +00:00
|
|
|
/ - fix path_traverse
|
2007-07-17 17:51:11 +00:00
|
|
|
- fix reconnect/rejoin open file weirdness
|
2007-10-12 22:46:27 +00:00
|
|
|
- real chdir (directory "open")
|
|
|
|
- relative metadata ops
|
2007-11-16 21:46:52 +00:00
|
|
|
- get rid of C*Discover objects for replicate_to .. encode to bufferlists directly?
|
2007-06-06 22:43:47 +00:00
|
|
|
- consistency points/snapshots
|
|
|
|
- dentry versions vs dirfrags...
|
|
|
|
- detect and deal with client failure
|
2007-07-17 17:51:11 +00:00
|
|
|
- failure during reconnect vs clientmap. although probalby the whole thing needs a larger overhaul...
|
2007-06-06 22:43:47 +00:00
|
|
|
|
2007-11-16 21:46:52 +00:00
|
|
|
- inode.rmtime (recursive mtime)
|
|
|
|
- make inode.size reflect directory size (number of entries)
|
|
|
|
|
2007-06-06 22:43:47 +00:00
|
|
|
- osd needs a set_floor_and_read op for safe failover/STOGITH-like semantics.
|
|
|
|
|
2007-10-12 22:46:27 +00:00
|
|
|
- could mark dir complete in EMetaBlob by counting how many dentries are dirtied in the current log epoch in CDir...
|
2007-08-22 17:37:13 +00:00
|
|
|
|
2007-05-16 21:53:22 +00:00
|
|
|
- fix rmdir empty exported dirfrag race
|
|
|
|
- export all frags <= 1 item? then we ensure freezing before empty, avoiding any last unlink + export vs rmdir race.
|
|
|
|
- how to know full dir size (when trimming)?
|
|
|
|
- put frag size/mtime in fragmap in inode? we will need that anyway for stat on dirs
|
|
|
|
- will need to make inode discover/import_decode smart about dirfrag auth
|
|
|
|
- or, only put frag size/mtime in inode when frag is closed. otherwise, soft (journaled) state, possibly on another mds.
|
|
|
|
- need to move state from replicas to auth. simplelock doesn't currently support that.
|
|
|
|
- ScatterLock or something? hrm.
|
|
|
|
|
2007-10-12 22:46:27 +00:00
|
|
|
- FIXME how to journal/store root and stray inode content?
|
2007-05-16 21:53:22 +00:00
|
|
|
- in particular, i care about dirfragtree.. get it on rejoin?
|
|
|
|
- and dir sizes, if i add that... also on rejoin?
|
|
|
|
|
2007-10-12 22:46:27 +00:00
|
|
|
- efficient stat for single writers
|
|
|
|
- add FILE_CAP_EXTEND capability bit
|
|
|
|
|
2007-05-16 21:53:22 +00:00
|
|
|
|
2007-11-16 21:46:52 +00:00
|
|
|
client
|
2008-01-31 19:53:58 +00:00
|
|
|
- obey file_max
|
|
|
|
- client needs to be smart about all of this..
|
|
|
|
- revoke own caps when they time out,
|
2007-11-16 21:46:52 +00:00
|
|
|
- clean up client mds session vs mdsmap behavior?
|
|
|
|
- client caps migration races
|
|
|
|
- caps need a seq number; reap logic needs to be a bit smarter
|
|
|
|
- also needs cope with mds failures
|
|
|
|
|
2007-05-16 21:53:22 +00:00
|
|
|
|
2007-01-11 19:57:25 +00:00
|
|
|
|
2007-02-17 22:49:47 +00:00
|
|
|
journaler
|
|
|
|
- fix up for large events (e.g. imports)
|
|
|
|
- use set_floor_and_read for safe takeover from possibly-not-quite-dead otherguy.
|
|
|
|
- should we pad with zeros to avoid splitting individual entries?
|
|
|
|
- make it a g_conf flag?
|
|
|
|
- have to fix reader to skip over zeros (either <4 bytes for size, or zeroed sizes)
|
|
|
|
- need to truncate at detected (valid) write_pos to clear out any other partial trailing writes
|
|
|
|
|
|
|
|
|
2008-01-31 20:01:31 +00:00
|
|
|
fsck
|
|
|
|
- fsck.ebofs
|
|
|
|
- online mds fsck?
|
|
|
|
|
|
|
|
|
2007-02-17 22:49:47 +00:00
|
|
|
|
|
|
|
|
2006-11-29 22:52:02 +00:00
|
|
|
rados snapshots
|
2007-02-17 22:49:47 +00:00
|
|
|
- integrate revisions into ObjectCacher
|
|
|
|
- clean up oid.rev vs op.rev in osd+osdc
|
|
|
|
|
2006-12-01 21:44:02 +00:00
|
|
|
- attr.crev is rev we were created in.
|
|
|
|
- oid.rev=0 is "live". defined for attr.crev <= rev.
|
|
|
|
- otherwise, defined for attr.crev <= rev < oid.rev (i.e. oid.rev is upper bound, non-inclusive.)
|
|
|
|
|
2006-12-07 19:17:37 +00:00
|
|
|
- write|delete is tagged with op.rev
|
|
|
|
- if attr.crev < op.rev
|
|
|
|
- we clone to oid.rev=rev (clone keeps old crev)
|
2006-12-01 21:44:02 +00:00
|
|
|
- change live attr.crev=rev.
|
2006-12-07 19:17:37 +00:00
|
|
|
- apply update
|
2006-12-01 21:44:02 +00:00
|
|
|
- read is tagged with op.rev
|
|
|
|
- if 0, we read from 0 (if it exists).
|
|
|
|
- otherwise we choose object rev based on op.rev vs oid.rev, and then verifying attr.crev <= op.rev.
|
2006-11-29 22:52:02 +00:00
|
|
|
|
2006-08-14 04:44:55 +00:00
|
|
|
- how to get usage feedback to monitor?
|
|
|
|
|
2006-11-21 00:13:24 +00:00
|
|
|
- clean up mds caps release in exporter
|
|
|
|
- figure out client failure modes
|
|
|
|
- add connection retry.
|
|
|
|
|
2006-11-20 20:51:49 +00:00
|
|
|
|
2007-02-17 22:49:47 +00:00
|
|
|
objecter
|
2007-08-25 22:40:01 +00:00
|
|
|
- maybe_request_map should set a timer event to periodically re-request.
|
2007-06-06 22:43:47 +00:00
|
|
|
- transaction prepare/commit
|
2007-02-17 22:49:47 +00:00
|
|
|
- read+floor_lockout
|
2006-10-02 03:55:32 +00:00
|
|
|
|
|
|
|
osd/rados
|
2007-11-20 18:19:11 +00:00
|
|
|
- fix build_prior_set behavior. needs to not always exclude currently down nodes. e.g.,
|
|
|
|
|
|
|
|
1: A B
|
|
|
|
2: B
|
|
|
|
3: A -> prior_set should be <A,B>, bc B may have independently applied updates.
|
|
|
|
|
|
|
|
1: A B C
|
|
|
|
2: B C
|
|
|
|
3: A C -> prior_set can be <A,C>, bc C would carry any epoch 2 updates
|
|
|
|
|
|
|
|
1: A B C
|
|
|
|
2: B C
|
|
|
|
3: A C -> prior_set can be <A,C>, bc C would carry any epoch 2 updates
|
|
|
|
|
|
|
|
-> so: we need at least 1 osd from each epoch, IFF we make store sync on osdmap boundaries.
|
|
|
|
|
|
|
|
- paxos replication (i.e. majority voting)?
|
|
|
|
|
2007-06-06 22:43:47 +00:00
|
|
|
- transaction prepare/commit
|
|
|
|
- rollback
|
|
|
|
- rollback logging (to fix slow prepare vs rollback race)
|
2007-02-17 22:49:47 +00:00
|
|
|
- read+floor_lockout for clean STOGITH-like/fencing semantics after failover.
|
2007-08-13 19:14:00 +00:00
|
|
|
|
2006-09-15 21:53:31 +00:00
|
|
|
- consider implications of nvram writeahead logs
|
2007-08-13 19:14:00 +00:00
|
|
|
- clean shutdown?
|
|
|
|
- pgmonitor should supplement failure detection
|
|
|
|
|
|
|
|
- flag missing log entries on crash recovery --> WRNOOP? or WRLOST?
|
|
|
|
|
|
|
|
- efficiently replicate clone() objects
|
2006-09-10 03:43:27 +00:00
|
|
|
- fix heartbeat wrt new replication
|
2006-09-13 21:00:01 +00:00
|
|
|
- mark residual pgs obsolete ???
|
2006-08-03 19:59:26 +00:00
|
|
|
- rdlocks
|
2006-09-15 21:53:31 +00:00
|
|
|
- optimize remove wrt recovery pushes
|
2006-07-28 19:07:47 +00:00
|
|
|
- report crashed pgs?
|
|
|
|
|
2007-07-13 17:29:26 +00:00
|
|
|
messenger
|
|
|
|
- fix messenger shutdown.. we shouldn't delete messenger, since the caller may be referencing it, etc.
|
|
|
|
|
2007-02-17 22:49:47 +00:00
|
|
|
simplemessenger
|
2008-01-31 20:01:31 +00:00
|
|
|
- fix/audit accept() logic to detect reset, do callback
|
2006-10-09 19:10:44 +00:00
|
|
|
- close idle connections
|
2007-10-29 17:12:02 +00:00
|
|
|
- take a look at RDS? http://oss.oracle.com/projects/rds/
|
|
|
|
|
2006-08-02 18:00:24 +00:00
|
|
|
|
|
|
|
objectcacher
|
2007-08-13 19:14:00 +00:00
|
|
|
- merge clean bh's
|
2006-08-04 23:15:35 +00:00
|
|
|
- ocacher caps transitions vs locks
|
|
|
|
- test read locks
|
2006-08-02 18:00:24 +00:00
|
|
|
|
2006-06-26 20:53:41 +00:00
|
|
|
reliability
|
2007-02-17 22:49:47 +00:00
|
|
|
- heartbeat vs ping?
|
2006-06-26 20:53:41 +00:00
|
|
|
- osdmonitor, filter
|
|
|
|
|
2006-08-14 04:44:55 +00:00
|
|
|
ebofs
|
2007-12-19 20:00:10 +00:00
|
|
|
- btrees
|
|
|
|
- checksums
|
|
|
|
- dups
|
|
|
|
- sets
|
|
|
|
|
2007-11-16 21:46:52 +00:00
|
|
|
- optionally scrub deallocated extents
|
|
|
|
- clone()
|
|
|
|
|
|
|
|
- map ObjectStore
|
2007-08-13 19:14:00 +00:00
|
|
|
|
2006-12-07 19:17:37 +00:00
|
|
|
- verify proper behavior of conflicting/overlapping reads of clones
|
2006-09-26 22:22:01 +00:00
|
|
|
- combine inodes and/or cnodes into same blocks
|
|
|
|
- fix bug in node rotation on insert (and reenable)
|
2006-10-25 18:17:42 +00:00
|
|
|
- fix NEAR_LAST_FWD (?)
|
2007-08-13 19:14:00 +00:00
|
|
|
|
|
|
|
- awareness of underlying software/hardware raid in allocator so that we
|
|
|
|
write full stripes _only_.
|
|
|
|
- hmm, that's basically just a large block size.
|
|
|
|
|
|
|
|
- rewrite the btree code!
|
|
|
|
- multithreaded
|
|
|
|
- eliminate nodepools
|
|
|
|
- allow btree sets
|
|
|
|
- allow arbitrary embedded data?
|
|
|
|
- allow arbitrary btrees
|
|
|
|
- allow root node(s?) to be embedded in onode, or whereever.
|
|
|
|
- keys and values can be uniform (fixed-size) or non-uniform.
|
|
|
|
- fixed size (if any) is a value in the btree struct.
|
|
|
|
- negative indicates bytes of length value? (1 -> 255bytes, 2 -> 65535 bytes, etc.?)
|
|
|
|
- non-uniform records preceeded by length.
|
|
|
|
- keys sorted via a comparator defined in btree root.
|
|
|
|
- lexicographically, by default.
|
|
|
|
|
|
|
|
- goal
|
|
|
|
- object btree key->value payload, not just a data blob payload.
|
|
|
|
- better threading behavior.
|
|
|
|
- with transactional goodness!
|
|
|
|
|
|
|
|
- onode
|
|
|
|
- object attributes.. as a btree?
|
|
|
|
- blob stream
|
|
|
|
- map stream.
|
|
|
|
- allow blob values.
|
|
|
|
|
|
|
|
-
|
|
|
|
|
2006-08-14 04:44:55 +00:00
|
|
|
|
|
|
|
|
2006-08-04 23:15:35 +00:00
|
|
|
remaining hard problems
|
|
|
|
- how to cope with file size changes and read/write sharing
|
|
|
|
|