Pass Options to all_docs and open_doc
diff --git a/src/fabric.erl b/src/fabric.erl
index 5be6f49..3febcc4 100644
--- a/src/fabric.erl
+++ b/src/fabric.erl
@@ -29,7 +29,7 @@
     update_doc/3, update_docs/3, purge_docs/2, att_receiver/2]).
 
 % Views
--export([all_docs/4, changes/4, query_view/3, query_view/4, query_view/6,
+-export([all_docs/5, changes/4, query_view/3, query_view/4, query_view/6,
     get_view_group_info/2]).
 
 % miscellany
@@ -238,16 +238,16 @@
 %%      also be passed to further constrain the query. See <a href=
 %%      "http://wiki.apache.org/couchdb/HTTP_Document_API#All_Documents">
 %%      all_docs</a> for details
--spec all_docs(dbname(), callback(), [] | tuple(), #mrargs{}) ->
+-spec all_docs(dbname(), [{atom(), any()}], callback(), [] | tuple(), #mrargs{}) ->
     {ok, [any()]}.
-all_docs(DbName, Callback, Acc0, #mrargs{} = QueryArgs) when
+all_docs(DbName, Options, Callback, Acc0, #mrargs{} = QueryArgs) when
         is_function(Callback, 2) ->
-    fabric_view_all_docs:go(dbname(DbName), QueryArgs, Callback, Acc0);
+    fabric_view_all_docs:go(dbname(DbName), opts(Options), QueryArgs, Callback, Acc0);
 
 %% @doc convenience function that takes a keylist rather than a record
 %% @equiv all_docs(DbName, Callback, Acc0, kl_to_query_args(QueryArgs))
-all_docs(DbName, Callback, Acc0, QueryArgs) ->
-    all_docs(DbName, Callback, Acc0, kl_to_query_args(QueryArgs)).
+all_docs(DbName, Options, Callback, Acc0, QueryArgs) ->
+    all_docs(DbName, Options, Callback, Acc0, kl_to_query_args(QueryArgs)).
 
 
 -spec changes(dbname(), callback(), any(), #changes_args{} | [{atom(),any()}]) ->
@@ -343,7 +343,7 @@
     ({error, Reason}, _Acc) ->
         {error, Reason}
     end,
-    fabric:all_docs(dbname(DbName), Callback, [], QueryArgs).
+    fabric:all_docs(dbname(DbName), [?ADMIN_CTX], Callback, [], QueryArgs).
 
 %% @doc forces a reload of validation functions, this is performed after
 %%      design docs are update
diff --git a/src/fabric_rpc.erl b/src/fabric_rpc.erl
index d2e6486..cd68d35 100644
--- a/src/fabric_rpc.erl
+++ b/src/fabric_rpc.erl
@@ -15,7 +15,7 @@
 -export([get_db_info/1, get_doc_count/1, get_update_seq/1]).
 -export([open_doc/3, open_revs/4, get_missing_revs/2, get_missing_revs/3,
     update_docs/3]).
--export([all_docs/2, changes/3, map_view/4, reduce_view/4, group_info/2]).
+-export([all_docs/3, changes/3, map_view/4, reduce_view/4, group_info/2]).
 -export([create_db/1, delete_db/1, reset_validation_funs/1, set_security/3,
     set_revs_limit/3, create_shard_db_doc/2, delete_shard_db_doc/2]).
 -export([get_all_security/2]).
@@ -48,8 +48,8 @@
         rexi:reply(Error)
     end.
 
-all_docs(DbName, #mrargs{keys=undefined} = Args) ->
-    {ok, Db} = get_or_create_db(DbName, []),
+all_docs(DbName, Options, #mrargs{keys=undefined} = Args) ->
+    {ok, Db} = get_or_create_db(DbName, Options),
     VAcc0 = #vacc{db=Db},
     couch_mrview:query_all_docs(Db, Args, fun view_cb/2, VAcc0).
 
diff --git a/src/fabric_view_all_docs.erl b/src/fabric_view_all_docs.erl
index 701afa7..e5ed7b3 100644
--- a/src/fabric_view_all_docs.erl
+++ b/src/fabric_view_all_docs.erl
@@ -12,16 +12,16 @@
 
 -module(fabric_view_all_docs).
 
--export([go/4]).
--export([open_doc/3]). % exported for spawn
+-export([go/5]).
+-export([open_doc/4]). % exported for spawn
 
 -include_lib("fabric/include/fabric.hrl").
 -include_lib("mem3/include/mem3.hrl").
 -include_lib("couch/include/couch_db.hrl").
 -include_lib("couch_mrview/include/couch_mrview.hrl").
 
-go(DbName, #mrargs{keys=undefined} = QueryArgs, Callback, Acc0) ->
-    Workers = fabric_util:submit_jobs(mem3:shards(DbName),all_docs,[QueryArgs]),
+go(DbName, Options, #mrargs{keys=undefined} = QueryArgs, Callback, Acc0) ->
+    Workers = fabric_util:submit_jobs(mem3:shards(DbName),all_docs,[Options, QueryArgs]),
     #mrargs{limit = Limit, skip = Skip} = QueryArgs,
     State = #collector{
         query_args = QueryArgs,
@@ -46,7 +46,7 @@
     end;
 
 
-go(DbName, QueryArgs, Callback, Acc0) ->
+go(DbName, Options, QueryArgs, Callback, Acc0) ->
     #mrargs{
         direction = Dir,
         include_docs = IncludeDocs,
@@ -56,7 +56,7 @@
     } = QueryArgs,
     {_, Ref0} = spawn_monitor(fun() -> exit(fabric:get_doc_count(DbName)) end),
     SpawnFun = fun(Key) ->
-        spawn_monitor(?MODULE, open_doc, [DbName, Key, IncludeDocs])
+        spawn_monitor(?MODULE, open_doc, [DbName, Options, Key, IncludeDocs])
     end,
     MaxJobs = all_docs_concurrency(),
     Keys1 = case Dir of
@@ -186,8 +186,8 @@
         end
     end.
 
-open_doc(DbName, Id, IncludeDocs) ->
-    Row = case fabric:open_doc(DbName, Id, [deleted]) of
+open_doc(DbName, Options, Id, IncludeDocs) ->
+    Row = case fabric:open_doc(DbName, Id, [deleted | Options]) of
     {not_found, missing} ->
         Doc = undefined,
         #view_row{key=Id};