2008-09-10 22:53:00 +00:00
|
|
|
v0.5
|
2008-11-06 18:56:51 +00:00
|
|
|
/- debug restart, cosd reformat, etc.
|
2008-11-05 22:54:51 +00:00
|
|
|
/- finish btrfs ioctl interface
|
2008-11-06 18:56:51 +00:00
|
|
|
/- efficient snap recovery
|
|
|
|
/- throttle osd recovery
|
|
|
|
/- forced unmount?
|
2008-10-08 23:45:31 +00:00
|
|
|
|
|
|
|
v0.6
|
2008-11-06 18:56:51 +00:00
|
|
|
- ENOSPC
|
|
|
|
- async metadata ops
|
|
|
|
|
|
|
|
v0.7
|
2008-10-08 23:45:31 +00:00
|
|
|
- cas?
|
2008-06-19 03:59:50 +00:00
|
|
|
|
2008-05-10 23:31:14 +00:00
|
|
|
big items
|
2008-10-08 23:45:31 +00:00
|
|
|
- finish client failure recovery (reconnect after long eviction; and slow delayed reconnect)
|
2008-06-16 22:52:07 +00:00
|
|
|
- ENOSPC
|
2008-10-08 17:49:12 +00:00
|
|
|
- space reservation in ObjectStore, redeemed by Transactions?
|
|
|
|
- reserved as PG goes active; reservation canceled when pg goes inactive
|
|
|
|
- something similar during recovery
|
|
|
|
- ?
|
2008-09-15 23:01:30 +00:00
|
|
|
- repair
|
2008-07-25 23:23:00 +00:00
|
|
|
- enforceable quotas?
|
2008-05-10 23:31:14 +00:00
|
|
|
- mds security enforcement
|
|
|
|
- client, user authentication
|
|
|
|
- cas
|
2008-07-25 23:23:00 +00:00
|
|
|
- osd failure declarations
|
|
|
|
- libuuid?
|
|
|
|
|
|
|
|
|
2008-09-18 22:39:54 +00:00
|
|
|
repair
|
|
|
|
- are we concerned about
|
|
|
|
- scrubbing
|
|
|
|
- reconstruction after loss of subset of cdirs
|
|
|
|
- reconstruction after loss of md log
|
|
|
|
- data object
|
|
|
|
- path backpointers?
|
|
|
|
- parent dir pointer?
|
|
|
|
- cdir objects
|
|
|
|
- parent dir pointer
|
|
|
|
- update on rename? or on cdir store?
|
|
|
|
on cdir store is sufficient if mdlog survives...
|
|
|
|
- or what the hell, full trace?
|
|
|
|
- mds scrubbing
|
|
|
|
- rados scrubbing
|
2008-07-25 23:23:00 +00:00
|
|
|
|
2008-07-30 04:40:59 +00:00
|
|
|
snaps on osd
|
|
|
|
- garbage collection
|
2008-09-15 23:01:30 +00:00
|
|
|
- don't start collection on replica until clean?
|
2008-08-18 20:57:04 +00:00
|
|
|
- efficient recovery of clones using the clone diff info
|
2008-09-16 23:36:12 +00:00
|
|
|
- recovery on primary
|
2008-09-20 19:37:46 +00:00
|
|
|
- log order vs recovery/clone order?
|
|
|
|
- rep_op_push on primary needs to be smart
|
|
|
|
- IndexLog could somehow aggregate data_subsets?
|
2008-09-16 23:36:12 +00:00
|
|
|
- primary pushes to replicas
|
|
|
|
- clone/rename, + push of new head
|
2008-09-20 19:37:46 +00:00
|
|
|
|
2008-04-18 15:10:33 +00:00
|
|
|
|
2007-11-20 18:19:11 +00:00
|
|
|
kernel client
|
2008-10-16 23:34:44 +00:00
|
|
|
- make osd retry writes if failure after ack..
|
2008-10-16 19:13:09 +00:00
|
|
|
- ACLs
|
|
|
|
- reconnect path should include pathbase, not just a string?
|
2008-06-23 13:45:49 +00:00
|
|
|
- make writepages maybe skip pages with errors?
|
|
|
|
- EIO, or ENOSPC?
|
|
|
|
- ... writeback vs ENOSPC vs flush vs close()... hrm...
|
2008-06-16 22:52:07 +00:00
|
|
|
- set mapping bits for ENOSPC, EIO?
|
2008-04-17 01:53:13 +00:00
|
|
|
- flush caps on sync, fsync, etc.
|
2008-10-02 16:57:48 +00:00
|
|
|
- do we need to block? how do we track that?
|
2008-09-18 22:39:54 +00:00
|
|
|
- forced unmount?
|
2008-03-07 18:37:33 +00:00
|
|
|
- procfs/debugfs
|
2008-03-03 06:41:06 +00:00
|
|
|
- adjust granular debug levels too
|
|
|
|
- should we be using debugfs?
|
2008-03-07 18:37:33 +00:00
|
|
|
- a dir for each client instance (client###)?
|
|
|
|
- hooks to get mds, osd, monmap epoch #s
|
2008-10-02 16:57:48 +00:00
|
|
|
- populate sysfs?
|
|
|
|
- things that would be useful to see
|
|
|
|
- fsid
|
|
|
|
- map versions on client
|
|
|
|
- outstanding mds, osd, mon requests?
|
2008-06-12 21:23:43 +00:00
|
|
|
- fix readdir vs fragment race by keeping a separate frag pos, and ignoring dentries below it
|
2008-10-01 22:17:27 +00:00
|
|
|
- reconnect after being disconnected from the mds
|
2007-05-25 20:10:48 +00:00
|
|
|
|
2008-10-02 16:57:48 +00:00
|
|
|
kclient items to review
|
|
|
|
- fill_trace locking
|
|
|
|
- async trunc
|
|
|
|
- async writeback
|
|
|
|
- cache invalidation race, locking problems
|
|
|
|
- cap changes are serialized by i_lock, but (thorough) cache invalidation may block..
|
|
|
|
|
|
|
|
|
2008-06-23 13:45:49 +00:00
|
|
|
vfs issues
|
|
|
|
- real_lookup() race:
|
|
|
|
1- hash lookup find no dentry
|
|
|
|
2- real_lookup() takes dir i_mutex, but then finds a dentry
|
|
|
|
3- drops mutex, then calld d_revalidate. if that fails, we return ENOENT (instead of looping?)
|
|
|
|
- vfs_rename_dir()
|
2007-05-25 20:10:48 +00:00
|
|
|
|
2008-09-18 22:39:54 +00:00
|
|
|
userspace client
|
|
|
|
- handle session STALE
|
|
|
|
- time out caps, wake up waiters on renewal
|
|
|
|
- link caps with mds session
|
|
|
|
- validate dn leases
|
|
|
|
- fix lease validation to check session ttl
|
|
|
|
- clean up ll_ interface, now that we have leases!
|
2008-03-20 16:41:09 +00:00
|
|
|
- clean up client mds session vs mdsmap behavior?
|
2008-09-18 22:39:54 +00:00
|
|
|
- stop using mds's inode_t?
|
|
|
|
- fix readdir vs fragment race by keeping a separate frag pos, and ignoring dentries below it
|
2007-12-19 04:54:23 +00:00
|
|
|
|
2008-06-04 18:08:06 +00:00
|
|
|
mds
|
2008-09-18 22:39:54 +00:00
|
|
|
- hard link backpointers
|
|
|
|
- anchor source dir
|
|
|
|
- build snaprealm for any hardlinked file
|
|
|
|
- include snaps for all (primary+remote) parents
|
|
|
|
|
2008-10-20 22:37:49 +00:00
|
|
|
- how do we properly clean up inodes when doing a snap purge?
|
|
|
|
- when they are mid-recover? see 136470cf7ca876febf68a2b0610fa3bb77ad3532
|
|
|
|
|
2008-08-14 18:17:25 +00:00
|
|
|
- whats with the 'clear if dirtyscattered' bit in decode_import_inode()?
|
|
|
|
|
2008-10-01 18:53:38 +00:00
|
|
|
- what if a recovery is queued, or in progress, and the inode is then cowed? can that happen?
|
|
|
|
|
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
|
|
|
|
2008-07-18 21:04:26 +00:00
|
|
|
- rename: importing inode... also journal imported client map?
|
|
|
|
|
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
|
|
|
|
2008-03-31 17:27:12 +00:00
|
|
|
- lease length heuristics
|
|
|
|
- mds lock last_change stamp?
|
|
|
|
|
2008-06-05 14:14:45 +00:00
|
|
|
- handle slow client reconnect (i.e. after mds has gone active)
|
2008-03-28 16:42:37 +00:00
|
|
|
|
2008-02-29 00:58:28 +00:00
|
|
|
- fix reconnect/rejoin open file weirdness
|
2008-06-04 18:08:06 +00:00
|
|
|
|
2008-06-05 14:14:45 +00:00
|
|
|
- can we get rid of the dirlock remote auth_pin weirdness on subtree roots?
|
2008-06-04 18:08:06 +00:00
|
|
|
- anchor_destroy needs to xlock linklock.. which means it needs a Mutation wrapper?
|
|
|
|
- ... when it gets a caller.. someday..
|
2008-05-22 21:20:30 +00:00
|
|
|
|
2008-06-04 18:08:06 +00:00
|
|
|
- make truncate faster with a trunc_seq, attached to objects as attributes?
|
2007-11-16 21:46:52 +00:00
|
|
|
|
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-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-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-09-18 22:39:54 +00:00
|
|
|
osdmon
|
|
|
|
- monitor needs to monitor some osds...
|
|
|
|
|
|
|
|
crush
|
|
|
|
- allow forcefeed for more complicated rule structures. (e.g. make force_stack a list< set<int> >)
|
|
|
|
- "knob" bucket
|
|
|
|
|
|
|
|
pgmon
|
|
|
|
- include osd vector with pg state
|
|
|
|
- check for orphan pgs
|
|
|
|
- monitor pg states, notify on out?
|
|
|
|
- watch osd utilization; adjust overload in cluster map
|
|
|
|
|
|
|
|
mon
|
|
|
|
- paxos need to clean up old states.
|
|
|
|
- some sort of tester for PaxosService...
|
|
|
|
- osdmon needs to lower-bound old osdmap versions it keeps around?
|
|
|
|
|
2007-02-17 22:49:47 +00:00
|
|
|
objecter
|
2008-06-05 23:58:43 +00:00
|
|
|
- fix failure handler...
|
|
|
|
- generic mon client?
|
2007-08-25 22:40:01 +00:00
|
|
|
- maybe_request_map should set a timer event to periodically re-request.
|
2008-05-16 21:54:04 +00:00
|
|
|
- transaction prepare/commit?
|
2007-02-17 22:49:47 +00:00
|
|
|
- read+floor_lockout
|
2006-10-02 03:55:32 +00:00
|
|
|
|
2008-10-17 20:30:33 +00:00
|
|
|
osd
|
|
|
|
- snap_trimmers should detect, remove unused snap collections (and update snap_collections set)
|
2008-10-17 20:36:15 +00:00
|
|
|
- cope with divergent logs (update AND removal) in merge_log...
|
|
|
|
(make merge_log augment omissing?)
|
2008-10-17 20:30:33 +00:00
|
|
|
|
2008-05-16 22:33:57 +00:00
|
|
|
- how does an admin intervene when a pg needs a dead osd to repeer?
|
2008-03-24 19:53:26 +00:00
|
|
|
|
|
|
|
- a more general fencing mechanism? per-object granularity isn't usually a good match.
|
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
|
|
|
|
|
|
|
- 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
|
2007-07-13 17:29:26 +00:00
|
|
|
|
2007-02-17 22:49:47 +00:00
|
|
|
simplemessenger
|
2006-10-09 19:10:44 +00:00
|
|
|
- close idle connections
|
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-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
|
|
|
|
|