Linux sagir-us1.hostever.us 5.14.0-570.51.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Oct 8 09:41:34 EDT 2025 x86_64
LiteSpeed
Server IP : 104.247.108.91 & Your IP : 216.73.216.26
Domains : 74 Domain
User : georgeto
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
doc /
python3-llfuse /
html /
.doctrees /
Delete
Unzip
Name
Size
Permission
Date
Action
about.doctree
10.45
KB
-rw-r--r--
2021-02-01 20:07
changes.doctree
78.18
KB
-rw-r--r--
2021-02-01 20:07
data.doctree
45.45
KB
-rw-r--r--
2021-02-01 20:22
environment.pickle
1.64
MB
-rw-r--r--
2021-02-01 20:22
example.doctree
79.57
KB
-rw-r--r--
2021-02-01 20:07
fuse_api.doctree
34.19
KB
-rw-r--r--
2021-02-01 20:22
general.doctree
20.07
KB
-rw-r--r--
2021-02-01 20:07
gotchas.doctree
5.36
KB
-rw-r--r--
2021-02-01 20:07
index.doctree
4.38
KB
-rw-r--r--
2021-02-01 20:07
install.doctree
19.21
KB
-rw-r--r--
2021-02-01 20:07
lock.doctree
18.36
KB
-rw-r--r--
2021-02-01 20:22
operations.doctree
146.99
KB
-rw-r--r--
2021-02-01 20:22
util.doctree
20.38
KB
-rw-r--r--
2021-02-01 20:22
Save
Rename
�� �sphinx.addnodes��document���)��}�(� rawsource�� ��children�]��docutils.nodes��section���)��}�(hhh]�(h �title���)��}�(h�Request Handlers�h]�h �Text����Request Handlers�����}�(hh�parent�hhh�source�N�line�Nuba� attributes�}�(�ids�]��classes�]��names�]��dupnames�]��backrefs�]�u�tagname�hhhhhh�-/home/user/w/python-llfuse/rst/operations.rst�hKubh � paragraph���)��}�(h�I(You can use the :ref:`genindex` to directly jump to a specific handler).�h]�(h�(You can use the �����}�(h�(You can use the �hh.hhhNhNubh �pending_xref���)��}�(h�:ref:`genindex`�h]�h �inline���)��}�(hh;h]�h�genindex�����}�(hhhh?ubah}�(h ]�h"]�(�xref��std��std-ref�eh$]�h&]�h(]�uh*h=hh9ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�� operations�� refdomain�hJ�reftype��ref��refexplicit���refwarn��� reftarget��genindex�uh*h7hh+hKhh.ubh�) to directly jump to a specific handler).�����}�(h�) to directly jump to a specific handler).�hh.hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh+hKhhhhubh �index���)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(�single��Operations (class in llfuse)��llfuse.Operations�hNt�auh*hihhhhhNhNubh �desc���)��}�(hhh]�(h �desc_signature���)��}�(h�Operations()�h]�(h �desc_annotation���)��}�(h�class �h]�h�class �����}�(hhhh�hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�� xml:space��preserve�uh*h�hh�hhh�docstring of llfuse.Operations�hNubh �desc_addname���)��}�(h�llfuse.�h]�h�llfuse.�����}�(hhhh�hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hh�hhhh�hNubh � desc_name���)��}�(h� Operations�h]�h� Operations�����}�(hhhh�hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hh�hhhh�hNubeh}�(h ]�hxah"]�h$]�h&]�h(]��module��llfuse��class�h�fullname�h�uh*hhh�hKhh|hhubh �desc_content���)��}�(hhh]�(h-)��}�(hX] This class defines the general and request handler methods that an Python-LLFUSE file system may implement. If a particular request handler has not been implemented, it must raise `FUSEError` with an errorcode of `errno.ENOSYS`. Further requests of this type will then be handled directly by the FUSE kernel module without calling the handler again.�h]�(h��This class defines the general and request handler methods that an Python-LLFUSE file system may implement. If a particular request handler has not been implemented, it must raise �����}�(h��This class defines the general and request handler methods that an Python-LLFUSE file system may implement. If a particular request handler has not been implemented, it must raise �hh�hhhNhNubh8)��}�(h�`FUSEError`�h]�h �literal���)��}�(hh�h]�h� FUSEError�����}�(hhhh�ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hh�ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�h�reftype��obj��refexplicit���refwarn��� py:module�h��py:class�h�h\� FUSEError�uh*h7h�docstring of llfuse.Operations�hKhh�ubh� with an errorcode of �����}�(h� with an errorcode of �hh�hhhNhNubh8)��}�(h�`errno.ENOSYS`�h]�h�)��}�(hh�h]�h�errno.ENOSYS�����}�(hhhh�ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hh�ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j �reftype��obj��refexplicit���refwarn��h�h�h�h�h\�errno.ENOSYS�uh*h7hh�hKhh�ubh�z. Further requests of this type will then be handled directly by the FUSE kernel module without calling the handler again.�����}�(h�z. Further requests of this type will then be handled directly by the FUSE kernel module without calling the handler again.�hh�hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh�hKhh�hhubh-)��}�(h��The only exception that request handlers are allowed to raise is `FUSEError`. This will cause the specified errno to be returned by the syscall that is being handled.�h]�(h�AThe only exception that request handlers are allowed to raise is �����}�(h�AThe only exception that request handlers are allowed to raise is �hj% hhhNhNubh8)��}�(h�`FUSEError`�h]�h�)��}�(hj0 h]�h� FUSEError�����}�(hhhj2 ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj. ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j< �reftype��obj��refexplicit���refwarn��h�h�h�h�h\� FUSEError�uh*h7hh�hKhj% ubh�Z. This will cause the specified errno to be returned by the syscall that is being handled.�����}�(h�Z. This will cause the specified errno to be returned by the syscall that is being handled.�hj% hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh�hKhh�hhubh-)��}�(h��It is recommended that file systems are derived from this class and only overwrite the handlers that they actually implement. (The methods defined in this class all just raise ``FUSEError(ENOSYS)`` or do nothing).�h]�(h��It is recommended that file systems are derived from this class and only overwrite the handlers that they actually implement. (The methods defined in this class all just raise �����}�(h��It is recommended that file systems are derived from this class and only overwrite the handlers that they actually implement. (The methods defined in this class all just raise �hjY hhhNhNubh�)��}�(h�``FUSEError(ENOSYS)``�h]�h�FUSEError(ENOSYS)�����}�(hhhjb ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h�hjY ubh� or do nothing).�����}�(h� or do nothing).�hjY hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hh�hKhh�hhubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�#access() (llfuse.Operations method)��llfuse.Operations.access�hNt�auh*hihh�hhh�%docstring of llfuse.Operations.access�hNubh{)��}�(hhh]�(h�)��}�(h�)Operations.access(self, inode, mode, ctx)�h]�(h�)��}�(h�access�h]�h�access�����}�(hhhj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hj� hhh�%docstring of llfuse.Operations.access�hNubh �desc_parameterlist���)��}�(h�self, inode, mode, ctx�h]�(h �desc_parameter���)��}�(h�self�h]�h � desc_sig_name���)��}�(h�self�h]�h�self�����}�(hhhj� ubah}�(h ]�h"]��n�ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�inode�h]�j� )��}�(h�inode�h]�h�inode�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�mode�h]�j� )��}�(h�mode�h]�h�mode�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�ctx�h]�j� )��}�(h�ctx�h]�h�ctx�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� hhhj� hNubeh}�(h ]�j� ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.access�uh*hhj� hKhj� hhubh�)��}�(hhh]�(h-)��}�(h�9Check if requesting process has *mode* rights on *inode*.�h]�(h� Check if requesting process has �����}�(h� Check if requesting process has �hj hhhNhNubh �emphasis���)��}�(h�*mode*�h]�h�mode�����}�(hhhj' ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj ubh� rights on �����}�(h� rights on �hj hhhNhNubj& )��}�(h�*inode*�h]�h�inode�����}�(hhhj: ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj ubh�.�����}�(h�.�hj hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj hhubh-)��}�(h�**ctx* will be a `RequestContext` instance.�h]�(j& )��}�(h�*ctx*�h]�h�ctx�����}�(hhhjW ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hjS ubh� will be a �����}�(h� will be a �hjS hhhNhNubh8)��}�(h�`RequestContext`�h]�h�)��}�(hjl h]�h�RequestContext�����}�(hhhjn ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hjj ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�jx �reftype��obj��refexplicit���refwarn��h�j h�h�h\�RequestContext�uh*h7hj� hKhjS ubh� instance.�����}�(h� instance.�hjS hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj hhubh-)��}�(h�'The method must return a boolean value.�h]�h�'The method must return a boolean value.�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj hhubh-)��}�(h�PIf the ``default_permissions`` mount option is given, this method is not called.�h]�(h�If the �����}�(h�If the �hj� hhhNhNubh�)��}�(h�``default_permissions``�h]�h�default_permissions�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� ubh�2 mount option is given, this method is not called.�����}�(h�2 mount option is given, this method is not called.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj hhubh-)��}�(h�KWhen implementing this method, the `get_sup_groups` function may be useful.�h]�(h�#When implementing this method, the �����}�(h�#When implementing this method, the �hj� hhhNhNubh8)��}�(h�`get_sup_groups`�h]�h�)��}�(hj� h]�h�get_sup_groups�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j h�h�h\�get_sup_groups�uh*h7hj� hK hj� ubh� function may be useful.�����}�(h� function may be useful.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hK hj hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� hhhj� hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]��domain�j �objtype��method��desctype�j �noindex��uh*hzhhhh�hj� hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�#create() (llfuse.Operations method)��llfuse.Operations.create�hNt�auh*hihh�hhh�%docstring of llfuse.Operations.create�hNubh{)��}�(hhh]�(h�)��}�(h�=Operations.create(self, parent_inode, name, mode, flags, ctx)�h]�(h�)��}�(h�create�h]�h�create�����}�(hhhj! hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hj hhh�%docstring of llfuse.Operations.create�hNubj� )��}�(h�*self, parent_inode, name, mode, flags, ctx�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj8 ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj4 ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj0 ubj� )��}�(h�parent_inode�h]�j� )��}�(h�parent_inode�h]�h�parent_inode�����}�(hhhjP ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hjL ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj0 ubj� )��}�(h�name�h]�j� )��}�(h�name�h]�h�name�����}�(hhhjh ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hjd ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj0 ubj� )��}�(h�mode�h]�j� )��}�(h�mode�h]�h�mode�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj| ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj0 ubj� )��}�(h�flags�h]�j� )��}�(h�flags�h]�h�flags�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj0 ubj� )��}�(h�ctx�h]�j� )��}�(h�ctx�h]�h�ctx�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj0 ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj hhhj/ hNubeh}�(h ]�j ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.create�uh*hhj/ hKhj hhubh�)��}�(hhh]�(h-)��}�(h�>Create a file with permissions *mode* and open it with *flags*�h]�(h�Create a file with permissions �����}�(h�Create a file with permissions �hj� hhhNhNubj& )��}�(h�*mode*�h]�h�mode�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh� and open it with �����}�(h� and open it with �hj� hhhNhNubj& )��}�(h�*flags*�h]�h�flags�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj hKhj� hhubh-)��}�(h�**ctx* will be a `RequestContext` instance.�h]�(j& )��}�(h�*ctx*�h]�h�ctx�����}�(hhhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj ubh� will be a �����}�(h� will be a �hj hhhNhNubh8)��}�(h�`RequestContext`�h]�h�)��}�(hj h]�h�RequestContext�����}�(hhhj ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j* �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�RequestContext�uh*h7hj hKhj ubh� instance.�����}�(h� instance.�hj hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj hKhj� hhubh-)��}�(h��The method must return a tuple of the form *(fh, attr)*, where *fh* is a file handle like the one returned by `open` and *attr* is an `EntryAttributes` instance with the attributes of the newly created directory entry.�h]�(h�+The method must return a tuple of the form �����}�(h�+The method must return a tuple of the form �hjG hhhNhNubj& )��}�(h�*(fh, attr)*�h]�h� (fh, attr)�����}�(hhhjP ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hjG ubh�, where �����}�(h�, where �hjG hhhNhNubj& )��}�(h�*fh*�h]�h�fh�����}�(hhhjc ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hjG ubh�+ is a file handle like the one returned by �����}�(h�+ is a file handle like the one returned by �hjG hhhNhNubh8)��}�(h�`open`�h]�h�)��}�(hjx h]�h�open�����}�(hhhjz ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hjv ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�open�uh*h7hj hKhjG ubh� and �����}�(h� and �hjG hhhNhNubj& )��}�(h�*attr*�h]�h�attr�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hjG ubh� is an �����}�(h� is an �hjG hhhNhNubh8)��}�(h�`EntryAttributes`�h]�h�)��}�(hj� h]�h�EntryAttributes�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�EntryAttributes�uh*h7hj hKhjG ubh�C instance with the attributes of the newly created directory entry.�����}�(h�C instance with the attributes of the newly created directory entry.�hjG hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj hKhj� hhubh-)��}�(h�`(Successful) execution of this handler increases the lookup count for the returned inode by one.�h]�h�`(Successful) execution of this handler increases the lookup count for the returned inode by one.�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj hK hj� hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj hhhj/ hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j j� j �method�j j� j �uh*hzhhhh�hj hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�$destroy() (llfuse.Operations method)��llfuse.Operations.destroy�hNt�auh*hihh�hhh�&docstring of llfuse.Operations.destroy�hNubh{)��}�(hhh]�(h�)��}�(h�Operations.destroy(self)�h]�(h�)��}�(h�destroy�h]�h�destroy�����}�(hhhj hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hj hhh�&docstring of llfuse.Operations.destroy�hNubj� )��}�(h�self�h]�j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj" ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj hhhj hNubeh}�(h ]�j ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.destroy�uh*hhj hKhj hhubh�)��}�(hhh]�(h-)��}�(h�Clean up operations.�h]�h�Clean up operations.�����}�(hjI hjG hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj hKhjD hhubh-)��}�(h�lThis method will be called when `llfuse.close` has been called and the file system is about to be unmounted.�h]�(h� This method will be called when �����}�(h� This method will be called when �hjU hhhNhNubh8)��}�(h�`llfuse.close`�h]�h�)��}�(hj` h]�h�llfuse.close�����}�(hhhjb ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj^ ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�jl �reftype��obj��refexplicit���refwarn��h�jB h�h�h\�llfuse.close�uh*h7hj hKhjU ubh�> has been called and the file system is about to be unmounted.�����}�(h�> has been called and the file system is about to be unmounted.�hjU hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj hKhjD hhubh-)��}�(h�wThis method must not raise any exceptions (not even `FUSEError`), since it is not handling a particular client request.�h]�(h�4This method must not raise any exceptions (not even �����}�(h�4This method must not raise any exceptions (not even �hj� hhhNhNubh8)��}�(h�`FUSEError`�h]�h�)��}�(hj� h]�h� FUSEError�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�jB h�h�h\� FUSEError�uh*h7hj hKhj� ubh�8), since it is not handling a particular client request.�����}�(h�8), since it is not handling a particular client request.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj hKhjD hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj hhhj hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j j� j �method�j j� j �uh*hzhhhh�hj hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�"flush() (llfuse.Operations method)��llfuse.Operations.flush�hNt�auh*hihh�hhh�$docstring of llfuse.Operations.flush�hNubh{)��}�(hhh]�(h�)��}�(h�Operations.flush(self, fh)�h]�(h�)��}�(h�flush�h]�h�flush�����}�(hhhj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hj� hhh�$docstring of llfuse.Operations.flush�hNubj� )��}�(h�self, fh�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�fh�h]�j� )��}�(h�fh�h]�h�fh�����}�(hhhj ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� hhhj� hNubeh}�(h ]�j� ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.flush�uh*hhj� hKhj� hhubh�)��}�(hhh]�(h-)��}�(h�Handle close() syscall.�h]�h�Handle close() syscall.�����}�(hj7 hj5 hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj2 hhubh-)��}�(h�O*fh* will by an integer filehandle returned by a prior `open` or `create` call.�h]�(j& )��}�(h�*fh*�h]�h�fh�����}�(hhhjG ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hjC ubh�3 will by an integer filehandle returned by a prior �����}�(h�3 will by an integer filehandle returned by a prior �hjC hhhNhNubh8)��}�(h�`open`�h]�h�)��}�(hj\ h]�h�open�����}�(hhhj^ ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hjZ ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�jh �reftype��obj��refexplicit���refwarn��h�j0 h�h�h\�open�uh*h7hj� hKhjC ubh� or �����}�(h� or �hjC hhhNhNubh8)��}�(h�`create`�h]�h�)��}�(hj� h]�h�create�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j0 h�h�h\�create�uh*h7hj� hKhjC ubh� call.�����}�(h� call.�hjC hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj2 hhubh-)��}�(h��This method is called whenever a file descriptor is closed. It may be called multiple times for the same open file (e.g. if the file handle has been duplicated).�h]�h��This method is called whenever a file descriptor is closed. It may be called multiple times for the same open file (e.g. if the file handle has been duplicated).�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj2 hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� hhhj� hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j j� j �method�j j� j �uh*hzhhhh�hj� hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�#forget() (llfuse.Operations method)��llfuse.Operations.forget�hNt�auh*hihh�hhh�%docstring of llfuse.Operations.forget�hNubh{)��}�(hhh]�(h�)��}�(h�#Operations.forget(self, inode_list)�h]�(h�)��}�(h�forget�h]�h�forget�����}�(hhhj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hj� hhh�%docstring of llfuse.Operations.forget�hNubj� )��}�(h�self, inode_list�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h� inode_list�h]�j� )��}�(h� inode_list�h]�h� inode_list�����}�(hhhj ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� hhhj� hNubeh}�(h ]�j� ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.forget�uh*hhj� hKhj� hhubh�)��}�(hhh]�(h-)��}�(h�1Decrease lookup counts for inodes in *inode_list*�h]�(h�%Decrease lookup counts for inodes in �����}�(h�%Decrease lookup counts for inodes in �hj0 hhhNhNubj& )��}�(h�*inode_list*�h]�h� inode_list�����}�(hhhj9 ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj0 ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj- hhubh-)��}�(h��*inode_list* is a list of ``(inode, nlookup)`` tuples. This method should reduce the lookup count for each *inode* by *nlookup*.�h]�(j& )��}�(h�*inode_list*�h]�h� inode_list�����}�(hhhjQ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hjM ubh� is a list of �����}�(h� is a list of �hjM hhhNhNubh�)��}�(h�``(inode, nlookup)``�h]�h�(inode, nlookup)�����}�(hhhjd ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h�hjM ubh�= tuples. This method should reduce the lookup count for each �����}�(h�= tuples. This method should reduce the lookup count for each �hjM hhhNhNubj& )��}�(h�*inode*�h]�h�inode�����}�(hhhjw ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hjM ubh� by �����}�(h� by �hjM hhhNhNubj& )��}�(h� *nlookup*�h]�h�nlookup�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hjM ubh�.�����}�(hjL hjM hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj- hhubh-)��}�(h��If the lookup count reaches zero, the inode is currently not known to the kernel. In this case, the file system will typically check if there are still directory entries referring to this inode and, if not, remove the inode.�h]�h��If the lookup count reaches zero, the inode is currently not known to the kernel. In this case, the file system will typically check if there are still directory entries referring to this inode and, if not, remove the inode.�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj- hhubh-)��}�(hX& If the file system is unmounted, it may not have received `forget` calls to bring all lookup counts to zero. The `destroy` method should be used to clean up inodes that at that point still have non-zero lookup count (e.g. by calling `forget` with the current lookup count for every such inode).�h]�(h�:If the file system is unmounted, it may not have received �����}�(h�:If the file system is unmounted, it may not have received �hj� hhhNhNubh8)��}�(h�`forget`�h]�h�)��}�(hj� h]�h�forget�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j+ h�h�h\�forget�uh*h7hj� hKhj� ubh�/ calls to bring all lookup counts to zero. The �����}�(h�/ calls to bring all lookup counts to zero. The �hj� hhhNhNubh8)��}�(h� `destroy`�h]�h�)��}�(hj� h]�h�destroy�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j+ h�h�h\�destroy�uh*h7hj� hKhj� ubh�o method should be used to clean up inodes that at that point still have non-zero lookup count (e.g. by calling �����}�(h�o method should be used to clean up inodes that at that point still have non-zero lookup count (e.g. by calling �hj� hhhNhNubh8)��}�(h�`forget`�h]�h�)��}�(hj h]�h�forget�����}�(hhhj ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j �reftype��obj��refexplicit���refwarn��h�j+ h�h�h\�forget�uh*h7hj� hKhj� ubh�5 with the current lookup count for every such inode).�����}�(h�5 with the current lookup count for every such inode).�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj- hhubh-)��}�(h�wThis method must not raise any exceptions (not even `FUSEError`), since it is not handling a particular client request.�h]�(h�4This method must not raise any exceptions (not even �����}�(h�4This method must not raise any exceptions (not even �hj. hhhNhNubh8)��}�(h�`FUSEError`�h]�h�)��}�(hj9 h]�h� FUSEError�����}�(hhhj; ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj7 ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�jE �reftype��obj��refexplicit���refwarn��h�j+ h�h�h\� FUSEError�uh*h7hj� hKhj. ubh�8), since it is not handling a particular client request.�����}�(h�8), since it is not handling a particular client request.�hj. hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj- hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� hhhj� hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j jk j �method�j jo j �uh*hzhhhh�hj� hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�"fsync() (llfuse.Operations method)��llfuse.Operations.fsync�hNt�auh*hihh�hhh�$docstring of llfuse.Operations.fsync�hNubh{)��}�(hhh]�(h�)��}�(h�$Operations.fsync(self, fh, datasync)�h]�(h�)��}�(h�fsync�h]�h�fsync�����}�(hhhj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hj� hhh�$docstring of llfuse.Operations.fsync�hNubj� )��}�(h�self, fh, datasync�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�fh�h]�j� )��}�(h�fh�h]�h�fh�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�datasync�h]�j� )��}�(h�datasync�h]�h�datasync�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� hhhj� hNubeh}�(h ]�j| ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.fsync�uh*hhj� hKhj hhubh�)��}�(hhh]�(h-)��}�(h� Flush buffers for open file *fh*�h]�(h�Flush buffers for open file �����}�(h�Flush buffers for open file �hj� hhhNhNubj& )��}�(h�*fh*�h]�h�fh�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj~ hKhj� hhubh-)��}�(h�mIf *datasync* is true, only the file contents should be flushed (in contrast to the metadata about the file).�h]�(h�If �����}�(h�If �hj hhhNhNubj& )��}�(h� *datasync*�h]�h�datasync�����}�(hhhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj ubh�` is true, only the file contents should be flushed (in contrast to the metadata about the file).�����}�(h�` is true, only the file contents should be flushed (in contrast to the metadata about the file).�hj hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj~ hKhj� hhubh-)��}�(h�O*fh* will by an integer filehandle returned by a prior `open` or `create` call.�h]�(j& )��}�(h�*fh*�h]�h�fh�����}�(hhhj5 ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj1 ubh�3 will by an integer filehandle returned by a prior �����}�(h�3 will by an integer filehandle returned by a prior �hj1 hhhNhNubh8)��}�(h�`open`�h]�h�)��}�(hjJ h]�h�open�����}�(hhhjL ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hjH ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�jV �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�open�uh*h7hj~ hKhj1 ubh� or �����}�(h� or �hj1 hhhNhNubh8)��}�(h�`create`�h]�h�)��}�(hjo h]�h�create�����}�(hhhjq ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hjm ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j{ �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�create�uh*h7hj~ hKhj1 ubh� call.�����}�(h� call.�hj1 hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj~ hKhj� hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj hhhj� hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j j� j �method�j j� j �uh*hzhhhh�hj~ hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�%fsyncdir() (llfuse.Operations method)��llfuse.Operations.fsyncdir�hNt�auh*hihh�hhh�'docstring of llfuse.Operations.fsyncdir�hNubh{)��}�(hhh]�(h�)��}�(h�'Operations.fsyncdir(self, fh, datasync)�h]�(h�)��}�(h�fsyncdir�h]�h�fsyncdir�����}�(hhhj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hj� hhh�'docstring of llfuse.Operations.fsyncdir�hNubj� )��}�(h�self, fh, datasync�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�fh�h]�j� )��}�(h�fh�h]�h�fh�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�datasync�h]�j� )��}�(h�datasync�h]�h�datasync�����}�(hhhj ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� hhhj� hNubeh}�(h ]�j� ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.fsyncdir�uh*hhj� hKhj� hhubh�)��}�(hhh]�(h-)��}�(h�%Flush buffers for open directory *fh*�h]�(h�!Flush buffers for open directory �����}�(h�!Flush buffers for open directory �hj( hhhNhNubj& )��}�(h�*fh*�h]�h�fh�����}�(hhhj1 ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj( ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj% hhubh-)��}�(h�zIf *datasync* is true, only the directory contents should be flushed (in contrast to metadata about the directory itself).�h]�(h�If �����}�(h�If �hjE hhhNhNubj& )��}�(h� *datasync*�h]�h�datasync�����}�(hhhjN ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hjE ubh�m is true, only the directory contents should be flushed (in contrast to metadata about the directory itself).�����}�(h�m is true, only the directory contents should be flushed (in contrast to metadata about the directory itself).�hjE hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj% hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� hhhj� hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j jp j �method�j jt j �uh*hzhhhh�hj� hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�$getattr() (llfuse.Operations method)��llfuse.Operations.getattr�hNt�auh*hihh�hhh�&docstring of llfuse.Operations.getattr�hNubh{)��}�(hhh]�(h�)��}�(h�$Operations.getattr(self, inode, ctx)�h]�(h�)��}�(h�getattr�h]�h�getattr�����}�(hhhj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hj� hhh�&docstring of llfuse.Operations.getattr�hNubj� )��}�(h�self, inode, ctx�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�inode�h]�j� )��}�(h�inode�h]�h�inode�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�ctx�h]�j� )��}�(h�ctx�h]�h�ctx�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� hhhj� hNubeh}�(h ]�j� ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.getattr�uh*hhj� hKhj� hhubh�)��}�(hhh]�(h-)��}�(h�Get attributes for *inode*�h]�(h�Get attributes for �����}�(h�Get attributes for �hj� hhhNhNubj& )��}�(h�*inode*�h]�h�inode�����}�(hhhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj� hhubh-)��}�(h�**ctx* will be a `RequestContext` instance.�h]�(j& )��}�(h�*ctx*�h]�h�ctx�����}�(hhhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj ubh� will be a �����}�(h� will be a �hj hhhNhNubh8)��}�(h�`RequestContext`�h]�h�)��}�(hj- h]�h�RequestContext�����}�(hhhj/ ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj+ ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j9 �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�RequestContext�uh*h7hj� hKhj ubh� instance.�����}�(h� instance.�hj hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj� hhubh-)��}�(h��This method should return an `EntryAttributes` instance with the attributes of *inode*. The `~EntryAttributes.entry_timeout` attribute is ignored in this context.�h]�(h�This method should return an �����}�(h�This method should return an �hjV hhhNhNubh8)��}�(h�`EntryAttributes`�h]�h�)��}�(hja h]�h�EntryAttributes�����}�(hhhjc ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj_ ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�jm �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�EntryAttributes�uh*h7hj� hKhjV ubh�! instance with the attributes of �����}�(h�! instance with the attributes of �hjV hhhNhNubj& )��}�(h�*inode*�h]�h�inode�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hjV ubh�. The �����}�(h�. The �hjV hhhNhNubh8)��}�(h� `~EntryAttributes.entry_timeout`�h]�h�)��}�(hj� h]�h� entry_timeout�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�EntryAttributes.entry_timeout�uh*h7hj� hKhjV ubh�& attribute is ignored in this context.�����}�(h�& attribute is ignored in this context.�hjV hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj� hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� hhhj� hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j j� j �method�j j� j �uh*hzhhhh�hj� hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�%getxattr() (llfuse.Operations method)��llfuse.Operations.getxattr�hNt�auh*hihh�hhh�'docstring of llfuse.Operations.getxattr�hNubh{)��}�(hhh]�(h�)��}�(h�+Operations.getxattr(self, inode, name, ctx)�h]�(h�)��}�(h�getxattr�h]�h�getxattr�����}�(hhhj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hj� hhh�'docstring of llfuse.Operations.getxattr�hNubj� )��}�(h�self, inode, name, ctx�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�inode�h]�j� )��}�(h�inode�h]�h�inode�����}�(hhhj ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�name�h]�j� )��}�(h�name�h]�h�name�����}�(hhhj- ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj) ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�ctx�h]�j� )��}�(h�ctx�h]�h�ctx�����}�(hhhjE ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hjA ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� hhhj� hNubeh}�(h ]�j� ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.getxattr�uh*hhj� hKhj� hhubh�)��}�(hhh]�(h-)��}�(h�+Return extended attribute *name* of *inode*�h]�(h�Return extended attribute �����}�(h�Return extended attribute �hjj hhhNhNubj& )��}�(h�*name*�h]�h�name�����}�(hhhjs ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hjj ubh� of �����}�(h� of �hjj hhhNhNubj& )��}�(h�*inode*�h]�h�inode�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hjj ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhjg hhubh-)��}�(h�**ctx* will be a `RequestContext` instance.�h]�(j& )��}�(h�*ctx*�h]�h�ctx�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh� will be a �����}�(h� will be a �hj� hhhNhNubh8)��}�(h�`RequestContext`�h]�h�)��}�(hj� h]�h�RequestContext�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�je h�h�h\�RequestContext�uh*h7hj� hKhj� ubh� instance.�����}�(h� instance.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhjg hhubh-)��}�(h��If the attribute does not exist, the method must raise `FUSEError` with an error code of `ENOATTR`. *name* will be of type `bytes`, but is guaranteed not to contain zero-bytes (``\0``).�h]�(h�7If the attribute does not exist, the method must raise �����}�(h�7If the attribute does not exist, the method must raise �hj� hhhNhNubh8)��}�(h�`FUSEError`�h]�h�)��}�(hj� h]�h� FUSEError�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�je h�h�h\� FUSEError�uh*h7hj� hKhj� ubh� with an error code of �����}�(h� with an error code of �hj� hhhNhNubh8)��}�(h� `ENOATTR`�h]�h�)��}�(hj h]�h�ENOATTR�����}�(hhhj ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j �reftype��obj��refexplicit���refwarn��h�je h�h�h\�ENOATTR�uh*h7hj� hKhj� ubh�. �����}�(h�. �hj� hhhNhNubj& )��}�(h�*name*�h]�h�name�����}�(hhhj/ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh� will be of type �����}�(h� will be of type �hj� hhhNhNubh8)��}�(h�`bytes`�h]�h�)��}�(hjD h]�h�bytes�����}�(hhhjF ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hjB ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�jP �reftype��obj��refexplicit���refwarn��h�je h�h�h\�bytes�uh*h7hj� hKhj� ubh�/, but is guaranteed not to contain zero-bytes (�����}�(h�/, but is guaranteed not to contain zero-bytes (�hj� hhhNhNubh�)��}�(h�``\0``�h]�h�\0�����}�(hhhjg ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� ubh�).�����}�(h�).�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhjg hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� hhhj� hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j j� j �method�j j� j �uh*hzhhhh�hj� hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�!init() (llfuse.Operations method)��llfuse.Operations.init�hNt�auh*hihh�hhh�#docstring of llfuse.Operations.init�hNubh{)��}�(hhh]�(h�)��}�(h�Operations.init(self)�h]�(h�)��}�(h�init�h]�h�init�����}�(hhhj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hj� hhh�#docstring of llfuse.Operations.init�hNubj� )��}�(h�self�h]�j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� hhhj� hNubeh}�(h ]�j� ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.init�uh*hhj� hKhj� hhubh�)��}�(hhh]�(h-)��}�(h�Initialize operations�h]�h�Initialize operations�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj� hhubh-)��}�(h��This method will be called just before the file system starts handling requests. It must not raise any exceptions (not even `FUSEError`), since it is not handling a particular client request.�h]�(h�|This method will be called just before the file system starts handling requests. It must not raise any exceptions (not even �����}�(h�|This method will be called just before the file system starts handling requests. It must not raise any exceptions (not even �hj� hhhNhNubh8)��}�(h�`FUSEError`�h]�h�)��}�(hj� h]�h� FUSEError�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j �reftype��obj��refexplicit���refwarn��h�j� h�h�h\� FUSEError�uh*h7hj� hKhj� ubh�8), since it is not handling a particular client request.�����}�(h�8), since it is not handling a particular client request.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj� hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� hhhj� hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j j+ j �method�j j/ j �uh*hzhhhh�hj� hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�!link() (llfuse.Operations method)��llfuse.Operations.link�hNt�auh*hihh�hhh�#docstring of llfuse.Operations.link�hNubh{)��}�(hhh]�(h�)��}�(h�=Operations.link(self, inode, new_parent_inode, new_name, ctx)�h]�(h�)��}�(h�link�h]�h�link�����}�(hhhjF hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hjB hhh�#docstring of llfuse.Operations.link�hNubj� )��}�(h�,self, inode, new_parent_inode, new_name, ctx�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj] ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hjY ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjU ubj� )��}�(h�inode�h]�j� )��}�(h�inode�h]�h�inode�����}�(hhhju ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hjq ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjU ubj� )��}�(h�new_parent_inode�h]�j� )��}�(h�new_parent_inode�h]�h�new_parent_inode�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjU ubj� )��}�(h�new_name�h]�j� )��}�(h�new_name�h]�h�new_name�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjU ubj� )��}�(h�ctx�h]�j� )��}�(h�ctx�h]�h�ctx�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjU ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjB hhhjT hNubeh}�(h ]�j< ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.link�uh*hhjT hKhj? hhubh�)��}�(hhh]�(h-)��}�(h�DCreate directory entry *name* in *parent_inode* refering to *inode*.�h]�(h�Create directory entry �����}�(h�Create directory entry �hj� hhhNhNubj& )��}�(h�*name*�h]�h�name�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh� in �����}�(h� in �hj� hhhNhNubj& )��}�(h�*parent_inode*�h]�h�parent_inode�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh� refering to �����}�(h� refering to �hj� hhhNhNubj& )��}�(h�*inode*�h]�h�inode�����}�(hhhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh�.�����}�(hjL hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj> hKhj� hhubh-)��}�(h�**ctx* will be a `RequestContext` instance.�h]�(j& )��}�(h�*ctx*�h]�h�ctx�����}�(hhhj- ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj) ubh� will be a �����}�(h� will be a �hj) hhhNhNubh8)��}�(h�`RequestContext`�h]�h�)��}�(hjB h]�h�RequestContext�����}�(hhhjD ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj@ ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�jN �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�RequestContext�uh*h7hj> hKhj) ubh� instance.�����}�(h� instance.�hj) hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj> hKhj� hhubh-)��}�(h�nThe method must return an `EntryAttributes` instance with the attributes of the newly created directory entry.�h]�(h�The method must return an �����}�(h�The method must return an �hjk hhhNhNubh8)��}�(h�`EntryAttributes`�h]�h�)��}�(hjv h]�h�EntryAttributes�����}�(hhhjx ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hjt ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�EntryAttributes�uh*h7hj> hKhjk ubh�C instance with the attributes of the newly created directory entry.�����}�(h�C instance with the attributes of the newly created directory entry.�hjk hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj> hKhj� hhubh-)��}�(h�`(Successful) execution of this handler increases the lookup count for the returned inode by one.�h]�h�`(Successful) execution of this handler increases the lookup count for the returned inode by one.�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj> hKhj� hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj? hhhjT hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j j� j �method�j j� j �uh*hzhhhh�hj> hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�&listxattr() (llfuse.Operations method)��llfuse.Operations.listxattr�hNt�auh*hihh�hhh�(docstring of llfuse.Operations.listxattr�hNubh{)��}�(hhh]�(h�)��}�(h�&Operations.listxattr(self, inode, ctx)�h]�(h�)��}�(h� listxattr�h]�h� listxattr�����}�(hhhj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hj� hhh�(docstring of llfuse.Operations.listxattr�hNubj� )��}�(h�self, inode, ctx�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�inode�h]�j� )��}�(h�inode�h]�h�inode�����}�(hhhj ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�ctx�h]�j� )��}�(h�ctx�h]�h�ctx�����}�(hhhj ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� hhhj� hNubeh}�(h ]�j� ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.listxattr�uh*hhj� hKhj� hhubh�)��}�(hhh]�(h-)��}�(h�+Get list of extended attributes for *inode*�h]�(h�$Get list of extended attributes for �����}�(h�$Get list of extended attributes for �hj= hhhNhNubj& )��}�(h�*inode*�h]�h�inode�����}�(hhhjF ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj= ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj: hhubh-)��}�(h�**ctx* will be a `RequestContext` instance.�h]�(j& )��}�(h�*ctx*�h]�h�ctx�����}�(hhhj^ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hjZ ubh� will be a �����}�(h� will be a �hjZ hhhNhNubh8)��}�(h�`RequestContext`�h]�h�)��}�(hjs h]�h�RequestContext�����}�(hhhju ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hjq ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j �reftype��obj��refexplicit���refwarn��h�j8 h�h�h\�RequestContext�uh*h7hj� hKhjZ ubh� instance.�����}�(h� instance.�hjZ hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj: hhubh-)��}�(h�|This method must return an iterator over a sequence of `bytes` objects. The objects must not to include zero-bytes (``\0``).�h]�(h�7This method must return an iterator over a sequence of �����}�(h�7This method must return an iterator over a sequence of �hj� hhhNhNubh8)��}�(h�`bytes`�h]�h�)��}�(hj� h]�h�bytes�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j8 h�h�h\�bytes�uh*h7hj� hKhj� ubh�6 objects. The objects must not to include zero-bytes (�����}�(h�6 objects. The objects must not to include zero-bytes (�hj� hhhNhNubh�)��}�(h�``\0``�h]�h�\0�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� ubh�).�����}�(h�).�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj: hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� hhhj� hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j j� j �method�j j� j �uh*hzhhhh�hj� hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�#lookup() (llfuse.Operations method)��llfuse.Operations.lookup�hNt�auh*hihh�hhh�%docstring of llfuse.Operations.lookup�hNubh{)��}�(hhh]�(h�)��}�(h�0Operations.lookup(self, parent_inode, name, ctx)�h]�(h�)��}�(h�lookup�h]�h�lookup�����}�(hhhj hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hj hhh�%docstring of llfuse.Operations.lookup�hNubj� )��}�(h�self, parent_inode, name, ctx�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj ubj� )��}�(h�parent_inode�h]�j� )��}�(h�parent_inode�h]�h�parent_inode�����}�(hhhj6 ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj2 ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj ubj� )��}�(h�name�h]�j� )��}�(h�name�h]�h�name�����}�(hhhjN ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hjJ ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj ubj� )��}�(h�ctx�h]�j� )��}�(h�ctx�h]�h�ctx�����}�(hhhjf ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hjb ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj hhhj hNubeh}�(h ]�j� ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.lookup�uh*hhj hKhj hhubh�)��}�(hhh]�(h-)��}�(h�9Look up a directory entry by name and get its attributes.�h]�h�9Look up a directory entry by name and get its attributes.�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj� hhubh-)��}�(h��This method should return an `EntryAttributes` instance for the directory entry *name* in the directory with inode *parent_inode*.�h]�(h�This method should return an �����}�(h�This method should return an �hj� hhhNhNubh8)��}�(h�`EntryAttributes`�h]�h�)��}�(hj� h]�h�EntryAttributes�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�EntryAttributes�uh*h7hj� hKhj� ubh�" instance for the directory entry �����}�(h�" instance for the directory entry �hj� hhhNhNubj& )��}�(h�*name*�h]�h�name�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh� in the directory with inode �����}�(h� in the directory with inode �hj� hhhNhNubj& )��}�(h�*parent_inode*�h]�h�parent_inode�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh�.�����}�(hjL hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj� hhubh-)��}�(hX? If there is no such entry, the method should either return an `EntryAttributes` instance with zero ``st_ino`` value (in which case the negative lookup will be cached as specified by ``entry_timeout``), or it should raise `FUSEError` with an errno of `errno.ENOENT` (in this case the negative result will not be cached).�h]�(h�>If there is no such entry, the method should either return an �����}�(h�>If there is no such entry, the method should either return an �hj� hhhNhNubh8)��}�(h�`EntryAttributes`�h]�h�)��}�(hj� h]�h�EntryAttributes�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�EntryAttributes�uh*h7hj� hKhj� ubh� instance with zero �����}�(h� instance with zero �hj� hhhNhNubh�)��}�(h� ``st_ino``�h]�h�st_ino�����}�(hhhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� ubh�I value (in which case the negative lookup will be cached as specified by �����}�(h�I value (in which case the negative lookup will be cached as specified by �hj� hhhNhNubh�)��}�(h�``entry_timeout``�h]�h� entry_timeout�����}�(hhhj3 ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� ubh�), or it should raise �����}�(h�), or it should raise �hj� hhhNhNubh8)��}�(h�`FUSEError`�h]�h�)��}�(hjH h]�h� FUSEError�����}�(hhhjJ ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hjF ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�jT �reftype��obj��refexplicit���refwarn��h�j� h�h�h\� FUSEError�uh*h7hj� hKhj� ubh� with an errno of �����}�(h� with an errno of �hj� hhhNhNubh8)��}�(h�`errno.ENOENT`�h]�h�)��}�(hjm h]�h�errno.ENOENT�����}�(hhhjo ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hjk ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�jy �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�errno.ENOENT�uh*h7hj� hKhj� ubh�7 (in this case the negative result will not be cached).�����}�(h�7 (in this case the negative result will not be cached).�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj� hhubh-)��}�(h�**ctx* will be a `RequestContext` instance.�h]�(j& )��}�(h�*ctx*�h]�h�ctx�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh� will be a �����}�(h� will be a �hj� hhhNhNubh8)��}�(h�`RequestContext`�h]�h�)��}�(hj� h]�h�RequestContext�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�RequestContext�uh*h7hj� hKhj� ubh� instance.�����}�(h� instance.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj� hhubh-)��}�(h��The file system must be able to handle lookups for :file:`.` and :file:`..`, no matter if these entries are returned by `readdir` or not.�h]�(h�3The file system must be able to handle lookups for �����}�(h�3The file system must be able to handle lookups for �hj� hhhNhNubh�)��}�(h� :file:`.`�h]�h�.�����}�(hjL hj� ubah}�(h ]�h"]��file�ah$]�h&]�h(]��role��file�uh*h�hj� ubh� and �����}�(h� and �hj� hhhNhNubh�)��}�(h� :file:`..`�h]�h�..�����}�(h�..�hj� ubah}�(h ]�h"]��file�ah$]�h&]�h(]��role��file�uh*h�hj� ubh�-, no matter if these entries are returned by �����}�(h�-, no matter if these entries are returned by �hj� hhhNhNubh8)��}�(h� `readdir`�h]�h�)��}�(hj h]�h�readdir�����}�(hhhj ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�readdir�uh*h7hj� hKhj� ubh� or not.�����}�(h� or not.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj� hhubh-)��}�(h�`(Successful) execution of this handler increases the lookup count for the returned inode by one.�h]�h�`(Successful) execution of this handler increases the lookup count for the returned inode by one.�����}�(hj; hj9 hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj� hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj hhhj hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j jP j �method�j jT j �uh*hzhhhh�hj� hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�"mkdir() (llfuse.Operations method)��llfuse.Operations.mkdir�hNt�auh*hihh�hhh�$docstring of llfuse.Operations.mkdir�hNubh{)��}�(hhh]�(h�)��}�(h�5Operations.mkdir(self, parent_inode, name, mode, ctx)�h]�(h�)��}�(h�mkdir�h]�h�mkdir�����}�(hhhjk hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hjg hhh�$docstring of llfuse.Operations.mkdir�hNubj� )��}�(h�#self, parent_inode, name, mode, ctx�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj~ ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjz ubj� )��}�(h�parent_inode�h]�j� )��}�(h�parent_inode�h]�h�parent_inode�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjz ubj� )��}�(h�name�h]�j� )��}�(h�name�h]�h�name�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjz ubj� )��}�(h�mode�h]�j� )��}�(h�mode�h]�h�mode�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjz ubj� )��}�(h�ctx�h]�j� )��}�(h�ctx�h]�h�ctx�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjz ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjg hhhjy hNubeh}�(h ]�ja ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.mkdir�uh*hhjy hKhjd hhubh�)��}�(hhh]�(h-)��}�(h�Create a directory�h]�h�Create a directory�����}�(hj hj hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hjc hKhj hhubh-)��}�(h��This method must create a new directory *name* with mode *mode* in the directory with inode *parent_inode*. *ctx* will be a `RequestContext` instance.�h]�(h�(This method must create a new directory �����}�(h�(This method must create a new directory �hj hhhNhNubj& )��}�(h�*name*�h]�h�name�����}�(hhhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj ubh� with mode �����}�(h� with mode �hj hhhNhNubj& )��}�(h�*mode*�h]�h�mode�����}�(hhhj1 ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj ubh� in the directory with inode �����}�(h� in the directory with inode �hj hhhNhNubj& )��}�(h�*parent_inode*�h]�h�parent_inode�����}�(hhhjD ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj ubh�. �����}�(h�. �hj hhhNhNubj& )��}�(h�*ctx*�h]�h�ctx�����}�(hhhjW ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj ubh� will be a �����}�(h� will be a �hj hhhNhNubh8)��}�(h�`RequestContext`�h]�h�)��}�(hjl h]�h�RequestContext�����}�(hhhjn ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hjj ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�jx �reftype��obj��refexplicit���refwarn��h�j h�h�h\�RequestContext�uh*h7hjc hKhj ubh� instance.�����}�(h� instance.�hj hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hjc hKhj hhubh-)��}�(h�oThis method must return an `EntryAttributes` instance with the attributes of the newly created directory entry.�h]�(h�This method must return an �����}�(h�This method must return an �hj� hhhNhNubh8)��}�(h�`EntryAttributes`�h]�h�)��}�(hj� h]�h�EntryAttributes�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j h�h�h\�EntryAttributes�uh*h7hjc hKhj� ubh�C instance with the attributes of the newly created directory entry.�����}�(h�C instance with the attributes of the newly created directory entry.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hjc hKhj hhubh-)��}�(h�`(Successful) execution of this handler increases the lookup count for the returned inode by one.�h]�h�`(Successful) execution of this handler increases the lookup count for the returned inode by one.�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hjc hK hj hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hjd hhhjy hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j j� j �method�j j� j �uh*hzhhhh�hjc hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�"mknod() (llfuse.Operations method)��llfuse.Operations.mknod�hNt�auh*hihh�hhh�$docstring of llfuse.Operations.mknod�hNubh{)��}�(hhh]�(h�)��}�(h�;Operations.mknod(self, parent_inode, name, mode, rdev, ctx)�h]�(h�)��}�(h�mknod�h]�h�mknod�����}�(hhhj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hj� hhh�$docstring of llfuse.Operations.mknod�hNubj� )��}�(h�)self, parent_inode, name, mode, rdev, ctx�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj ubj� )��}�(h�parent_inode�h]�j� )��}�(h�parent_inode�h]�h�parent_inode�����}�(hhhj* ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj& ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj ubj� )��}�(h�name�h]�j� )��}�(h�name�h]�h�name�����}�(hhhjB ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj> ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj ubj� )��}�(h�mode�h]�j� )��}�(h�mode�h]�h�mode�����}�(hhhjZ ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hjV ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj ubj� )��}�(h�rdev�h]�j� )��}�(h�rdev�h]�h�rdev�����}�(hhhjr ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hjn ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj ubj� )��}�(h�ctx�h]�j� )��}�(h�ctx�h]�h�ctx�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� hhhj hNubeh}�(h ]�j� ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.mknod�uh*hhj hKhj� hhubh�)��}�(hhh]�(h-)��}�(h�Create (possibly special) file�h]�h�Create (possibly special) file�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj� hhubh-)��}�(hX! This method must create a (special or regular) file *name* in the directory with inode *parent_inode*. Whether the file is special or regular is determined by its *mode*. If the file is neither a block nor character device, *rdev* can be ignored. *ctx* will be a `RequestContext` instance.�h]�(h�4This method must create a (special or regular) file �����}�(h�4This method must create a (special or regular) file �hj� hhhNhNubj& )��}�(h�*name*�h]�h�name�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh� in the directory with inode �����}�(h� in the directory with inode �hj� hhhNhNubj& )��}�(h�*parent_inode*�h]�h�parent_inode�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh�>. Whether the file is special or regular is determined by its �����}�(h�>. Whether the file is special or regular is determined by its �hj� hhhNhNubj& )��}�(h�*mode*�h]�h�mode�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh�7. If the file is neither a block nor character device, �����}�(h�7. If the file is neither a block nor character device, �hj� hhhNhNubj& )��}�(h�*rdev*�h]�h�rdev�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh� can be ignored. �����}�(h� can be ignored. �hj� hhhNhNubj& )��}�(h�*ctx*�h]�h�ctx�����}�(hhhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh� will be a �����}�(h� will be a �hj� hhhNhNubh8)��}�(h�`RequestContext`�h]�h�)��}�(hj' h]�h�RequestContext�����}�(hhhj) ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj% ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j3 �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�RequestContext�uh*h7hj� hKhj� ubh� instance.�����}�(h� instance.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj� hhubh-)��}�(h�nThe method must return an `EntryAttributes` instance with the attributes of the newly created directory entry.�h]�(h�The method must return an �����}�(h�The method must return an �hjP hhhNhNubh8)��}�(h�`EntryAttributes`�h]�h�)��}�(hj[ h]�h�EntryAttributes�����}�(hhhj] ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hjY ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�jg �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�EntryAttributes�uh*h7hj� hK hjP ubh�C instance with the attributes of the newly created directory entry.�����}�(h�C instance with the attributes of the newly created directory entry.�hjP hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hK hj� hhubh-)��}�(h�`(Successful) execution of this handler increases the lookup count for the returned inode by one.�h]�h�`(Successful) execution of this handler increases the lookup count for the returned inode by one.�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj� hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� hhhj hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j j� j �method�j j� j �uh*hzhhhh�hj� hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�!open() (llfuse.Operations method)��llfuse.Operations.open�hNt�auh*hihh�hhh�#docstring of llfuse.Operations.open�hNubh{)��}�(hhh]�(h�)��}�(h�(Operations.open(self, inode, flags, ctx)�h]�(h�)��}�(h�open�h]�h�open�����}�(hhhj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hj� hhh�#docstring of llfuse.Operations.open�hNubj� )��}�(h�self, inode, flags, ctx�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�inode�h]�j� )��}�(h�inode�h]�h�inode�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�flags�h]�j� )��}�(h�flags�h]�h�flags�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�ctx�h]�j� )��}�(h�ctx�h]�h�ctx�����}�(hhhj ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� hhhj� hNubeh}�(h ]�j� ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.open�uh*hhj� hKhj� hhubh�)��}�(hhh]�(h-)��}�(h�"Open a inode *inode* with *flags*.�h]�(h� Open a inode �����}�(h� Open a inode �hj: � hhhNhNubj& )��}�(h�*inode*�h]�h�inode�����}�(hhhjC ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj: ubh� with �����}�(h� with �hj: hhhNhNubj& )��}�(h�*flags*�h]�h�flags�����}�(hhhjV ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj: ubh�.�����}�(hjL hj: hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj7 hhubh-)��}�(h�**ctx* will be a `RequestContext` instance.�h]�(j& )��}�(h�*ctx*�h]�h�ctx�����}�(hhhjr ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hjn ubh� will be a �����}�(h� will be a �hjn hhhNhNubh8)��}�(h�`RequestContext`�h]�h�)��}�(hj� h]�h�RequestContext�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j5 h�h�h\�RequestContext�uh*h7hj� hKhjn ubh� instance.�����}�(h� instance.�hjn hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj7 hhubh-)��}�(h��*flags* will be a bitwise or of the open flags described in the :manpage:`open(2)` manpage and defined in the `os` module (with the exception of ``O_CREAT``, ``O_EXCL``, ``O_NOCTTY`` and ``O_TRUNC``)�h]�(j& )��}�(h�*flags*�h]�h�flags�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh�9 will be a bitwise or of the open flags described in the �����}�(h�9 will be a bitwise or of the open flags described in the �hj� hhhNhNubh �manpage���)��}�(h�:manpage:`open(2)`�h]�h�open(2)�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�h�h��path��open(2)��page��open��section��2�uh*j� hj� ubh� manpage and defined in the �����}�(h� manpage and defined in the �hj� hhhNhNubh8)��}�(h�`os`�h]�h�)��}�(hj� h]�h�os�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j5 h�h�h\�os�uh*h7hj� hKhj� ubh� module (with the exception of �����}�(h� module (with the exception of �hj� hhhNhNubh�)��}�(h�``O_CREAT``�h]�h�O_CREAT�����}�(hhhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� ubh�, �����}�(h�, �hj� hhhNhNubh�)��}�(h� ``O_EXCL``�h]�h�O_EXCL�����}�(hhhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� ubh�, �����}�(hj hj� ubh�)��}�(h�``O_NOCTTY``�h]�h�O_NOCTTY�����}�(hhhj, ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� ubh� and �����}�(h� and �hj� hhhNhNubh�)��}�(h�``O_TRUNC``�h]�h�O_TRUNC�����}�(hhhj? ubah}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� ubh�)�����}�(h�)�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj7 hhubh-)��}�(h��This method must return an integer file handle. The file handle will be passed to the `read`, `write`, `flush`, `fsync` and `release` methods to identify the open file.�h]�(h�VThis method must return an integer file handle. The file handle will be passed to the �����}�(h�VThis method must return an integer file handle. The file handle will be passed to the �hjX hhhNhNubh8)��}�(h�`read`�h]�h�)��}�(hjc h]�h�read�����}�(hhhje ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hja ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�jo �reftype��obj��refexplicit���refwarn��h�j5 h�h�h\�read�uh*h7hj� hK hjX ubh�, �����}�(h�, �hjX hhhNhNubh8)��}�(h�`write`�h]�h�)��}�(hj� h]�h�write�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j5 h�h�h\�write�uh*h7hj� hK hjX ubh�, �����}�(h�, �hjX ubh8)��}�(h�`flush`�h]�h�)��}�(hj� h]�h�flush�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j5 h�h�h\�flush�uh*h7hj� hK hjX ubh�, �����}�(hj� hjX ubh8)��}�(h�`fsync`�h]�h�)��}�(hj� h]�h�fsync�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j5 h�h�h\�fsync�uh*h7hj� hK hjX ubh� and �����}�(h� and �hjX hhhNhNubh8)��}�(h� `release`�h]�h�)��}�(hj� h]�h�release�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j �reftype��obj��refexplicit���refwarn��h�j5 h�h�h\�release�uh*h7hj� hK hjX ubh�# methods to identify the open file.�����}�(h�# methods to identify the open file.�hjX hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hK hj7 hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� hhhj� hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j j( j �method�j j, j �uh*hzhhhh�hj� hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�$opendir() (llfuse.Operations method)��llfuse.Operations.opendir�hNt�auh*hihh�hhh�&docstring of llfuse.Operations.opendir�hNubh{)��}�(hhh]�(h�)��}�(h�$Operations.opendir(self, inode, ctx)�h]�(h�)��}�(h�opendir�h]�h�opendir�����}�(hhhjC hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hj? hhh�&docstring of llfuse.Operations.opendir�hNubj� )��}�(h�self, inode, ctx�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhjZ ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hjV ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjR ubj� )��}�(h�inode�h]�j� )��}�(h�inode�h]�h�inode�����}�(hhhjr ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hjn ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjR ubj� )��}�(h�ctx�h]�j� )��}�(h�ctx�h]�h�ctx�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjR ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj? hhhjQ hNubeh}�(h ]�j9 ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.opendir�uh*hhjQ hKhj< hhubh�)��}�(hhh]�(h-)��}�(h�%Open the directory with inode *inode*�h]�(h�Open the directory with inode �����}�(h�Open the directory with inode �hj� hhhNhNubj& )��}�(h�*inode*�h]�h�inode�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj; hKhj� hhubh-)��}�(h�**ctx* will be a `RequestContext` instance.�h]�(j& )��}�(h�*ctx*�h]�h�ctx�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh� will be a �����}�(h� will be a �hj� hhhNhNubh8)��}�(h�`RequestContext`�h]�h�)��}�(hj� h]�h�RequestContext�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�RequestContext�uh*h7hj; hKhj� ubh� instance.�����}�(h� instance.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj; hKhj� hhubh-)��}�(h��This method should return an integer file handle. The file handle will be passed to the `readdir`, `fsyncdir` and `releasedir` methods to identify the directory.�h]�(h�XThis method should return an integer file handle. The file handle will be passed to the �����}�(h�XThis method should return an integer file handle. The file handle will be passed to the �hj hhhNhNubh8)��}�(h� `readdir`�h]�h�)��}�(hj h]�h�readdir�����}�(hhhj ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j% �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�readdir�uh*h7hj; hKhj ubh�, �����}�(h�, �hj hhhNhNubh8)��}�(h� `fsyncdir`�h]�h�)��}�(hj> h]�h�fsyncdir�����}�(hhhj@ ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj< ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�jJ �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�fsyncdir�uh*h7hj; hKhj ubh� and �����}�(h� and �hj hhhNhNubh8)��}�(h�`releasedir`�h]�h�)��}�(hjc h]�h� releasedir�����}�(hhhje ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hja ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�jo �reftype��obj��refexplicit���refwarn��h�j� h�h�h\� releasedir�uh*h7hj; hKhj ubh�# methods to identify the directory.�����}�(h�# methods to identify the directory.�hj hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj; hKhj� hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj< hhhjQ hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j j� j �method�j j� j �uh*hzhhhh�hj; hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�!read() (llfuse.Operations method)��llfuse.Operations.read�hNt�auh*hihh�hhh�#docstring of llfuse.Operations.read�hNubh{)��}�(hhh]�(h�)��}�(h�$Operations.read(self, fh, off, size)�h]�(h�)��}�(h�read�h]�h�read�����}�(hhhj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hj� hhh�#docstring of llfuse.Operations.read�hNubj� )��}�(h�self, fh, off, size�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�fh�h]�j� )��}�(h�fh�h]�h�fh�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�off�h]�j� )��}�(h�off�h]�h�off�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�size�h]�j� )��}�(h�size�h]�h�size�����}�(hhhj ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� hhhj� hNubeh}�(h ]�j� ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.read�uh*hhj� hKhj� hhubh�)��}�(hhh]�(h-)��}�(h�-Read *size* bytes from *fh* at position *off*�h]�(h�Read �����}�(h�Read �hj4 hhhNhNubj& )��}�(h�*size*�h]�h�size�����}�(hhhj= ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj4 ubh� bytes from �����}�(h� bytes from �hj4 hhhNhNubj& )��}�(h�*fh*�h]�h�fh�����}�(hhhjP ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj4 ubh� at position �����}�(h� at position �hj4 hhhNhNubj& )��}�(h�*off*�h]�h�off�����}�(hhhjc ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj4 ubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj1 hhubh-)��}�(h�O*fh* will by an integer filehandle returned by a prior `open` or `create` call.�h]�(j& )��}�(h�*fh*�h]�h�fh�����}�(hhhj{ ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hjw ubh�3 will by an integer filehandle returned by a prior �����}�(h�3 will by an integer filehandle returned by a prior �hjw hhhNhNubh8)��}�(h�`open`�h]�h�)��}�(hj� h]�h�open�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j/ h�h�h\�open�uh*h7hj� hKhjw ubh� or �����}�(h� or �hjw hhhNhNubh8)��}�(h�`create`�h]�h�)��}�(hj� h]�h�create�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j/ h�h�h\�create�uh*h7hj� hKhjw ubh� call.�����}�(h� call.�hjw hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj1 hhubh-)��}�(h��This function should return exactly the number of bytes requested except on EOF or error, otherwise the rest of the data will be substituted with zeroes.�h]�h��This function should return exactly the number of bytes requested except on EOF or error, otherwise the rest of the data will be substituted with zeroes.�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj� hKhj1 hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj� hhhj� hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j j� j �method�j j� j �uh*hzhhhh�hj� hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�$readdir() (llfuse.Operations method)��llfuse.Operations.readdir�hNt�auh*hihh�hhh�&docstring of llfuse.Operations.readdir�hNubh{)��}�(hhh]�(h�)��}�(h�!Operations.readdir(self, fh, off)�h]�(h�)��}�(h�readdir�h]�h�readdir�����}�(hhhj hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hj hhh�&docstring of llfuse.Operations.readdir�hNubj� )��}�(h� self, fh, off�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj' ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj# ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj ubj� )��}�(h�fh�h]�j� )��}�(h�fh�h]�h�fh�����}�(hhhj? ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj; ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj ubj� )��}�(h�off�h]�j� )��}�(h�off�h]�h�off�����}�(hhhjW ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hjS ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj hhhj hNubeh}�(h ]�j ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.readdir�uh*hhj hKhj hhubh�)��}�(hhh]�(h-)��}�(h�$Read entries in open directory *fh*.�h]�(h�Read entries in open directory �����}�(h�Read entries in open directory �hj| hhhNhNubj& )��}�(h�*fh*�h]�h�fh�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj| ubh�.�����}�(hjL hj| hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj hKhjy hhubh-)��}�(h��This method should return an iterator over the contents of directory *fh* (as returned by a prior `opendir` call), starting at the entry identified by *off*.�h]�(h�EThis method should return an iterator over the contents of directory �����}�(h�EThis method should return an iterator over the contents of directory �hj� hhhNhNubj& )��}�(h�*fh*�h]�h�fh�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh� (as returned by a prior �����}�(h� (as returned by a prior �hj� hhhNhNubh8)��}�(h� `opendir`�h]�h�)��}�(hj� h]�h�opendir�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�jw h�h�h\�opendir�uh*h7hj hKhj� ubh�, call), starting at the entry identified by �����}�(h�, call), starting at the entry identified by �hj� hhhNhNubj& )��}�(h�*off*�h]�h�off�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh�.�����}�(hjL hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj hKhjy hhubh-)��}�(h��The iterator must yield tuples of the form :samp:`({name}, {attr}, {next_})`, where *attr* is an `EntryAttributes` instance and *next_* gives an offset that can be passed as *off* to start a successive `readdir` call at the right position.�h]�(h�+The iterator must yield tuples of the form �����}�(h�+The iterator must yield tuples of the form �hj� hhhNhNubh�)��}�(h�!:samp:`({name}, {attr}, {next_})`�h]�(h�(�����}�(h�(�hj� ubj& )��}�(h�name�h]�h�name�����}�(hhhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh�, �����}�(h�, �hj� ubj& )��}�(h�attr�h]�h�attr�����}�(hhhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh�, �����}�(h�, �hj� ubj& )��}�(h�next_�h]�h�next_�����}�(hhhj. ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh�)�����}�(hjQ hj� ubeh}�(h ]�h"]��samp�ah$]�h&]�h(]��role��samp�uh*h�hj� ubh�, where �����}�(h�, where �hj� hhhNhNubj& )��}�(h�*attr*�h]�h�attr�����}�(hhhjN ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh� is an �����}�(h� is an �hj� hhhNhNubh8)��}�(h�`EntryAttributes`�h]�h�)��}�(hjc h]�h�EntryAttributes�����}�(hhhje ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hja ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�jo �reftype��obj��refexplicit���refwarn��h�jw h�h�h\�EntryAttributes�uh*h7hj hKhj� ubh� instance and �����}�(h� instance and �hj� hhhNhNubj& )��}�(h�*next_*�h]�h�next_�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh�' gives an offset that can be passed as �����}�(h�' gives an offset that can be passed as �hj� hhhNhNubj& )��}�(h�*off*�h]�h�off�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh� to start a successive �����}�(h� to start a successive �hj� hhhNhNubh8)��}�(h� `readdir`�h]�h�)��}�(hj� h]�h�readdir�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�jw h�h�h\�readdir�uh*h7hj hKhj� ubh� call at the right position.�����}�(h� call at the right position.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj hKhjy hhubh-)��}�(h�uIteration may be stopped as soon as enough elements have been retrieved. The method should be prepared for this case.�h]�h�uIteration may be stopped as soon as enough elements have been retrieved. The method should be prepared for this case.�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj hKhjy hhubh-)��}�(h��If entries are added or removed during a `readdir` cycle, they may or may not be returned. However, they must not cause other entries to be skipped or returned more than once.�h]�(h�)If entries are added or removed during a �����}�(h�)If entries are added or removed during a �hj� hhhNhNubh8)��}�(h� `readdir`�h]�h�)��}�(hj� h]�h�readdir�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�jw h�h�h\�readdir�uh*h7hj hKhj� ubh�} cycle, they may or may not be returned. However, they must not cause other entries to be skipped or returned more than once.�����}�(h�} cycle, they may or may not be returned. However, they must not cause other entries to be skipped or returned more than once.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj hKhjy hhubh-)��}�(h�F:file:`.` and :file:`..` entries may be included but are not required.�h]�(h�)��}�(h� :file:`.`�h]�h�.�����}�(hjL hj ubah}�(h ]�h"]��file�ah$]�h&]�h(]��role��file�uh*h�hj ubh� and �����}�(h� and �hj hhhNhNubh�)��}�(h� :file:`..`�h]�h�..�����}�(h�..�hj3 ubah}�(h ]�h"]��file�ah$]�h&]�h(]��role��file�uh*h�hj ubh�. entries may be included but are not required.�����}�(h�. entries may be included but are not required.�hj hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj hKhjy hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj hhhj hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j jY j �method�j j] j �uh*hzhhhh�hj hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�%readlink() (llfuse.Operations method)��llfuse.Operations.readlink�hNt�auh*hihh�hhh�'docstring of llfuse.Operations.readlink�hNubh{)��}�(hhh]�(h�)��}�(h�%Operations.readlink(self, inode, ctx)�h]�(h�)��}�(h�readlink�h]�h�readlink�����}�(hhhjt hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hjp hhh�'docstring of llfuse.Operations.readlink�hNubj� )��}�(h�self, inode, ctx�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�inode�h]�j� )��}�(h�inode�h]�h�inode�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubj� )��}�(h�ctx�h]�j� )��}�(h�ctx�h]�h�ctx�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj� ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjp hhhj� hNubeh}�(h ]�jj ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.readlink�uh*hhj� hKhjm hhubh�)��}�(hhh]�(h-)��}�(h�'Return target of symbolic link *inode*.�h]�(h�Return target of symbolic link �����}�(h�Return target of symbolic link �hj� hhhNhNubj& )��}�(h�*inode*�h]�h�inode�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh�.�����}�(hjL hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hjl hKhj� hhubh-)��}�(h�**ctx* will be a `RequestContext` instance.�h]�(j& )��}�(h�*ctx*�h]�h�ctx�����}�(hhhj ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj ubh� will be a �����}�(h� will be a �hj hhhNhNubh8)��}�(h�`RequestContext`�h]�h�)��}�(hj h]�h�RequestContext�����}�(hhhj ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j& �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�RequestContext�uh*h7hjl hKhj ubh� instance.�����}�(h� instance.�hj hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hjl hKhj� hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hjm hhhj� hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j jL j �method�j jP j �uh*hzhhhh�hjl hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�$release() (llfuse.Operations method)��llfuse.Operations.release�hNt�auh*hihh�hhh�&docstring of llfuse.Operations.release�hNubh{)��}�(hhh]�(h�)��}�(h�Operations.release(self, fh)�h]�(h�)��}�(h�release�h]�h�release�����}�(hhhjg hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hjc hhh�&docstring of llfuse.Operations.release�hNubj� )��}�(h�self, fh�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhj~ ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hjz ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjv ubj� )��}�(h�fh�h]�j� )��}�(h�fh�h]�h�fh�����}�(hhhj� ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj� ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjv ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hjc hhhju hNubeh}�(h ]�j] ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.release�uh*hhju hKhj` hhubh�)��}�(hhh]�(h-)��}�(h�Release open file�h]�h�Release open file�����}�(hj� hj� hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj_ hKhj� hhubh-)��}�(h��This method will be called when the last file descriptor of *fh* has been closed, i.e. when the file is no longer opened by any client process.�h]�(h�<This method will be called when the last file descriptor of �����}�(h�<This method will be called when the last file descriptor of �hj� hhhNhNubj& )��}�(h�*fh*�h]�h�fh�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh�O has been closed, i.e. when the file is no longer opened by any client process.�����}�(h�O has been closed, i.e. when the file is no longer opened by any client process.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj_ hKhj� hhubh-)��}�(h��*fh* will by an integer filehandle returned by a prior `open` or `create` call. Once `release` has been called, no future requests for *fh* will be received (until the value is re-used in the return value of another `open` or `create` call).�h]�(j& )��}�(h�*fh*�h]�h�fh�����}�(hhhj� ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh�3 will by an integer filehandle returned by a prior �����}�(h�3 will by an integer filehandle returned by a prior �hj� hhhNhNubh8)��}�(h�`open`�h]�h�)��}�(hj h]�h�open�����}�(hhhj ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�open�uh*h7hj_ hKhj� ubh� or �����}�(h� or �hj� hhhNhNubh8)��}�(h�`create`�h]�h�)��}�(hj) h]�h�create�����}�(hhhj+ ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj' ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j5 �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�create�uh*h7hj_ hKhj� ubh� call. Once �����}�(h� call. Once �hj� hhhNhNubh8)��}�(h� `release`�h]�h�)��}�(hjN h]�h�release�����}�(hhhjP ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hjL ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�jZ �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�release�uh*h7hj_ hKhj� ubh�) has been called, no future requests for �����}�(h�) has been called, no future requests for �hj� hhhNhNubj& )��}�(h�*fh*�h]�h�fh�����}�(hhhjq ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj� ubh�M will be received (until the value is re-used in the return value of another �����}�(h�M will be received (until the value is re-used in the return value of another �hj� hhhNhNubh8)��}�(h�`open`�h]�h�)��}�(hj� h]�h�open�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�open�uh*h7hj_ hKhj� ubh� or �����}�(h� or �hj� hhhNhNubh8)��}�(h�`create`�h]�h�)��}�(hj� h]�h�create�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j� h�h�h\�create�uh*h7hj_ hKhj� ubh� call).�����}�(h� call).�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj_ hKhj� hhubh-)��}�(h��This method may return an error by raising `FUSEError`, but the error will be discarded because there is no corresponding client request.�h]�(h�+This method may return an error by raising �����}�(h�+This method may return an error by raising �hj� hhhNhNubh8)��}�(h�`FUSEError`�h]�h�)��}�(hj� h]�h� FUSEError�����}�(hhhj� ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj� ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j� �reftype��obj��refexplicit���refwarn��h�j� h�h�h\� FUSEError�uh*h7hj_ hKhj� ubh�S, but the error will be discarded because there is no corresponding client request.�����}�(h�S, but the error will be discarded because there is no corresponding client request.�hj� hhhNhNubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj_ hKhj� hhubeh}�(h ]�h"]�h$]�h&]�h(]�uh*h�hj` hhhju hNubeh}�(h ]�h"]��py�ah$]�h&]�h(]�j j! j �method�j j! j �uh*hzhhhh�hj_ hNubhj)��}�(hhh]�h}�(h ]�h"]�h$]�h&]�h(]��entries�]�(hv�'releasedir() (llfuse.Operations method)��llfuse.Operations.releasedir�hNt�auh*hihh�hhh�)docstring of llfuse.Operations.releasedir�hNubh{)��}�(hhh]�(h�)��}�(h�Operations.releasedir(self, fh)�h]�(h�)��}�(h� releasedir�h]�h� releasedir�����}�(hhhj,! hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*h�hj(! hhh�)docstring of llfuse.Operations.releasedir�hNubj� )��}�(h�self, fh�h]�(j� )��}�(h�self�h]�j� )��}�(h�self�h]�h�self�����}�(hhhjC! ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hj?! ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj;! ubj� )��}�(h�fh�h]�j� )��}�(h�fh�h]�h�fh�����}�(hhhj[! ubah}�(h ]�h"]�j� ah$]�h&]�h(]�uh*j� hjW! ubah}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj;! ubeh}�(h ]�h"]�h$]�h&]�h(]�h�h�uh*j� hj(! hhhj:! hNubeh}�(h ]�j"! ah"]�h$]�h&]�h(]�h��llfuse�h�h�h��Operations.releasedir�uh*hhj:! hKhj%! hhubh�)��}�(hhh]�(h-)��}�(h�Release open directory�h]�h�Release open directory�����}�(hj�! hj�! hhhNhNubah}�(h ]�h"]�h$]�h&]�h(]�uh*h,hj$! hKhj}! hhubh-)��}�(h��This method will be called exactly once for each `opendir` call. After *fh* has been released, no further `readdir` requests will be received for it (until it is opened again with `opendir`).�h]�(h�1This method will be called exactly once for each �����}�(h�1This method will be called exactly once for each �hj�! hhhNhNubh8)��}�(h� `opendir`�h]�h�)��}�(hj�! h]�h�opendir�����}�(hhhj�! ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj�! ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j�! �reftype��obj��refexplicit���refwarn��h�j{! h�h�h\�opendir�uh*h7hj$! hKhj�! ubh� call. After �����}�(h� call. After �hj�! hhhNhNubj& )��}�(h�*fh*�h]�h�fh�����}�(hhhj�! ubah}�(h ]�h"]�h$]�h&]�h(]�uh*j% hj�! ubh� has been released, no further �����}�(h� has been released, no further �hj�! hhhNhNubh8)��}�(h� `readdir`�h]�h�)��}�(hj�! h]�h�readdir�����}�(hhhj�! ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj�! ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j�! �reftype��obj��refexplicit���refwarn��h�j{! h�h�h\�readdir�uh*h7hj$! hKhj�! ubh�A requests will be received for it (until it is opened again with �����}�(h�A requests will be received for it (until it is opened again with �hj�! hhhNhNubh8)��}�(h� `opendir`�h]�h�)��}�(hj�! h]�h�opendir�����}�(hhhj�! ubah}�(h ]�h"]�(hI�py��py-obj�eh$]�h&]�h(]�uh*h�hj�! ubah}�(h ]�h"]�h$]�h&]�h(]��refdoc�hV� refdomain�j"