Max Kellermann
7fa91ec175
lib/nfs/Connection: add debug flag "in_destroy"
2014-12-15 00:03:30 +01:00
Max Kellermann
a543627abd
lib/nfs/Connection: fix memory leak (and assertion failure)
...
nfs_destroy_context() will invoke all pending callbacks with
err==-EINTR. In CancellableCallback::Callback(), this will invoke
NfsConnection::DeferClose(), which however is only designed to be
called from nfs_service(). In non-debug mode, this will leak memory
because nfs_close_async() is never called.
Workaround: before nfs_destroy_context(), invoke nfs_close_async() on
all pending file handles.
2014-12-14 16:02:47 +01:00
Max Kellermann
80f2ba7fca
lib/nfs/Connection: move code to Service()
2014-12-14 15:45:10 +01:00
Max Kellermann
7fa1a84ec3
lib/nfs/Connection: move code to method InternalClose()
2014-12-14 15:38:09 +01:00
Max Kellermann
ab4bb26a0a
lib/nfs/Connection: make in_service and in_event debug-only flags
2014-12-14 15:20:40 +01:00
Max Kellermann
07b50f6c69
lib/nfs/Connection: add methods {Open,Read,Close}Directory()
2014-10-07 06:35:50 +02:00
Max Kellermann
61b3aaaa07
lib/nfs/Connection: add method Stat(path)
2014-10-07 06:35:46 +02:00
Max Kellermann
60512ffa09
lib/nfs/Connection: make GetEventLoop() public
2014-10-06 08:47:13 +02:00
Max Kellermann
0661fd6f7c
lib/nfs/FileReader: postpone the nfs_close_async() call
...
If an async opertion is in progress, nfs_close_async() will make
libnfs crash because the RPC callback will dereference an object that
was freed by nfs_close_async().
2014-10-01 23:10:32 +02:00
Max Kellermann
edd003b62a
lib/nfs/Connection: fix memory leak when cancelling Open()
...
Close the newly allocated file handle passed to the callback.
2014-10-01 23:03:31 +02:00
Max Kellermann
10cc87e422
lib/nfs/Connection: remove Mutex
...
All locks are currenly held from only a single thread (the IOThread)
and thus we don't need the Mutex.
2014-10-01 22:15:06 +02:00
Max Kellermann
0470f648c6
lib/nfs/Connection: add method GetEventLoop()
2014-10-01 22:10:46 +02:00
Max Kellermann
777360149d
lib/nfs/Connection: remove obsolete flag postponed_destroy
2014-10-01 22:10:05 +02:00
Max Kellermann
aa7774b82b
lib/nfs/Connection: remove deprecated move constructor workaround
...
Not used anymore because NfsManager now uses boost::intrusive::set
instead of std::map.
2014-10-01 22:09:37 +02:00
Max Kellermann
579912e52f
lib/nfs/Glue: destruct the NfsManager in the I/O thread
...
This allows eliminating the indirection code from the NfsConnection
destructor.
2014-10-01 20:39:50 +02:00
Max Kellermann
fb4e6ac923
lib/nfs/Cancellable: use boost::intrusive::list
...
Reduce Remove() overhead because we don't have to walk the list to
find an iterator by reference.
2014-10-01 19:49:38 +02:00
Max Kellermann
eb8fd07900
lib/nfs/Manager: gcc 4.7 compatibility hack
...
std::map::emplace() is only available from gcc 4.8 on.
2014-06-17 10:35:34 +02:00
Max Kellermann
c99559dbe9
input/nfs: use the asynchronous libnfs API
...
More robust and cancellable.
2014-06-17 03:21:25 +02:00