Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
57 lines (56 sloc) 4.21 KB
* TODO Implement missing calls
** DONE link
** DONE mkdir
** DONE removexattr
** DONE rename
** DONE rmdir
** DONE setxattr
** DONE statfs
** DONE symlink
** DONE unlink
** DONE setlk
** DONE getlk
* TODO Finish incomplete implementations of these calls:
** DONE readlink
** DONE access
** DONE flush
** TODO forget
** TODO fsync/fsyncdir
** DONE getxattr
** DONE listxattr
** DONE mknod
** DONE create
** TODO releasedir
* TODO Should we cleanup inodes on removals?
* TODO Improve access/3 and access_dir/3 callback model -- it looks more like a workaround
* TODO Find the best way for newly started amqpfs daemons to get the list of directories that were announced prior to daemon launch (it could be either asking them to relist them, or... well, that's something to figure out)
* TODO Consider making call_module to call a fallback function if 'fallback' was returned
* DONE Consider adding erlang-ossp-uuid to the project to use UUID functionality
* DONE Think about some generalization for the string:tokens(SomeKey, "/") case (providers), it will be very common
* TODO Think of a better way to pass #amqpfs State to dot_amqpfs_provider
* TODO On sweeping, remove inodes and send some error replies on pending Conts for that inodes (needs monitoring continuations)
* TODO Consider making a special case for {rmdir, "/announced_directory"} being somehow routed to the provider that announced "/announced_directory" as well
* TODO Improve announcement number calculation in amqpfs_response_policy, as current one will not properly account that, for example, if we have two providers, providing /p1 and /p1/p2 respectively (rare but technically possibly) it will not know about /p1 (will stop on /p1/p2)
* TODO Think about renaming scenario when src and dest are served by different providers. It is not supported as of now, but might be an interesting case.
* TODO Think about linking scenario when src and dest are served by different providers. It is not supported as of now, but might be an interesting case.
* DONE For a short period of time after startup, some of root directories do not belong to uid/gid, but to root/root (means 0)
* DONE Consider counting st_nlinks for directories properly
* DONE . and .. should get proper uid/gid (now they are just 0/0), as well as permissions, actually
* DONE Add readable(Path, owner|group|other, State), writable(Path, ..., ...) and executable(Path, ..., ...) callbacks
* TODO Directory announcement cancellation support
* DONE Do something about namings in mq provider as some names can contain characters like "/". Or just pay less attention to mq_amqpfs_provider and move it to tests/ or samples/ :)
* TODO Consider passing Fi for write and read
* TODO Sometimes some things in Makefile make it build some deps more than once, but not each time (after fresh clones, supposedly)
* DONE Now sure what to do with timezones, currently 0 will not correspond to 1970/1/1 00:00 (unless you're in London or anywhere else with GMT+0). Observed this in PST
** In fact, that was alright, UTC 1970/1/1 happens 1969/12/31 4PM PST.
* DONE Decide whether providers should have any special access to uid/gid of attrs (i.e. uid/gid callbacks)
** DONE Actually we can pass uid/gid from ctx as a header and then store it in ReqState and default uid() and guid() callbacks will return it... so by default it will always belong to current user, but still configurable
* DONE Do something about not seeing (some?) of error messages generated by providers (on console)
* DONE Implement set_atime/3 and set_mtime/3 callbacks
* DONE Consider moving amqpfs_server:setattr_stat code to amqpfs_provider_base so it will be easier to detect what was actually set
* TODO Not sure whether running root and dot amqpfs providers and letting them drop non-local requests is the wisest way to do this kind of things
** TODO It :might: make more sense to have non-AMQP providers with absolutely the same API and using the same amqpfs_provider_base. Basically a "shortcut" adapter.
* TODO Make spawning in amqpfs providers optional (either using some nice option or by just forcing amqpfs providers to spawn processes themselves) :maybe:
* TODO Review how remote_XXX() API in amqpfs_server can be simplified (it is a little bit messy as of now)
* DONE Add caching
** DONE Add ttl() callback