€•9Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ1/translations/zh_CN/filesystems/caching/netfs-api”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/zh_TW/filesystems/caching/netfs-api”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/it_IT/filesystems/caching/netfs-api”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/ja_JP/filesystems/caching/netfs-api”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/ko_KR/filesystems/caching/netfs-api”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/pt_BR/filesystems/caching/netfs-api”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/sp_SP/filesystems/caching/netfs-api”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒK/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒNetwork Filesystem Caching API”h]”hŒNetwork Filesystem Caching API”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒ“Fscache provides an API by which a network filesystem can make use of local caching facilities. The API is arranged around a number of principles:”h]”hŒ“Fscache provides an API by which a network filesystem can make use of local caching facilities. The API is arranged around a number of principles:”…”�”}”(hhßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhŒ block_quote”“”)�”}”(hX‘(1) A cache is logically organised into volumes and data storage objects within those volumes. (2) Volumes and data storage objects are represented by various types of cookie. (3) Cookies have keys that distinguish them from their peers. (4) Cookies have coherency data that allows a cache to determine if the cached data is still valid. (5) I/O is done asynchronously where possible. ”h]”hŒenumerated_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ[A cache is logically organised into volumes and data storage objects within those volumes. ”h]”hÞ)�”}”(hŒZA cache is logically organised into volumes and data storage objects within those volumes.”h]”hŒZA cache is logically organised into volumes and data storage objects within those volumes.”…”�”}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hhúubah}”(h]”h ]”h"]”h$]”h&]”uh1høhhõubhù)�”}”(hŒMVolumes and data storage objects are represented by various types of cookie. ”h]”hÞ)�”}”(hŒLVolumes and data storage objects are represented by various types of cookie.”h]”hŒLVolumes and data storage objects are represented by various types of cookie.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hjubah}”(h]”h ]”h"]”h$]”h&]”uh1høhhõubhù)�”}”(hŒ:Cookies have keys that distinguish them from their peers. ”h]”hÞ)�”}”(hŒ9Cookies have keys that distinguish them from their peers.”h]”hŒ9Cookies have keys that distinguish them from their peers.”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1høhhõubhù)�”}”(hŒ`Cookies have coherency data that allows a cache to determine if the cached data is still valid. ”h]”hÞ)�”}”(hŒ_Cookies have coherency data that allows a cache to determine if the cached data is still valid.”h]”hŒ_Cookies have coherency data that allows a cache to determine if the cached data is still valid.”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1høhhõubhù)�”}”(hŒ+I/O is done asynchronously where possible. ”h]”hÞ)�”}”(hŒ*I/O is done asynchronously where possible.”h]”hŒ*I/O is done asynchronously where possible.”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1høhhõubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”Œ(”Œsuffix”Œ)”uh1hóhhïubah}”(h]”h ]”h"]”h$]”h&]”uh1híh³hÇh´K hhÊh²hubhÞ)�”}”(hŒThis API is used by::”h]”hŒThis API is used by:”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhŒ literal_block”“”)�”}”(hŒ#include .”h]”hŒ#include .”…”�”}”hj”sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j’h³hÇh´KhhÊh²hubh¶)�”}”(hXpThis document contains the following sections: (1) Overview (2) Volume registration (3) Data file registration (4) Declaring a cookie to be in use (5) Resizing a data file (truncation) (6) Data I/O API (7) Data file coherency (8) Data file invalidation (9) Write back resource management (10) Caching of local modifications (11) Page release and invalidation”h]”hXpThis document contains the following sections: (1) Overview (2) Volume registration (3) Data file registration (4) Declaring a cookie to be in use (5) Resizing a data file (truncation) (6) Data I/O API (7) Data file coherency (8) Data file invalidation (9) Write back resource management (10) Caching of local modifications (11) Page release and invalidation”…”�”}”hj¢sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhhÊh²hh³hÇh´K)ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒOverview”h]”hŒOverview”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj°h²hh³hÇh´K+ubhÞ)�”}”(hX The fscache hierarchy is organised on two levels from a network filesystem's point of view. The upper level represents "volumes" and the lower level represents "data storage objects". These are represented by two types of cookie, hereafter referred to as "volume cookies" and "cookies".”h]”hX2The fscache hierarchy is organised on two levels from a network filesystem’s point of view. The upper level represents “volumesâ€� and the lower level represents “data storage objectsâ€�. These are represented by two types of cookie, hereafter referred to as “volume cookiesâ€� and “cookiesâ€�.”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K-hj°h²hubhÞ)�”}”(hXâA network filesystem acquires a volume cookie for a volume using a volume key, which represents all the information that defines that volume (e.g. cell name or server address, volume ID or share name). This must be rendered as a printable string that can be used as a directory name (ie. no '/' characters and shouldn't begin with a '.'). The maximum name length is one less than the maximum size of a filename component (allowing the cache backend one char for its own purposes).”h]”hXìA network filesystem acquires a volume cookie for a volume using a volume key, which represents all the information that defines that volume (e.g. cell name or server address, volume ID or share name). This must be rendered as a printable string that can be used as a directory name (ie. no ‘/’ characters and shouldn’t begin with a ‘.’). The maximum name length is one less than the maximum size of a filename component (allowing the cache backend one char for its own purposes).”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K2hj°h²hubhÞ)�”}”(hŒFA filesystem would typically have a volume cookie for each superblock.”h]”hŒFA filesystem would typically have a volume cookie for each superblock.”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K:hj°h²hubhÞ)�”}”(hX’The filesystem then acquires a cookie for each file within that volume using an object key. Object keys are binary blobs and only need to be unique within their parent volume. The cache backend is responsible for rendering the binary blob into something it can use and may employ hash tables, trees or whatever to improve its ability to find an object. This is transparent to the network filesystem.”h]”hX’The filesystem then acquires a cookie for each file within that volume using an object key. Object keys are binary blobs and only need to be unique within their parent volume. The cache backend is responsible for rendering the binary blob into something it can use and may employ hash tables, trees or whatever to improve its ability to find an object. This is transparent to the network filesystem.”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Ksetattr()`` inode operation under the inode lock.”h]”(hŒ¬The caller must have first marked the cookie in-use. The cookie and the new size are passed in and the cache is synchronously resized. This is expected to be called from ”…”�”}”(hjUh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``->setattr()``”h]”hŒ ->setattr()”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjUubhŒ& inode operation under the inode lock.”…”�”}”(hjUh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kçhj(h²hubeh}”(h]”Œresizing-a-data-file-truncation”ah ]”h"]”Œ!resizing a data file (truncation)”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KßubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Data I/O API”h]”hŒ Data I/O API”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´KíubhÞ)�”}”(hŒ\To do data I/O operations directly through a cookie, the following functions are available::”h]”hŒ[To do data I/O operations directly through a cookie, the following functions are available:”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kïhjh²hubj“)�”}”(hXtint fscache_begin_read_operation(struct netfs_cache_resources *cres, struct fscache_cookie *cookie); int fscache_read(struct netfs_cache_resources *cres, loff_t start_pos, struct iov_iter *iter, enum netfs_read_from_hole read_hole, netfs_io_terminated_t term_func, void *term_func_priv); int fscache_write(struct netfs_cache_resources *cres, loff_t start_pos, struct iov_iter *iter, netfs_io_terminated_t term_func, void *term_func_priv);”h]”hXtint fscache_begin_read_operation(struct netfs_cache_resources *cres, struct fscache_cookie *cookie); int fscache_read(struct netfs_cache_resources *cres, loff_t start_pos, struct iov_iter *iter, enum netfs_read_from_hole read_hole, netfs_io_terminated_t term_func, void *term_func_priv); int fscache_write(struct netfs_cache_resources *cres, loff_t start_pos, struct iov_iter *iter, netfs_io_terminated_t term_func, void *term_func_priv);”…”�”}”hjžsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j’h³hÇh´Kòhjh²hubhÞ)�”}”(hX+The *begin* function sets up an operation, attaching the resources required to the cache resources block from the cookie. Assuming it doesn't return an error (for instance, it will return -ENOBUFS if given a NULL cookie, but otherwise do nothing), then one of the other two functions can be issued.”h]”(hŒThe ”…”�”}”(hj¬h²hh³Nh´Nubj)�”}”(hŒ*begin*”h]”hŒbegin”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬ubhX" function sets up an operation, attaching the resources required to the cache resources block from the cookie. Assuming it doesn’t return an error (for instance, it will return -ENOBUFS if given a NULL cookie, but otherwise do nothing), then one of the other two functions can be issued.”…”�”}”(hj¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjh²hubhÞ)�”}”(hŒîThe *read* and *write* functions initiate a direct-IO operation. Both take the previously set up cache resources block, an indication of the start file position, and an I/O iterator that describes buffer and indicates the amount of data.”h]”(hŒThe ”…”�”}”(hjÌh²hh³Nh´Nubj)�”}”(hŒ*read*”h]”hŒread”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌubhŒ and ”…”�”}”(hjÌh²hh³Nh´Nubj)�”}”(hŒ*write*”h]”hŒwrite”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌubhŒØ functions initiate a direct-IO operation. Both take the previously set up cache resources block, an indication of the start file position, and an I/O iterator that describes buffer and indicates the amount of data.”…”�”}”(hjÌh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjh²hubhÞ)�”}”(hŒéThe read function also takes a parameter to indicate how it should handle a partially populated region (a hole) in the disk content. This may be to ignore it, skip over an initial hole and place zeros in the buffer or give an error.”h]”hŒéThe read function also takes a parameter to indicate how it should handle a partially populated region (a hole) in the disk content. This may be to ignore it, skip over an initial hole and place zeros in the buffer or give an error.”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hjh²hubhÞ)�”}”(hŒkThe read and write functions can be given an optional termination function that will be run on completion::”h]”hŒjThe read and write functions can be given an optional termination function that will be run on completion:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjh²hubj“)�”}”(hŒ~typedef void (*netfs_io_terminated_t)(void *priv, ssize_t transferred_or_error, bool was_async);”h]”hŒ~typedef void (*netfs_io_terminated_t)(void *priv, ssize_t transferred_or_error, bool was_async);”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j’h³hÇh´Mhjh²hubhÞ)�”}”(hX0If a termination function is given, the operation will be run asynchronously and the termination function will be called upon completion. If not given, the operation will be run synchronously. Note that in the asynchronous case, it is possible for the operation to complete before the function returns.”h]”hX0If a termination function is given, the operation will be run asynchronously and the termination function will be called upon completion. If not given, the operation will be run synchronously. Note that in the asynchronous case, it is possible for the operation to complete before the function returns.”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjh²hubhÞ)�”}”(hŒgBoth the read and write functions end the operation when they complete, detaching any pinned resources.”h]”hŒgBoth the read and write functions end the operation when they complete, detaching any pinned resources.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjh²hubhÞ)�”}”(hŒcThe read operation will fail with ESTALE if invalidation occurred whilst the operation was ongoing.”h]”hŒcThe read operation will fail with ESTALE if invalidation occurred whilst the operation was ongoing.”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjh²hubeh}”(h]”Œ data-i-o-api”ah ]”h"]”Œ data i/o api”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KíubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒData File Coherency”h]”hŒData File Coherency”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjZh²hh³hÇh´M"ubhÞ)�”}”(hŒfTo request an update of the coherency data and file size on a cookie, the following should be called::”h]”hŒeTo request an update of the coherency data and file size on a cookie, the following should be called:”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M$hjZh²hubj“)�”}”(hŒ¡void fscache_update_cookie(struct fscache_cookie *cookie, const void *aux_data, const loff_t *object_size);”h]”hŒ¡void fscache_update_cookie(struct fscache_cookie *cookie, const void *aux_data, const loff_t *object_size);”…”�”}”hjysbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j’h³hÇh´M'hjZh²hubhÞ)�”}”(hŒ>This will update the cookie's coherency data and/or file size.”h]”hŒ@This will update the cookie’s coherency data and/or file size.”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M+hjZh²hubeh}”(h]”Œdata-file-coherency”ah ]”h"]”Œdata file coherency”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M"ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒData File Invalidation”h]”hŒData File Invalidation”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj�h²hh³hÇh´M/ubhÞ)�”}”(hX9Sometimes it will be necessary to invalidate an object that contains data. Typically this will be necessary when the server informs the network filesystem of a remote third-party change - at which point the filesystem has to throw away the state and cached data that it had for an file and reload from the server.”h]”hX9Sometimes it will be necessary to invalidate an object that contains data. Typically this will be necessary when the server informs the network filesystem of a remote third-party change - at which point the filesystem has to throw away the state and cached data that it had for an file and reload from the server.”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M1hj�h²hubhÞ)�”}”(hŒWTo indicate that a cache object should be invalidated, the following should be called::”h]”hŒVTo indicate that a cache object should be invalidated, the following should be called:”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M7hj�h²hubj“)�”}”(hŒ¶void fscache_invalidate(struct fscache_cookie *cookie, const void *aux_data, loff_t size, unsigned int flags);”h]”hŒ¶void fscache_invalidate(struct fscache_cookie *cookie, const void *aux_data, loff_t size, unsigned int flags);”…”�”}”hjÊsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j’h³hÇh´M:hj�h²hubhÞ)�”}”(hXThis increases the invalidation counter in the cookie to cause outstanding reads to fail with -ESTALE, sets the coherency data and file size from the information supplied, blocks new I/O on the cookie and dispatches the cache to go and get rid of the old data.”h]”hXThis increases the invalidation counter in the cookie to cause outstanding reads to fail with -ESTALE, sets the coherency data and file size from the information supplied, blocks new I/O on the cookie and dispatches the cache to go and get rid of the old data.”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M?hj�h²hubhÞ)�”}”(hŒVInvalidation runs asynchronously in a worker thread so that it doesn't block too much.”h]”hŒXInvalidation runs asynchronously in a worker thread so that it doesn’t block too much.”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MDhj�h²hubeh}”(h]”Œdata-file-invalidation”ah ]”h"]”Œdata file invalidation”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M/ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒWrite-Back Resource Management”h]”hŒWrite-Back Resource Management”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjüh²hh³hÇh´MIubhÞ)�”}”(hŒÿTo write data to the cache from network filesystem writeback, the cache resources required need to be pinned at the point the modification is made (for instance when the page is marked dirty) as it's not possible to open a file in a thread that's exiting.”h]”hXTo write data to the cache from network filesystem writeback, the cache resources required need to be pinned at the point the modification is made (for instance when the page is marked dirty) as it’s not possible to open a file in a thread that’s exiting.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MKhjüh²hubhÞ)�”}”(hŒ5The following facilities are provided to manage this:”h]”hŒ5The following facilities are provided to manage this:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MPhjüh²hubhî)�”}”(hX‚* An inode flag, ``I_PINNING_FSCACHE_WB``, is provided to indicate that an in-use is held on the cookie for this inode. It can only be changed if the the inode lock is held. * A flag, ``unpinned_fscache_wb`` is placed in the ``writeback_control`` struct that gets set if ``__writeback_single_inode()`` clears ``I_PINNING_FSCACHE_WB`` because all the dirty pages were cleared. ”h]”hŒ bullet_list”“”)�”}”(hhh]”(hù)�”}”(hŒ­An inode flag, ``I_PINNING_FSCACHE_WB``, is provided to indicate that an in-use is held on the cookie for this inode. It can only be changed if the the inode lock is held. ”h]”hÞ)�”}”(hŒ¬An inode flag, ``I_PINNING_FSCACHE_WB``, is provided to indicate that an in-use is held on the cookie for this inode. It can only be changed if the the inode lock is held.”h]”(hŒAn inode flag, ”…”�”}”(hj6h²hh³Nh´Nubj^)�”}”(hŒ``I_PINNING_FSCACHE_WB``”h]”hŒI_PINNING_FSCACHE_WB”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj6ubhŒ…, is provided to indicate that an in-use is held on the cookie for this inode. It can only be changed if the the inode lock is held.”…”�”}”(hj6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MRhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1høhj/ubhù)�”}”(hŒÈA flag, ``unpinned_fscache_wb`` is placed in the ``writeback_control`` struct that gets set if ``__writeback_single_inode()`` clears ``I_PINNING_FSCACHE_WB`` because all the dirty pages were cleared. ”h]”hÞ)�”}”(hŒÇA flag, ``unpinned_fscache_wb`` is placed in the ``writeback_control`` struct that gets set if ``__writeback_single_inode()`` clears ``I_PINNING_FSCACHE_WB`` because all the dirty pages were cleared.”h]”(hŒA flag, ”…”�”}”(hj`h²hh³Nh´Nubj^)�”}”(hŒ``unpinned_fscache_wb``”h]”hŒunpinned_fscache_wb”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj`ubhŒ is placed in the ”…”�”}”(hj`h²hh³Nh´Nubj^)�”}”(hŒ``writeback_control``”h]”hŒwriteback_control”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj`ubhŒ struct that gets set if ”…”�”}”(hj`h²hh³Nh´Nubj^)�”}”(hŒ``__writeback_single_inode()``”h]”hŒ__writeback_single_inode()”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj`ubhŒ clears ”…”�”}”(hj`h²hh³Nh´Nubj^)�”}”(hŒ``I_PINNING_FSCACHE_WB``”h]”hŒI_PINNING_FSCACHE_WB”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj`ubhŒ* because all the dirty pages were cleared.”…”�”}”(hj`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MVhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1høhj/ubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1j-h³hÇh´MRhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1híh³hÇh´MRhjüh²hubhÞ)�”}”(hŒ7To support this, the following functions are provided::”h]”hŒ6To support this, the following functions are provided:”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MZhjüh²hubj“)�”}”(hXÆbool fscache_dirty_folio(struct address_space *mapping, struct folio *folio, struct fscache_cookie *cookie); void fscache_unpin_writeback(struct writeback_control *wbc, struct fscache_cookie *cookie); void fscache_clear_inode_writeback(struct fscache_cookie *cookie, struct inode *inode, const void *aux);”h]”hXÆbool fscache_dirty_folio(struct address_space *mapping, struct folio *folio, struct fscache_cookie *cookie); void fscache_unpin_writeback(struct writeback_control *wbc, struct fscache_cookie *cookie); void fscache_clear_inode_writeback(struct fscache_cookie *cookie, struct inode *inode, const void *aux);”…”�”}”hjØsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j’h³hÇh´M\hjüh²hubhÞ)�”}”(hXThe *set* function is intended to be called from the filesystem's ``dirty_folio`` address space operation. If ``I_PINNING_FSCACHE_WB`` is not set, it sets that flag and increments the use count on the cookie (the caller must already have called ``fscache_use_cookie()``).”h]”(hŒThe ”…”�”}”(hjæh²hh³Nh´Nubj)�”}”(hŒ*set*”h]”hŒset”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæubhŒ; function is intended to be called from the filesystem’s ”…”�”}”(hjæh²hh³Nh´Nubj^)�”}”(hŒ``dirty_folio``”h]”hŒ dirty_folio”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjæubhŒ address space operation. If ”…”�”}”(hjæh²hh³Nh´Nubj^)�”}”(hŒ``I_PINNING_FSCACHE_WB``”h]”hŒI_PINNING_FSCACHE_WB”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjæubhŒo is not set, it sets that flag and increments the use count on the cookie (the caller must already have called ”…”�”}”(hjæh²hh³Nh´Nubj^)�”}”(hŒ``fscache_use_cookie()``”h]”hŒfscache_use_cookie()”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjæubhŒ).”…”�”}”(hjæh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mehjüh²hubhÞ)�”}”(hŒÚThe *unpin* function is intended to be called from the filesystem's ``write_inode`` superblock operation. It cleans up after writing by unusing the cookie if unpinned_fscache_wb is set in the writeback_control struct.”h]”(hŒThe ”…”�”}”(hj<h²hh³Nh´Nubj)�”}”(hŒ*unpin*”h]”hŒunpin”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<ubhŒ; function is intended to be called from the filesystem’s ”…”�”}”(hj<h²hh³Nh´Nubj^)�”}”(hŒ``write_inode``”h]”hŒ write_inode”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj<ubhŒ‡ superblock operation. It cleans up after writing by unusing the cookie if unpinned_fscache_wb is set in the writeback_control struct.”…”�”}”(hj<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mjhjüh²hubhÞ)�”}”(hX)The *clear* function is intended to be called from the netfs's ``evict_inode`` superblock operation. It must be called *after* ``truncate_inode_pages_final()``, but *before* ``clear_inode()``. This cleans up any hanging ``I_PINNING_FSCACHE_WB``. It also allows the coherency data to be updated.”h]”(hŒThe ”…”�”}”(hjnh²hh³Nh´Nubj)�”}”(hŒ*clear*”h]”hŒclear”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnubhŒ6 function is intended to be called from the netfs’s ”…”�”}”(hjnh²hh³Nh´Nubj^)�”}”(hŒ``evict_inode``”h]”hŒ evict_inode”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjnubhŒ* superblock operation. It must be called ”…”�”}”(hjnh²hh³Nh´Nubj)�”}”(hŒ*after*”h]”hŒafter”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnubhŒ ”…”�”}”(hjnh²hh³Nh´Nubj^)�”}”(hŒ ``truncate_inode_pages_final()``”h]”hŒtruncate_inode_pages_final()”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjnubhŒ, but ”…”�”}”(hjnh²hh³Nh´Nubj)�”}”(hŒ*before*”h]”hŒbefore”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnubhŒ ”…”�”}”(hjnh²hh³Nh´Nubj^)�”}”(hŒ``clear_inode()``”h]”hŒ clear_inode()”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjnubhŒ. This cleans up any hanging ”…”�”}”(hjnh²hh³Nh´Nubj^)�”}”(hŒ``I_PINNING_FSCACHE_WB``”h]”hŒI_PINNING_FSCACHE_WB”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjnubhŒ3. It also allows the coherency data to be updated.”…”�”}”(hjnh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mnhjüh²hubeh}”(h]”Œwrite-back-resource-management”ah ]”h"]”Œwrite-back resource management”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MIubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒCaching of Local Modifications”h]”hŒCaching of Local Modifications”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´MvubhÞ)�”}”(hXoIf a network filesystem has locally modified data that it wants to write to the cache, it needs to mark the pages to indicate that a write is in progress, and if the mark is already present, it needs to wait for it to be removed first (presumably due to an already in-progress operation). This prevents multiple competing DIO writes to the same storage in the cache.”h]”hXoIf a network filesystem has locally modified data that it wants to write to the cache, it needs to mark the pages to indicate that a write is in progress, and if the mark is already present, it needs to wait for it to be removed first (presumably due to an already in-progress operation). This prevents multiple competing DIO writes to the same storage in the cache.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mxhjh²hubhÞ)�”}”(hŒUFirstly, the netfs should determine if caching is available by doing something like::”h]”hŒTFirstly, the netfs should determine if caching is available by doing something like:”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M~hjh²hubj“)�”}”(hŒ.bool caching = fscache_cookie_enabled(cookie);”h]”hŒ.bool caching = fscache_cookie_enabled(cookie);”…”�”}”hj/sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j’h³hÇh´M�hjh²hubhÞ)�”}”(hŒŽIf caching is to be attempted, pages should be waited for and then marked using the following functions provided by the netfs helper library::”h]”hŒ�If caching is to be attempted, pages should be waited for and then marked using the following functions provided by the netfs helper library:”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mƒhjh²hubj“)�”}”(hŒ�void set_page_fscache(struct page *page); void wait_on_page_fscache(struct page *page); int wait_on_page_fscache_killable(struct page *page);”h]”hŒ�void set_page_fscache(struct page *page); void wait_on_page_fscache(struct page *page); int wait_on_page_fscache_killable(struct page *page);”…”�”}”hjKsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j’h³hÇh´M†hjh²hubhÞ)�”}”(hŒiOnce all the pages in the span are marked, the netfs can ask fscache to schedule a write of that region::”h]”hŒhOnce all the pages in the span are marked, the netfs can ask fscache to schedule a write of that region:”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MŠhjh²hubj“)�”}”(hXSvoid fscache_write_to_cache(struct fscache_cookie *cookie, struct address_space *mapping, loff_t start, size_t len, loff_t i_size, netfs_io_terminated_t term_func, void *term_func_priv, bool caching)”h]”hXSvoid fscache_write_to_cache(struct fscache_cookie *cookie, struct address_space *mapping, loff_t start, size_t len, loff_t i_size, netfs_io_terminated_t term_func, void *term_func_priv, bool caching)”…”�”}”hjgsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j’h³hÇh´M�hjh²hubhÞ)�”}”(hŒZAnd if an error occurs before that point is reached, the marks can be removed by calling::”h]”hŒYAnd if an error occurs before that point is reached, the marks can be removed by calling:”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M”hjh²hubj“)�”}”(hŒ�void fscache_clear_page_bits(struct address_space *mapping, loff_t start, size_t len, bool caching)”h]”hŒ�void fscache_clear_page_bits(struct address_space *mapping, loff_t start, size_t len, bool caching)”…”�”}”hjƒsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j’h³hÇh´M—hjh²hubhÞ)�”}”(hX–In these functions, a pointer to the mapping to which the source pages are attached is passed in and start and len indicate the size of the region that's going to be written (it doesn't have to align to page boundaries necessarily, but it does have to align to DIO boundaries on the backing filesystem). The caching parameter indicates if caching should be skipped, and if false, the functions do nothing.”h]”hXšIn these functions, a pointer to the mapping to which the source pages are attached is passed in and start and len indicate the size of the region that’s going to be written (it doesn’t have to align to page boundaries necessarily, but it does have to align to DIO boundaries on the backing filesystem). The caching parameter indicates if caching should be skipped, and if false, the functions do nothing.”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M›hjh²hubhÞ)�”}”(hX$The write function takes some additional parameters: the cookie representing the cache object to be written to, i_size indicates the size of the netfs file and term_func indicates an optional completion function, to which term_func_priv will be passed, along with the error or amount written.”h]”hX$The write function takes some additional parameters: the cookie representing the cache object to be written to, i_size indicates the size of the netfs file and term_func indicates an optional completion function, to which term_func_priv will be passed, along with the error or amount written.”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¢hjh²hubhÞ)�”}”(hŒƒNote that the write function will always run asynchronously and will unmark all the pages upon completion before calling term_func.”h]”hŒƒNote that the write function will always run asynchronously and will unmark all the pages upon completion before calling term_func.”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M§hjh²hubeh}”(h]”Œcaching-of-local-modifications”ah ]”h"]”Œcaching of local modifications”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MvubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒPage Release and Invalidation”h]”hŒPage Release and Invalidation”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÃh²hh³hÇh´M¬ubhÞ)�”}”(hXFscache keeps track of whether we have any data in the cache yet for a cache object we've just created. It knows it doesn't have to do any reading until it has done a write and then the page it wrote from has been released by the VM, after which it *has* to look in the cache.”h]”(hŒþFscache keeps track of whether we have any data in the cache yet for a cache object we’ve just created. It knows it doesn’t have to do any reading until it has done a write and then the page it wrote from has been released by the VM, after which it ”…”�”}”(hjÔh²hh³Nh´Nubj)�”}”(hŒ*has*”h]”hŒhas”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔubhŒ to look in the cache.”…”�”}”(hjÔh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M®hjÃh²hubhÞ)�”}”(hŒŽTo inform fscache that a page might now be in the cache, the following function should be called from the ``release_folio`` address space op::”h]”(hŒjTo inform fscache that a page might now be in the cache, the following function should be called from the ”…”�”}”(hjôh²hh³Nh´Nubj^)�”}”(hŒ``release_folio``”h]”hŒ release_folio”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjôubhŒ address space op:”…”�”}”(hjôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M³hjÃh²hubj“)�”}”(hŒ>void fscache_note_page_release(struct fscache_cookie *cookie);”h]”hŒ>void fscache_note_page_release(struct fscache_cookie *cookie);”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j’h³hÇh´M¶hjÃh²hubhÞ)�”}”(hŒ@if the page has been released (ie. release_folio returned true).”h]”hŒ@if the page has been released (ie. release_folio returned true).”…”�”}”(hj" h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¸hjÃh²hubhÞ)�”}”(hŒ†Page release and page invalidation should also wait for any mark left on the page to say that a DIO write is underway from that page::”h]”hŒ…Page release and page invalidation should also wait for any mark left on the page to say that a DIO write is underway from that page:”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MºhjÃh²hubj“)�”}”(hŒcvoid wait_on_page_fscache(struct page *page); int wait_on_page_fscache_killable(struct page *page);”h]”hŒcvoid wait_on_page_fscache(struct page *page); int wait_on_page_fscache_killable(struct page *page);”…”�”}”hj> sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j’h³hÇh´M½hjÃh²hubeh}”(h]”Œpage-release-and-invalidation”ah ]”h"]”Œpage release and invalidation”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M¬ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒAPI Function Reference”h]”hŒAPI Function Reference”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjT h²hh³hÇh´MÂubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œ#fscache_acquire_volume (C function)”Œc.fscache_acquire_volume”hNt”auh1je hjT h²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒ‘struct fscache_volume * fscache_acquire_volume (const char *volume_key, const char *cache_name, const void *coherency_data, size_t coherency_len)”h]”hŒdesc_signature_line”“”)�”}”(hŒ�struct fscache_volume *fscache_acquire_volume(const char *volume_key, const char *cache_name, const void *coherency_data, size_t coherency_len)”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1j‡ hjƒ h²hh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´K¸ubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j™ hjƒ h²hh³j˜ h´K¸ubh)�”}”(hhh]”hŒ desc_sig_name”“”)�”}”(hŒfscache_volume”h]”hŒfscache_volume”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1j­ hjª ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”Œc”Œreftype”Œ identifier”Œ reftarget”j± Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jÌ Œ ASTIdentifier”“”)�”}”jÇ Œfscache_acquire_volume”sbŒc.fscache_acquire_volume”†”asbuh1hhjƒ h²hh³j˜ h´K¸ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjƒ h²hh³j˜ h´K¸ubhŒdesc_sig_punctuation”“”)�”}”(hjÃh]”hŒ*”…”�”}”(hjê h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jè hjƒ h²hh³j˜ h´K¸ubhŒ desc_name”“”)�”}”(hŒfscache_acquire_volume”h]”j® )�”}”(hj× h]”hŒfscache_acquire_volume”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjú ubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1jø hjƒ h²hh³j˜ h´K¸ubhŒdesc_parameterlist”“”)�”}”(hŒb(const char *volume_key, const char *cache_name, const void *coherency_data, size_t coherency_len)”h]”(hŒdesc_parameter”“”)�”}”(hŒconst char *volume_key”h]”(jˆ )�”}”(hŒconst”h]”hŒconst”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj ubhŒdesc_sig_keyword_type”“”)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j; hj ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj ubj® )�”}”(hŒ volume_key”h]”hŒ volume_key”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj ubj )�”}”(hŒconst char *cache_name”h]”(jˆ )�”}”(hj! h]”hŒconst”…”�”}”(hj€ h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj| ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj| ubj< )�”}”(hŒchar”h]”hŒchar”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj| ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj| ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj| ubj® )�”}”(hŒ cache_name”h]”hŒ cache_name”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj| ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj ubj )�”}”(hŒconst void *coherency_data”h]”(jˆ )�”}”(hj! h]”hŒconst”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hjÙ ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjÙ ubj< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjÙ ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjÙ ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hjÙ ubj® )�”}”(hŒcoherency_data”h]”hŒcoherency_data”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjÙ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj ubj )�”}”(hŒsize_t coherency_len”h]”(h)�”}”(hhh]”j® )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj: ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”j? Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÕ Œc.fscache_acquire_volume”†”asbuh1hhj6 ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj6 ubj® )�”}”(hŒ coherency_len”h]”hŒ coherency_len”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj6 ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hjƒ h²hh³j˜ h´K¸ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1j� Œsphinx_line_type”Œ declarator”hj} h²hh³j˜ h´K¸ubah}”(h]”jt ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j{ h³j˜ h´K¸hjx h²hubhŒ desc_content”“”)�”}”(hhh]”hÞ)�”}”(hŒ.Register a volume as desiring caching services”h]”hŒ.Register a volume as desiring caching services”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´K¸hjš h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜ hjx h²hh³j˜ h´K¸ubeh}”(h]”h ]”(jÅ Œfunction”eh"]”h$]”h&]”Œdomain”jÅ Œobjtype”jµ Œdesctype”jµ Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jv h²hhjT h³Nh´NubhŒ container”“”)�”}”(hXL**Parameters** ``const char *volume_key`` An identification string for the volume ``const char *cache_name`` The name of the cache to use (or NULL for the default) ``const void *coherency_data`` Piece of arbitrary coherency data to check (or NULL) ``size_t coherency_len`` The size of the coherency data **Description** Register a volume as desiring caching services if they're available. The caller must provide an identifier for the volume and may also indicate which cache it should be in. If a preexisting volume entry is found in the cache, the coherency data must match otherwise the entry will be invalidated. Returns a cookie pointer on success, -ENOMEM if out of memory or -EBUSY if a cache volume of that name is already acquired. Note that "NULL" is a valid cookie pointer and can be returned if caching is refused.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”hŒstrong”“”)�”}”(hjÇ h]”hŒ Parameters”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjÅ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´K¼hjÁ ubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒC``const char *volume_key`` An identification string for the volume ”h]”(hŒterm”“”)�”}”(hŒ``const char *volume_key``”h]”j^)�”}”(hjî h]”hŒconst char *volume_key”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjì ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´K¹hjæ ubhŒ definition”“”)�”}”(hhh]”hÞ)�”}”(hŒ'An identification string for the volume”h]”hŒ'An identification string for the volume”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j h´K¹hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjæ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j h´K¹hjá ubjå )�”}”(hŒR``const char *cache_name`` The name of the cache to use (or NULL for the default) ”h]”(jë )�”}”(hŒ``const char *cache_name``”h]”j^)�”}”(hj) h]”hŒconst char *cache_name”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj' ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Kºhj# ubj )�”}”(hhh]”hÞ)�”}”(hŒ6The name of the cache to use (or NULL for the default)”h]”hŒ6The name of the cache to use (or NULL for the default)”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j> h´Kºhj? ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj# ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j> h´Kºhjá ubjå )�”}”(hŒT``const void *coherency_data`` Piece of arbitrary coherency data to check (or NULL) ”h]”(jë )�”}”(hŒ``const void *coherency_data``”h]”j^)�”}”(hjb h]”hŒconst void *coherency_data”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj` ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´K»hj\ ubj )�”}”(hhh]”hÞ)�”}”(hŒ4Piece of arbitrary coherency data to check (or NULL)”h]”hŒ4Piece of arbitrary coherency data to check (or NULL)”…”�”•}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jw h´K»hjx ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj\ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jw h´K»hjá ubjå )�”}”(hŒ8``size_t coherency_len`` The size of the coherency data ”h]”(jë )�”}”(hŒ``size_t coherency_len``”h]”j^)�”}”(hj› h]”hŒsize_t coherency_len”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj™ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´K¼hj• ubj )�”}”(hhh]”hÞ)�”}”(hŒThe size of the coherency data”h]”hŒThe size of the coherency data”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j° h´K¼hj± ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj• ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j° h´K¼hjá ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jß hjÁ ubhÞ)�”}”(hŒ**Description**”h]”jÊ )�”}”(hjÖ h]”hŒ Description”…”�”}”(hjØ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjÔ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´K¾hjÁ ubhÞ)�”}”(hX*Register a volume as desiring caching services if they're available. The caller must provide an identifier for the volume and may also indicate which cache it should be in. If a preexisting volume entry is found in the cache, the coherency data must match otherwise the entry will be invalidated.”h]”hX,Register a volume as desiring caching services if they’re available. The caller must provide an identifier for the volume and may also indicate which cache it should be in. If a preexisting volume entry is found in the cache, the coherency data must match otherwise the entry will be invalidated.”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´K½hjÁ ubhÞ)�”}”(hŒÒReturns a cookie pointer on success, -ENOMEM if out of memory or -EBUSY if a cache volume of that name is already acquired. Note that "NULL" is a valid cookie pointer and can be returned if caching is refused.”h]”hŒÖReturns a cookie pointer on success, -ENOMEM if out of memory or -EBUSY if a cache volume of that name is already acquired. Note that “NULLâ€� is a valid cookie pointer and can be returned if caching is refused.”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´KÂhjÁ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¿ hjT h²hh³Nh´Nubjf )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jr Œ&fscache_relinquish_volume (C function)”Œc.fscache_relinquish_volume”hNt”auh1je hjT h²hh³Nh´Nubjw )�”}”(hhh]”(j| )�”}”(hŒkvoid fscache_relinquish_volume (struct fscache_volume *volume, const void *coherency_data, bool invalidate)”h]”j‚ )�”}”(hŒjvoid fscache_relinquish_volume(struct fscache_volume *volume, const void *coherency_data, bool invalidate)”h]”(j< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj* h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj& h²hh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´KÔubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj& h²hh³j8 h´KÔubjù )�”}”(hŒfscache_relinquish_volume”h]”j® )�”}”(hŒfscache_relinquish_volume”h]”hŒfscache_relinquish_volume”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjG ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jø hj& h²hh³j8 h´KÔubj )�”}”(hŒL(struct fscache_volume *volume, const void *coherency_data, bool invalidate)”h]”(j )�”}”(hŒstruct fscache_volume *volume”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hjc ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjc ubh)�”}”(hhh]”j® )�”}”(hŒfscache_volume”h]”hŒfscache_volume”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj‚ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”j‡ Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÔ )�”}”jÇ jM sbŒc.fscache_relinquish_volume”†”asbuh1hhjc ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjc ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hjc ubj® )�”}”(hŒvolume”h]”hŒvolume”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjc ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj_ ubj )�”}”(hŒconst void *coherency_data”h]”(jˆ )�”}”(hj! h]”hŒconst”…”�”}”(hjÙ h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hjÕ ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjÕ ubj< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjÕ ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjÕ ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hjÕ ubj® )�”}”(hŒcoherency_data”h]”hŒcoherency_data”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjÕ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj_ ubj )�”}”(hŒbool invalidate”h]”(j< )�”}”(hŒbool”h]”hŒbool”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj2ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj2ubj® )�”}”(hŒ invalidate”h]”hŒ invalidate”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj_ ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hj& h²hh³j8 h´KÔubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjŠ ˆuh1j� j‹ jŒ hj" h²hh³j8 h´KÔubah}”(h]”j ah ]”(j� j‘ eh"]”h$]”h&]”j• ˆj– )j— huh1j{ h³j8 h´KÔhj h²hubj™ )�”}”(hhh]”hÞ)�”}”(hŒCease caching a volume”h]”hŒCease caching a volume”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´KÔhjyh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜ hj h²hh³j8 h´KÔubeh}”(h]”h ]”(jÅ Œfunction”eh"]”h$]”h&]”j¹ jÅ jº j”j» j”j¼ ‰j½ ‰j¾ ‰uh1jv h²hhjT h³Nh´NubjÀ )�”}”(hX¨**Parameters** ``struct fscache_volume *volume`` The volume cookie ``const void *coherency_data`` Piece of arbitrary coherency data to set (or NULL) ``bool invalidate`` True if the volume should be invalidated **Description** Indicate that a filesystem no longer desires caching services for a volume. The caller must have relinquished all file cookies prior to calling this. The stored coherency data is updated.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jÊ )�”}”(hjžh]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´KØhj˜ubjà )�”}”(hhh]”(jå )�”}”(hŒ4``struct fscache_volume *volume`` The volume cookie ”h]”(jë )�”}”(hŒ!``struct fscache_volume *volume``”h]”j^)�”}”(hj½h]”hŒstruct fscache_volume *volume”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´KÕhj·ubj )�”}”(hhh]”hÞ)�”}”(hŒThe volume cookie”h]”hŒThe volume cookie”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÒh´KÕhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jÒh´KÕhj´ubjå )�”}”(hŒR``const void *coherency_data`` Piece of arbitrary coherency data to set (or NULL) ”h]”(jë )�”}”(hŒ``const void *coherency_data``”h]”j^)�”}”(hjöh]”hŒconst void *coherency_data”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´KÖhjðubj )�”}”(hhh]”hÞ)�”}”(hŒ2Piece of arbitrary coherency data to set (or NULL)”h]”hŒ2Piece of arbitrary coherency data to set (or NULL)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j h´KÖhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j h´KÖhj´ubjå )�”}”(hŒ=``bool invalidate`` True if the volume should be invalidated ”h]”(jë )�”}”(hŒ``bool invalidate``”h]”j^)�”}”(hj/h]”hŒbool invalidate”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´K×hj)ubj )�”}”(hhh]”hÞ)�”}”(hŒ(True if the volume should be invalidated”h]”hŒ(True if the volume should be invalidated”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jDh´K×hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jDh´K×hj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jß hj˜ubhÞ)�”}”(hŒ**Description**”h]”jÊ )�”}”(hjjh]”hŒ Description”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´KÙhj˜ubhÞ)�”}”(hŒ»Indicate that a filesystem no longer desires caching services for a volume. The caller must have relinquished all file cookies prior to calling this. The stored coherency data is updated.”h]”hŒ»Indicate that a filesystem no longer desires caching services for a volume. The caller must have relinquished all file cookies prior to calling this. The stored coherency data is updated.”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´KØhj˜ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¿ hjT h²hh³Nh´Nubjf )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jr Œ#fscache_acquire_cookie (C function)”Œc.fscache_acquire_cookie”hNt”auh1je hjT h²hh³Nh´Nubjw )�”}”(hhh]”(j| )�”}”(hŒÅstruct fscache_cookie * fscache_acquire_cookie (struct fscache_volume *volume, u8 advice, const void *index_key, size_t index_key_len, const void *aux_data, size_t aux_data_len, loff_t object_size)”h]”j‚ )�”}”(hŒÃstruct fscache_cookie *fscache_acquire_cookie(struct fscache_volume *volume, u8 advice, const void *index_key, size_t index_key_len, const void *aux_data, size_t aux_data_len, loff_t object_size)”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj«h²hh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Kçubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj«h²hh³j¼h´Kçubh)�”}”(hhh]”j® )�”}”(hŒfscache_cookie”h]”hŒfscache_cookie”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjËubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jÐŒmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÔ )�”}”jÇ Œfscache_acquire_cookie”sbŒc.fscache_acquire_cookie”†”asbuh1hhj«h²hh³j¼h´Kçubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj«h²hh³j¼h´Kçubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj«h²hh³j¼h´Kçubjù )�”}”(hŒfscache_acquire_cookie”h]”j® )�”}”(hjìh]”hŒfscache_acquire_cookie”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jø hj«h²hh³j¼h´Kçubj )�”}”(hŒ–(struct fscache_volume *volume, u8 advice, const void *index_key, size_t index_key_len, const void *aux_data, size_t aux_data_len, loff_t object_size)”h]”(j )�”}”(hŒstruct fscache_volume *volume”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj%ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj%ubh)�”}”(hhh]”j® )�”}”(hŒfscache_volume”h]”hŒfscache_volume”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jIŒmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jêŒc.fscache_acquire_cookie”†”asbuh1hhj%ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj%ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj%ubj® )�”}”(hŒvolume”h]”hŒvolume”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj!ubj )�”}”(hŒ u8 advice”h]”(h)�”}”(hhh]”j® )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jžŒmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jêŒc.fscache_acquire_cookie”†”asbuh1hhj•ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj•ubj® )�”}”(hŒadvice”h]”hŒadvice”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj!ubj )�”}”(hŒconst void *index_key”h]”(jˆ )�”}”(hj! h]”hŒconst”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hjÝubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjÝubj< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjÝubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjÝubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hjÝubj® )�”}”(hŒ index_key”h]”hŒ index_key”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjÝubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj!ubj )�”}”(hŒsize_t index_key_len”h]”(h)�”}”(hhh]”j® )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jCŒmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jêŒc.fscache_acquire_cookie”†”asbuh1hhj:ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj:ubj® )�”}”(hŒ index_key_len”h]”hŒ index_key_len”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj!ubj )�”}”(hŒconst void *aux_data”h]”(jˆ )�”}”(hj! h]”hŒconst”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj‚ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj‚ubj< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj‚ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj‚ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj‚ubj® )�”}”(hŒaux_data”h]”hŒaux_data”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj!ubj )�”}”(hŒsize_t aux_data_len”h]”(h)�”}”(hhh]”j® )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jèŒmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jêŒc.fscache_acquire_cookie”†”asbuh1hhjßubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjßubj® )�”}”(hŒ aux_data_len”h]”hŒ aux_data_len”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj!ubj )�”}”(hŒloff_t object_size”h]”(h)�”}”(hhh]”j® )�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”j0Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jêŒc.fscache_acquire_cookie”†”asbuh1hhj'ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj'ubj® )�”}”(hŒ object_size”h]”hŒ object_size”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj!ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hj«h²hh³j¼h´Kçubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjŠ ˆuh1j� j‹ jŒ hj§h²hh³j¼h´Kçubah}”(h]”j¢ah ]”(j� j‘ eh"]”h$]”h&]”j• ˆj– )j— huh1j{ h³j¼h´Kçhj¤h²hubj™ )�”}”(hhh]”hÞ)�”}”(hŒ,Acquire a cookie to represent a cache object”h]”hŒ,Acquire a cookie to represent a cache object”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Kçhj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜ hj¤h²hh³j¼h´Kçubeh}”(h]”h ]”(jÅ Œfunction”eh"]”h$]”h&]”j¹ jÅ jº jœj» jœj¼ ‰j½ ‰j¾ ‰uh1jv h²hhjT h³Nh´NubjÀ )�”}”(hXp**Parameters** ``struct fscache_volume *volume`` The volume in which to locate/create this cookie ``u8 advice`` Advice flags (FSCACHE_COOKIE_ADV_*) ``const void *index_key`` The index key for this cookie ``size_t index_key_len`` Size of the index key ``const void *aux_data`` The auxiliary data for the cookie (may be NULL) ``size_t aux_data_len`` Size of the auxiliary data buffer ``loff_t object_size`` The initial size of object **Description** Acquire a cookie to represent a data file within the given cache volume. See Documentation/filesystems/caching/netfs-api.rst for a complete description.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jÊ )�”}”(hj¦h]”hŒ Parameters”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Këhj ubjà )�”}”(hhh]”(jå )�”}”(hŒS``struct fscache_volume *volume`` The volume in which to locate/create this cookie ”h]”(jë )�”}”(hŒ!``struct fscache_volume *volume``”h]”j^)�”}”(hjÅh]”hŒstruct fscache_volume *volume”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Kèhj¿ubj )�”}”(hhh]”hÞ)�”}”(hŒ0The volume in which to locate/create this cookie”h]”hŒ0The volume in which to locate/create this cookie”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÚh´KèhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jÚh´Kèhj¼ubjå )�”}”(hŒ2``u8 advice`` Advice flags (FSCACHE_COOKIE_ADV_*) ”h]”(jë )�”}”(hŒ ``u8 advice``”h]”j^)�”}”(hjþh]”hŒ u8 advice”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Kéhjøubj )�”}”(hhh]”hÞ)�”}”(hŒ#Advice flags (FSCACHE_COOKIE_ADV_*)”h]”hŒ#Advice flags (FSCACHE_COOKIE_ADV_*)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jh´Kéhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jh´Kéhj¼ubjå )�”}”(hŒ8``const void *index_key`` The index key for this cookie ”h]”(jë )�”}”(hŒ``const void *index_key``”h]”j^)�”}”(hj7h]”hŒconst void *index_key”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Kêhj1ubj )�”}”(hhh]”hÞ)�”}”(hŒThe index key for this cookie”h]”hŒThe index key for this cookie”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jLh´KêhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jLh´Kêhj¼ubjå )�”}”(hŒ/``size_t index_key_len`` Size of the index key ”h]”(jë )�”}”(hŒ``size_t index_key_len``”h]”j^)�”}”(hjph]”hŒsize_t index_key_len”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Këhjjubj )�”}”(hhh]”hÞ)�”}”(hŒSize of the index key”h]”hŒSize of the index key”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j…h´Këhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j…h´Këhj¼ubjå )�”}”(hŒI``const void *aux_data`` The auxiliary data for the cookie (may be NULL) ”h]”(jë )�”}”(hŒ``const void *aux_data``”h]”j^)�”}”(hj©h]”hŒconst void *aux_data”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Kìhj£ubj )�”}”(hhh]”hÞ)�”}”(hŒ/The auxiliary data for the cookie (may be NULL)”h]”hŒ/The auxiliary data for the cookie (may be NULL)”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¾h´Kìhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j¾h´Kìhj¼ubjå )�”}”(hŒ:``size_t aux_data_len`` Size of the auxiliary data buffer ”h]”(jë )�”}”(hŒ``size_t aux_data_len``”h]”j^)�”}”(hjâh]”hŒsize_t aux_data_len”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´KíhjÜubj )�”}”(hhh]”hÞ)�”}”(hŒ!Size of the auxiliary data buffer”h]”hŒ!Size of the auxiliary data buffer”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j÷h´Kíhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j÷h´Kíhj¼ubjå )�”}”(hŒ2``loff_t object_size`` The initial size of object ”h]”(jë )�”}”(hŒ``loff_t object_size``”h]”j^)�”}”(hjh]”hŒloff_t object_size”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Kîhjubj )�”}”(hhh]”hÞ)�”}”(hŒThe initial size of object”h]”hŒThe initial size of object”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j0h´Kîhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j0h´Kîhj¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jß hj ubhÞ)�”}”(hŒ**Description**”h]”jÊ )�”}”(hjVh]”hŒ Description”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Kðhj ubhÞ)�”}”(hŒHAcquire a cookie to represent a data file within the given cache volume.”h]”hŒHAcquire a cookie to represent a data file within the given cache volume.”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Kïhj ubhÞ)�”}”(hŒOSee Documentation/filesystems/caching/netfs-api.rst for a complete description.”h]”hŒOSee Documentation/filesystems/caching/netfs-api.rst for a complete description.”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Kñhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¿ hjT h²hh³Nh´Nubjf )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jr Œfscache_use_cookie (C function)”Œc.fscache_use_cookie”hNt”auh1je hjT h²hh³Nh´Nubjw )�”}”(hhh]”(j| )�”}”(hŒIvoid fscache_use_cookie (struct fscache_cookie *cookie, bool will_modify)”h]”j‚ )�”}”(hŒHvoid fscache_use_cookie(struct fscache_cookie *cookie, bool will_modify)”h]”(j< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj¦h²hh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj¦h²hh³j¸h´Mubjù )�”}”(hŒfscache_use_cookie”h]”j® )�”}”(hŒfscache_use_cookie”h]”hŒfscache_use_cookie”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjÇubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jø hj¦h²hh³j¸h´Mubj )�”}”(hŒ1(struct fscache_cookie *cookie, bool will_modify)”h]”(j )�”}”(hŒstruct fscache_cookie *cookie”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hjãubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjãubh)�”}”(hhh]”j® )�”}”(hŒfscache_cookie”h]”hŒfscache_cookie”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jŒmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÔ )�”}”jÇ jÍsbŒc.fscache_use_cookie”†”asbuh1hhjãubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjãubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hjãubj® )�”}”(hŒcookie”h]”hŒcookie”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hjßubj )�”}”(hŒbool will_modify”h]”(j< )�”}”(hj8h]”hŒbool”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjUubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjUubj® )�”}”(hŒ will_modify”h]”hŒ will_modify”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hjßubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hj¦h²hh³j¸h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjŠ ˆuh1j� j‹ jŒ hj¢h²hh³j¸h´Mubah}”(h]”j�ah ]”(j� j‘ eh"]”h$]”h&]”j• ˆj– )j— huh1j{ h³j¸h´MhjŸh²hubj™ )�”}”(hhh]”hÞ)�”}”(hŒ-Request usage of cookie attached to an object”h]”hŒ-Request usage of cookie attached to an object”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mhj›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜ hjŸh²hh³j¸h´Mubeh}”(h]”h ]”(jÅ Œfunction”eh"]”h$]”h&]”j¹ jÅ jº j¶j» j¶j¼ ‰j½ ‰j¾ ‰uh1jv h²hhjT h³Nh´NubjÀ )�”}”(hX�**Parameters** ``struct fscache_cookie *cookie`` The cookie representing the cache object ``bool will_modify`` If cache is expected to be modified locally **Description** Request usage of the cookie attached to an object. The caller should tell the cache if the object's contents are about to be modified locally and then the cache can apply the policy that has been set to handle this case.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jÊ )�”}”(hjÀh]”hŒ Parameters”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M hjºubjà )�”}”(hhh]”(jå )�”}”(hŒK``struct fscache_cookie *cookie`` The cookie representing the cache object ”h]”(jë )�”}”(hŒ!``struct fscache_cookie *cookie``”h]”j^)�”}”(hjßh]”hŒstruct fscache_cookie *cookie”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MhjÙubj )�”}”(hhh]”hÞ)�”}”(hŒ(The cookie representing the cache object”h]”hŒ(The cookie representing the cache object”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jôh´Mhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jôh´MhjÖubjå )�”}”(hŒA``bool will_modify`` If cache is expected to be modified locally ”h]”(jë )�”}”(hŒ``bool will_modify``”h]”j^)�”}”(hjh]”hŒbool will_modify”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M hjubj )�”}”(hhh]”hÞ)�”}”(hŒ+If cache is expected to be modified locally”h]”hŒ+If cache is expected to be modified locally”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j-h´M hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j-h´M hjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1jß hjºubhÞ)�”}”(hŒ**Description**”h]”jÊ )�”}”(hjSh]”hŒ Description”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M hjºubhÞ)�”}”(hŒÝRequest usage of the cookie attached to an object. The caller should tell the cache if the object's contents are about to be modified locally and then the cache can apply the policy that has been set to handle this case.”h]”hŒßRequest usage of the cookie attached to an object. The caller should tell the cache if the object’s contents are about to be modified locally and then the cache can apply the policy that has been set to handle this case.”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M hjºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¿ hjT h²hh³Nh´Nubjf )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jr Œ!fscache_unuse_cookie (C function)”Œc.fscache_unuse_cookie”hNt”auh1je hjT h²hh³Nh´Nubjw )�”}”(hhh]”(j| )�”}”(hŒjvoid fscache_unuse_cookie (struct fscache_cookie *cookie, const void *aux_data, const loff_t *object_size)”h]”j‚ )�”}”(hŒivoid fscache_unuse_cookie(struct fscache_cookie *cookie, const void *aux_data, const loff_t *object_size)”h]”(j< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj”h²hh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj”h²hh³j¦h´Mubjù )�”}”(hŒfscache_unuse_cookie”h]”j® )�”}”(hŒfscache_unuse_cookie”h]”hŒfscache_unuse_cookie”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjµubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jø hj”h²hh³j¦h´Mubj )�”}”(hŒP(struct fscache_cookie *cookie, const void *aux_data, const loff_t *object_size)”h]”(j )�”}”(hŒstruct fscache_cookie *cookie”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hjÑubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjÑubh)�”}”(hhh]”j® )�”}”(hŒfscache_cookie”h]”hŒfscache_cookie”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jõŒmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÔ )�”}”jÇ j»sbŒc.fscache_unuse_cookie”†”asbuh1hhjÑubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjÑubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hjÑubj® )�”}”(hŒcookie”h]”hŒcookie”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hjÍubj )�”}”(hŒconst void *aux_data”h]”(jˆ )�”}”(hj! h]”hŒconst”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hjCubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjCubj< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjCubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjCubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hjCubj® )�”}”(hŒaux_data”h]”hŒaux_data”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hjÍubj )�”}”(hŒconst loff_t *object_size”h]”(jˆ )�”}”(hj! h]”hŒconst”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj ubh)�”}”(hhh]”j® )�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj¿ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jÄŒmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jŒc.fscache_unuse_cookie”†”asbuh1hhj ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj ubj® )�”}”(hŒ object_size”h]”hŒ object_size”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hjÍubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hj”h²hh³j¦h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjŠ ˆuh1j� j‹ jŒ hj�h²hh³j¦h´Mubah}”(h]”j‹ah ]”(j� j‘ eh"]”h$]”h&]”j• ˆj– )j— huh1j{ h³j¦h´Mhj�h²hubj™ )�”}”(hhh]”hÞ)�”}”(hŒ+Cease usage of cookie attached to an object”h]”hŒ+Cease usage of cookie attached to an object”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mhj"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜ hj�h²hh³j¦h´Mubeh}”(h]”h ]”(jÅ Œfunction”eh"]”h$]”h&]”j¹ jÅ jº j=j» j=j¼ ‰j½ ‰j¾ ‰uh1jv h²hhjT h³Nh´NubjÀ )�”}”(hX‚**Parameters** ``struct fscache_cookie *cookie`` The cookie representing the cache object ``const void *aux_data`` Updated auxiliary data (or NULL) ``const loff_t *object_size`` Revised size of the object (or NULL) **Description** Cease usage of the cookie attached to an object. When the users count reaches zero then the cookie relinquishment will be permitted to proceed.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jÊ )�”}”(hjGh]”hŒ Parameters”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MhjAubjà )�”}”(hhh]”(jå )�”}”(hŒK``struct fscache_cookie *cookie`` The cookie representing the cache object ”h]”(jë )�”}”(hŒ!``struct fscache_cookie *cookie``”h]”j^)�”}”(hjfh]”hŒstruct fscache_cookie *cookie”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mhj`ubj )�”}”(hhh]”hÞ)�”}”(hŒ(The cookie representing the cache object”h]”hŒ(The cookie representing the cache object”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j{h´Mhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j{h´Mhj]ubjå )�”}”(hŒ:``const void *aux_data`` Updated auxiliary data (or NULL) ”h]”(jë )�”}”(hŒ``const void *aux_data``”h]”j^)�”}”(hjŸh]”hŒconst void *aux_data”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mhj™ubj )�”}”(hhh]”hÞ)�”}”(hŒ Updated auxiliary data (or NULL)”h]”hŒ Updated auxiliary data (or NULL)”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j´h´Mhjµubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j´h´Mhj]ubjå )�”}”(hŒC``const loff_t *object_size`` Revised size of the object (or NULL) ”h]”(jë )�”}”(hŒ``const loff_t *object_size``”h]”j^)�”}”(hjØh]”hŒconst loff_t *object_size”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MhjÒubj )�”}”(hhh]”hÞ)�”}”(hŒ$Revised size of the object (or NULL)”h]”hŒ$Revised size of the object (or NULL)”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jíh´Mhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jíh´Mhj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jß hjAubhÞ)�”}”(hŒ**Description**”h]”jÊ )�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MhjAubhÞ)�”}”(hŒ�Cease usage of the cookie attached to an object. When the users count reaches zero then the cookie relinquishment will be permitted to proceed.”h]”hŒ�Cease usage of the cookie attached to an object. When the users count reaches zero then the cookie relinquishment will be permitted to proceed.”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MhjAubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¿ hjT h²hh³Nh´Nubjf )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jr Œ&fscache_relinquish_cookie (C function)”Œc.fscache_relinquish_cookie”hNt”auh1je hjT h²hh³Nh´Nubjw )�”}”(hhh]”(j| )�”}”(hŒKvoid fscache_relinquish_cookie (struct fscache_cookie *cookie, bool retire)”h]”j‚ )�”}”(hŒJvoid fscache_relinquish_cookie(struct fscache_cookie *cookie, bool retire)”h]”(j< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjTh²hh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M(ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjTh²hh³jfh´M(ubjù )�”}”(hŒfscache_relinquish_cookie”h]”j® )�”}”(hŒfscache_relinquish_cookie”h]”hŒfscache_relinquish_cookie”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjuubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jø hjTh²hh³jfh´M(ubj )�”}”(hŒ,(struct fscache_cookie *cookie, bool retire)”h]”(j )�”}”(hŒstruct fscache_cookie *cookie”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj‘ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj‘ubh)�”}”(hhh]”j® )�”}”(hŒfscache_cookie”h]”hŒfscache_cookie”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jµŒmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÔ )�”}”jÇ j{sbŒc.fscache_relinquish_cookie”†”asbuh1hhj‘ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj‘ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj‘ubj® )�”}”(hŒcookie”h]”hŒcookie”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj�ubj )�”}”(hŒ bool retire”h]”(j< )�”}”(hj8h]”hŒbool”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjubj® )�”}”(hŒretire”h]”hŒretire”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj�ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hjTh²hh³jfh´M(ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjŠ ˆuh1j� j‹ jŒ hjPh²hh³jfh´M(ubah}”(h]”jKah ]”(j� j‘ eh"]”h$]”h&]”j• ˆj– )j— huh1j{ h³jfh´M(hjMh²hubj™ )�”}”(hhh]”hÞ)�”}”(hŒ3Return the cookie to the cache, maybe discarding it”h]”hŒ3Return the cookie to the cache, maybe discarding it”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M(hjIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜ hjMh²hh³jfh´M(ubeh}”(h]”h ]”(jÅ Œfunction”eh"]”h$]”h&]”j¹ jÅ jº jdj» jdj¼ ‰j½ ‰j¾ ‰uh1jv h²hhjT h³Nh´NubjÀ )�”}”(hX|**Parameters** ``struct fscache_cookie *cookie`` The cookie being returned ``bool retire`` True if the cache object the cookie represents is to be discarded **Description** This function returns a cookie to the cache, forcibly discarding the associated cache object if retire is set to true. See Documentation/filesystems/caching/netfs-api.rst for a complete description.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jÊ )�”}”(hjnh]”hŒ Parameters”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M,hjhubjà )�”}”(hhh]”(jå )�”}”(hŒ<``struct fscache_cookie *cookie`` The cookie being returned ”h]”(jë )�”}”(hŒ!``struct fscache_cookie *cookie``”h]”j^)�”}”(hj�h]”hŒstruct fscache_cookie *cookie”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M*hj‡ubj )�”}”(hhh]”hÞ)�”}”(hŒThe cookie being returned”h]”hŒThe cookie being returned”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¢h´M*hj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j¢h´M*hj„ubjå )�”}”(hŒR``bool retire`` True if the cache object the cookie represents is to be discarded ”h]”(jë )�”}”(hŒ``bool retire``”h]”j^)�”}”(hjÆh]”hŒ bool retire”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M+hjÀubj )�”}”(hhh]”hÞ)�”}”(hŒATrue if the cache object the cookie represents is to be discarded”h]”hŒATrue if the cache object the cookie represents is to be discarded”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÛh´M+hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jÛh´M+hj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jß hjhubhÞ)�”}”(hŒ**Description**”h]”jÊ )�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M-hjhubhÞ)�”}”(hŒvThis function returns a cookie to the cache, forcibly discarding the associated cache object if retire is set to true.”h]”hŒvThis function returns a cookie to the cache, forcibly discarding the associated cache object if retire is set to true.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M,hjhubhÞ)�”}”(hŒOSee Documentation/filesystems/caching/netfs-api.rst for a complete description.”h]”hŒOSee Documentation/filesystems/caching/netfs-api.rst for a complete description.”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M/hjhubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¿ hjT h²hh³Nh´Nubjf )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jr Œ"fscache_update_cookie (C function)”Œc.fscache_update_cookie”hNt”auh1je hjT h²hh³Nh´Nubjw )�”}”(hhh]”(j| )�”}”(hŒkvoid fscache_update_cookie (struct fscache_cookie *cookie, const void *aux_data, const loff_t *object_size)”h]”j‚ )�”}”(hŒjvoid fscache_update_cookie(struct fscache_cookie *cookie, const void *aux_data, const loff_t *object_size)”h]”(j< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjQh²hh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Meubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjQh²hh³jch´Meubjù )�”}”(hŒfscache_update_cookie”h]”j® )�”}”(hŒfscache_update_cookie”h]”hŒfscache_update_cookie”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjrubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jø hjQh²hh³jch´Meubj )�”}”(hŒP(struct fscache_cookie *cookie, const void *aux_data, const loff_t *object_size)”h]”(j )�”}”(hŒstruct fscache_cookie *cookie”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hjŽubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjŽubh)�”}”(hhh]”j® )�”}”(hŒfscache_cookie”h]”hŒfscache_cookie”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”j²Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÔ )�”}”jÇ jxsbŒc.fscache_update_cookie”†”asbuh1hhjŽubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjŽubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hjŽubj® )�”}”(hŒcookie”h]”hŒcookie”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hjŠubj )�”}”(hŒconst void *aux_data”h]”(jˆ )�”}”(hj! h]”hŒconst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hjubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjubj< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hjubj® )�”}”(hŒaux_data”h]”hŒaux_data”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hjŠubj )�”}”(hŒconst loff_t *object_size”h]”(jˆ )�”}”(hj! h]”hŒconst”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj]ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj]ubh)�”}”(hhh]”j® )�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj|ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”j�Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÌŒc.fscache_update_cookie”†”asbuh1hhj]ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj]ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj]ubj® )�”}”(hŒ object_size”h]”hŒ object_size”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hjŠubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hjQh²hh³jch´Meubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjŠ ˆuh1j� j‹ jŒ hjMh²hh³jch´Meubah}”(h]”jHah ]”(j� j‘ eh"]”h$]”h&]”j• ˆj– )j— huh1j{ h³jch´MehjJh²hubj™ )�”}”(hhh]”hÞ)�”}”(hŒ&Request that a cache object be updated”h]”hŒ&Request that a cache object be updated”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mehjßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜ hjJh²hh³jch´Meubeh}”(h]”h ]”(jÅ Œfunction”eh"]”h$]”h&]”j¹ jÅ jº júj» júj¼ ‰j½ ‰j¾ ‰uh1jv h²hhjT h³Nh´NubjÀ )�”}”(hXd**Parameters** ``struct fscache_cookie *cookie`` The cookie representing the cache object ``const void *aux_data`` The updated auxiliary data for the cookie (may be NULL) ``const loff_t *object_size`` The current size of the object (may be NULL) **Description** Request an update of the index data for the cache object associated with the cookie. The auxiliary data on the cookie will be updated first if **aux_data** is set and the object size will be updated and the object possibly trimmed if **object_size** is set. See Documentation/filesystems/caching/netfs-api.rst for a complete description.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jÊ )�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mihjþubjà )�”}”(hhh]”(jå )�”}”(hŒK``struct fscache_cookie *cookie`` The cookie representing the cache object ”h]”(jë )�”}”(hŒ!``struct fscache_cookie *cookie``”h]”j^)�”}”(hj#h]”hŒstruct fscache_cookie *cookie”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mfhjubj )�”}”(hhh]”hÞ)�”}”(hŒ(The cookie representing the cache object”h]”hŒ(The cookie representing the cache object”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j8h´Mfhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j8h´Mfhjubjå )�”}”(hŒQ``const void *aux_data`` The updated auxiliary data for the cookie (may be NULL) ”h]”(jë )�”}”(hŒ``const void *aux_data``”h]”j^)�”}”(hj\h]”hŒconst void *aux_data”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MghjVubj )�”}”(hhh]”hÞ)�”}”(hŒ7The updated auxiliary data for the cookie (may be NULL)”h]”hŒ7The updated auxiliary data for the cookie (may be NULL)”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jqh´Mghjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jqh´Mghjubjå )�”}”(hŒK``const loff_t *object_size`` The current size of the object (may be NULL) ”h]”(jë )�”}”(hŒ``const loff_t *object_size``”h]”j^)�”}”(hj•h]”hŒconst loff_t *object_size”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mhhj�ubj )�”}”(hhh]”hÞ)�”}”(hŒ,The current size of the object (may be NULL)”h]”hŒ,The current size of the object (may be NULL)”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jªh´Mhhj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jªh´Mhhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jß hjþubhÞ)�”}”(hŒ**Description**”h]”jÊ )�”}”(hjÐh]”hŒ Description”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MjhjþubhÞ)�”}”(hXRequest an update of the index data for the cache object associated with the cookie. The auxiliary data on the cookie will be updated first if **aux_data** is set and the object size will be updated and the object possibly trimmed if **object_size** is set.”h]”(hŒ�Request an update of the index data for the cache object associated with the cookie. The auxiliary data on the cookie will be updated first if ”…”�”}”(hjæh²hh³Nh´NubjÊ )�”}”(hŒ **aux_data**”h]”hŒaux_data”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjæubhŒO is set and the object size will be updated and the object possibly trimmed if ”…”�”}”(hjæh²hh³Nh´NubjÊ )�”}”(hŒ**object_size**”h]”hŒ object_size”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjæubhŒ is set.”…”�”}”(hjæh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MihjþubhÞ)�”}”(hŒOSee Documentation/filesystems/caching/netfs-api.rst for a complete description.”h]”hŒOSee Documentation/filesystems/caching/netfs-api.rst for a complete description.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mnhjþubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¿ hjT h²hh³Nh´Nubjf )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jr Œ"fscache_resize_cookie (C function)”Œc.fscache_resize_cookie”hNt”auh1je hjT h²hh³Nh´Nubjw )�”}”(hhh]”(j| )�”}”(hŒKvoid fscache_resize_cookie (struct fscache_cookie *cookie, loff_t new_size)”h]”j‚ )�”}”(hŒJvoid fscache_resize_cookie(struct fscache_cookie *cookie, loff_t new_size)”h]”(j< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjDh²hh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M{ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjDh²hh³jVh´M{ubjù )�”}”(hŒfscache_resize_cookie”h]”j® )�”}”(hŒfscache_resize_cookie”h]”hŒfscache_resize_cookie”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjeubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jø hjDh²hh³jVh´M{ubj )�”}”(hŒ0(struct fscache_cookie *cookie, loff_t new_size)”h]”(j )�”}”(hŒstruct fscache_cookie *cookie”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj�ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj�ubh)�”}”(hhh]”j® )�”}”(hŒfscache_cookie”h]”hŒfscache_cookie”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”j¥Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÔ )�”}”jÇ jksbŒc.fscache_resize_cookie”†”asbuh1hhj�ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj�ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj�ubj® )�”}”(hŒcookie”h]”hŒcookie”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj}ubj )�”}”(hŒloff_t new_size”h]”(h)�”}”(hhh]”j® )�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj÷ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jüŒmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”j¿Œc.fscache_resize_cookie”†”asbuh1hhjóubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjóubj® )�”}”(hŒnew_size”h]”hŒnew_size”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjóubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj}ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hjDh²hh³jVh´M{ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjŠ ˆuh1j� j‹ jŒ hj@h²hh³jVh´M{ubah}”(h]”j;ah ]”(j� j‘ eh"]”h$]”h&]”j• ˆj– )j— huh1j{ h³jVh´M{hj=h²hubj™ )�”}”(hhh]”hÞ)�”}”(hŒ&Request that a cache object be resized”h]”hŒ&Request that a cache object be resized”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M{hjMh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜ hj=h²hh³jVh´M{ubeh}”(h]”h ]”(jÅ Œfunction”eh"]”h$]”h&]”j¹ jÅ jº jhj» jhj¼ ‰j½ ‰j¾ ‰uh1jv h²hhjT h³Nh´NubjÀ )�”}”(hX.**Parameters** ``struct fscache_cookie *cookie`` The cookie representing the cache object ``loff_t new_size`` The new size of the object (may be NULL) **Description** Request that the size of an object be changed. See Documentation/filesystems/caching/netfs-api.rst for a complete description.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jÊ )�”}”(hjrh]”hŒ Parameters”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mhjlubjà )�”}”(hhh]”(jå )�”}”(hŒK``struct fscache_cookie *cookie`` The cookie representing the cache object ”h]”(jë )�”}”(hŒ!``struct fscache_cookie *cookie``”h]”j^)�”}”(hj‘h]”hŒstruct fscache_cookie *cookie”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M|hj‹ubj )�”}”(hhh]”hÞ)�”}”(hŒ(The cookie representing the cache object”h]”hŒ(The cookie representing the cache object”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¦h´M|hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j¦h´M|hjˆubjå )�”}”(hŒ=``loff_t new_size`` The new size of the object (may be NULL) ”h]”(jë )�”}”(hŒ``loff_t new_size``”h]”j^)�”}”(hjÊh]”hŒloff_t new_size”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M}hjÄubj )�”}”(hhh]”hÞ)�”}”(hŒ(The new size of the object (may be NULL)”h]”hŒ(The new size of the object (may be NULL)”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jßh´M}hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jßh´M}hjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jß hjlubhÞ)�”}”(hŒ**Description**”h]”jÊ )�”}”(hj h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MhjlubhÞ)�”}”(hŒ.Request that the size of an object be changed.”h]”hŒ.Request that the size of an object be changed.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M~hjlubhÞ)�”}”(hŒOSee Documentation/filesystems/caching/netfs-api.rst for a complete description.”h]”hŒOSee Documentation/filesystems/caching/netfs-api.rst for a complete description.”…”�”}”(hj* h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M€hjlubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¿ hjT h²hh³Nh´Nubjf )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jr Œfscache_invalidate (C function)”Œc.fscache_invalidate”hNt”auh1je hjT h²hh³Nh´Nubjw )�”}”(hhh]”(j| )�”}”(hŒnvoid fscache_invalidate (struct fscache_cookie *cookie, const void *aux_data, loff_t size, unsigned int flags)”h]”j‚ )�”}”(hŒmvoid fscache_invalidate(struct fscache_cookie *cookie, const void *aux_data, loff_t size, unsigned int flags)”h]”(j< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjU h²hh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MŒubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjU h²hh³jg h´MŒubjù )�”}”(hŒfscache_invalidate”h]”j® )�”}”(hŒfscache_invalidate”h]”hŒfscache_invalidate”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjv ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jø hjU h²hh³jg h´MŒubj )�”}”(hŒV(struct fscache_cookie *cookie, const void *aux_data, loff_t size, unsigned int flags)”h]”(j )�”}”(hŒstruct fscache_cookie *cookie”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hj– h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj’ ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj’ ubh)�”}”(hhh]”j® )�”}”(hŒfscache_cookie”h]”hŒfscache_cookie”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj± ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”j¶ Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÔ )�”}”jÇ j| sbŒc.fscache_invalidate”†”asbuh1hhj’ ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj’ ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj’ ubj® )�”}”(hŒcookie”h]”hŒcookie”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj’ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hjŽ ubj )�”}”(hŒconst void *aux_data”h]”(jˆ )�”}”(hj! h]”hŒconst”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj!ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj!ubj< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj#!h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj!ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1!h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj!ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj?!h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj!ubj® )�”}”(hŒaux_data”h]”hŒaux_data”…”�”}”(hjL!h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hjŽ ubj )�”}”(hŒ loff_t size”h]”(h)�”}”(hhh]”j® )�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjh!h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hje!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jj!Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÐ Œc.fscache_invalidate”†”asbuh1hhja!ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†!h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hja!ubj® )�”}”(hŒsize”h]”hŒsize”…”�”}”(hj”!h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hja!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hjŽ ubj )�”}”(hŒunsigned int flags”h]”(j< )�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj­!h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj©!ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»!h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj©!ubj< )�”}”(hŒint”h]”hŒint”…”�”}”(hjÉ!h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj©!ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×!h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$•]”h&]”uh1j™ hj©!ubj® )�”}”(hŒflags”h]”hŒflags”…”�”}”(hjå!h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj©!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hjŽ ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hjU h²hh³jg h´MŒubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjŠ ˆuh1j� j‹ jŒ hjQ h²hh³jg h´MŒubah}”(h]”jL ah ]”(j� j‘ eh"]”h$]”h&]”j• ˆj– )j— huh1j{ h³jg h´MŒhjN h²hubj™ )�”}”(hhh]”hÞ)�”}”(hŒ.Notify cache that an object needs invalidation”h]”hŒ.Notify cache that an object needs invalidation”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MŒhj "h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜ hjN h²hh³jg h´MŒubeh}”(h]”h ]”(jÅ Œfunction”eh"]”h$]”h&]”j¹ jÅ jº j'"j» j'"j¼ ‰j½ ‰j¾ ‰uh1jv h²hhjT h³Nh´NubjÀ )�”}”(hX?**Parameters** ``struct fscache_cookie *cookie`` The cookie representing the cache object ``const void *aux_data`` The updated auxiliary data for the cookie (may be NULL) ``loff_t size`` The revised size of the object. ``unsigned int flags`` Invalidation flags (FSCACHE_INVAL_*) **Description** Notify the cache that an object is needs to be invalidated and that it should abort any retrievals or stores it is doing on the cache. This increments inval_counter on the cookie which can be used by the caller to reconsider I/O requests as they complete. If **flags** has FSCACHE_INVAL_DIO_WRITE set, this indicates that this is due to a direct I/O write and will cause caching to be disabled on this cookie until it is completely unused. See Documentation/filesystems/caching/netfs-api.rst for a complete description.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jÊ )�”}”(hj1"h]”hŒ Parameters”…”�”}”(hj3"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj/"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M�hj+"ubjà )�”}”(hhh]”(jå )�”}”(hŒK``struct fscache_cookie *cookie`` The cookie representing the cache object ”h]”(jë )�”}”(hŒ!``struct fscache_cookie *cookie``”h]”j^)�”}”(hjP"h]”hŒstruct fscache_cookie *cookie”…”�”}”(hjR"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjN"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M�hjJ"ubj )�”}”(hhh]”hÞ)�”}”(hŒ(The cookie representing the cache object”h]”hŒ(The cookie representing the cache object”…”�”}”(hji"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³je"h´M�hjf"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjJ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³je"h´M�hjG"ubjå )�”}”(hŒQ``const void *aux_data`` The updated auxiliary data for the cookie (may be NULL) ”h]”(jë )�”}”(hŒ``const void *aux_data``”h]”j^)�”}”(hj‰"h]”hŒconst void *aux_data”…”�”}”(hj‹"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj‡"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MŽhjƒ"ubj )�”}”(hhh]”hÞ)�”}”(hŒ7The updated auxiliary data for the cookie (may be NULL)”h]”hŒ7The updated auxiliary data for the cookie (may be NULL)”…”�”}”(hj¢"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jž"h´MŽhjŸ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jž"h´MŽhjG"ubjå )�”}”(hŒ0``loff_t size`` The revised size of the object. ”h]”(jë )�”}”(hŒ``loff_t size``”h]”j^)�”}”(hjÂ"h]”hŒ loff_t size”…”�”}”(hjÄ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÀ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M�hj¼"ubj )�”}”(hhh]”hÞ)�”}”(hŒThe revised size of the object.”h]”hŒThe revised size of the object.”…”�”}”(hjÛ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j×"h´M�hjØ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¼"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j×"h´M�hjG"ubjå )�”}”(hŒ<``unsigned int flags`` Invalidation flags (FSCACHE_INVAL_*) ”h]”(jë )�”}”(hŒ``unsigned int flags``”h]”j^)�”}”(hjû"h]”hŒunsigned int flags”…”�”}”(hjý"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjù"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M�hjõ"ubj )�”}”(hhh]”hÞ)�”}”(hŒ$Invalidation flags (FSCACHE_INVAL_*)”h]”hŒ$Invalidation flags (FSCACHE_INVAL_*)”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j#h´M�hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjõ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j#h´M�hjG"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jß hj+"ubhÞ)�”}”(hŒ**Description**”h]”jÊ )�”}”(hj6#h]”hŒ Description”…”�”}”(hj8#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj4#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M’hj+"ubhÞ)�”}”(hXNotify the cache that an object is needs to be invalidated and that it should abort any retrievals or stores it is doing on the cache. This increments inval_counter on the cookie which can be used by the caller to reconsider I/O requests as they complete.”h]”hXNotify the cache that an object is needs to be invalidated and that it should abort any retrievals or stores it is doing on the cache. This increments inval_counter on the cookie which can be used by the caller to reconsider I/O requests as they complete.”…”�”}”(hjL#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M‘hj+"ubhÞ)�”}”(hŒ·If **flags** has FSCACHE_INVAL_DIO_WRITE set, this indicates that this is due to a direct I/O write and will cause caching to be disabled on this cookie until it is completely unused.”h]”(hŒIf ”…”�”}”(hj[#h²hh³Nh´NubjÊ )�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hjc#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj[#ubhŒ« has FSCACHE_INVAL_DIO_WRITE set, this indicates that this is due to a direct I/O write and will cause caching to be disabled on this cookie until it is completely unused.”…”�”}”(hj[#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M–hj+"ubhÞ)�”}”(hŒOSee Documentation/filesystems/caching/netfs-api.rst for a complete description.”h]”hŒOSee Documentation/filesystems/caching/netfs-api.rst for a complete description.”…”�”}”(hj|#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mšhj+"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¿ hjT h²hh³Nh´Nubjf )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jr Œ$fscache_operation_valid (C function)”Œc.fscache_operation_valid”hNt”auh1je hjT h²hh³Nh´Nubjw )�”}”(hhh]”(j| )�”}”(hŒaconst struct netfs_cache_ops * fscache_operation_valid (const struct netfs_cache_resources *cres)”h]”j‚ )�”}”(hŒ_const struct netfs_cache_ops *fscache_operation_valid(const struct netfs_cache_resources *cres)”h]”(jˆ )�”}”(hj! h]”hŒconst”…”�”}”(hj«#h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj§#h²hh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M§ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹#h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj§#h²hh³j¸#h´M§ubjˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hjÇ#h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj§#h²hh³j¸#h´M§ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ#h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj§#h²hh³j¸#h´M§ubh)�”}”(hhh]”j® )�”}”(hŒnetfs_cache_ops”h]”hŒnetfs_cache_ops”…”�”}”(hjå#h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjâ#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jç#Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÔ )�”}”jÇ Œfscache_operation_valid”sbŒc.fscache_operation_valid”†”asbuh1hhj§#h²hh³j¸#h´M§ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj§#h²hh³j¸#h´M§ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj§#h²hh³j¸#h´M§ubjù )�”}”(hŒfscache_operation_valid”h]”j® )�”}”(hj$h]”hŒfscache_operation_valid”…”�”}”(hj%$h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj!$ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jø hj§#h²hh³j¸#h´M§ubj )�”}”(hŒ*(const struct netfs_cache_resources *cres)”h]”j )�”}”(hŒ(const struct netfs_cache_resources *cres”h]”(jˆ )�”}”(hj! h]”hŒconst”…”�”}”(hj@$h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj<$ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM$h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj<$ubjˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hj[$h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj<$ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh$h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj<$ubh)�”}”(hhh]”j® )�”}”(hŒnetfs_cache_resources”h]”hŒnetfs_cache_resources”…”�”}”(hjy$h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjv$ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”j{$Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”j$Œc.fscache_operation_valid”†”asbuh1hhj<$ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—$h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj<$ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj¥$h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj<$ubj® )�”}”(hŒcres”h]”hŒcres”…”�”}”(hj²$h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj<$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj8$ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hj§#h²hh³j¸#h´M§ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjŠ ˆuh1j� j‹ jŒ hj£#h²hh³j¸#h´M§ubah}”(h]”jž#ah ]”(j� j‘ eh"]”h$]”h&]”j• ˆj– )j— huh1j{ h³j¸#h´M§hj #h²hubj™ )�”}”(hhh]”hÞ)�”}”(hŒ.Return true if operations resources are usable”h]”hŒ.Return true if operations resources are usable”…”�”}”(hjÜ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M§hjÙ$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜ hj #h²hh³j¸#h´M§ubeh}”(h]”h ]”(jÅ Œfunction”eh"]”h$]”h&]”j¹ jÅ jº jô$j» jô$j¼ ‰j½ ‰j¾ ‰uh1jv h²hhjT h³Nh´NubjÀ )�”}”(hŒ¬**Parameters** ``const struct netfs_cache_resources *cres`` The resources to check. **Description** Returns a pointer to the operations table if usable or NULL if not.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jÊ )�”}”(hjþ$h]”hŒ Parameters”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjü$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M«hjø$ubjà )�”}”(hhh]”jå )�”}”(hŒE``const struct netfs_cache_resources *cres`` The resources to check. ”h]”(jë )�”}”(hŒ,``const struct netfs_cache_resources *cres``”h]”j^)�”}”(hj%h]”hŒ(const struct netfs_cache_resources *cres”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M¨hj%ubj )�”}”(hhh]”hÞ)�”}”(hŒThe resources to check.”h]”hŒThe resources to check.”…”�”}”(hj6%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j2%h´M¨hj3%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j2%h´M¨hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jß hjø$ubhÞ)�”}”(hŒ**Description**”h]”jÊ )�”}”(hjX%h]”hŒ Description”…”�”}”(hjZ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjV%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mªhjø$ubhÞ)�”}”(hŒCReturns a pointer to the operations table if usable or NULL if not.”h]”hŒCReturns a pointer to the operations table if usable or NULL if not.”…”�”}”(hjn%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M©hjø$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¿ hjT h²hh³Nh´Nubjf )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jr Œ)fscache_begin_read_operation (C function)”Œc.fscache_begin_read_operation”hNt”auh1je hjT h²hh³Nh´Nubjw )�”}”(hhh]”(j| )�”}”(hŒdint fscache_begin_read_operation (struct netfs_cache_resources *cres, struct fscache_cookie *cookie)”h]”j‚ )�”}”(hŒcint fscache_begin_read_operation(struct netfs_cache_resources *cres, struct fscache_cookie *cookie)”h]”(j< )�”}”(hŒint”h]”hŒint”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj™%h²hh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M³ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬%h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj™%h²hh³j«%h´M³ubjù )�”}”(hŒfscache_begin_read_operation”h]”j® )�”}”(hŒfscache_begin_read_operation”h]”hŒfscache_begin_read_operation”…”�”}”(hj¾%h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjº%ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jø hj™%h²hh³j«%h´M³ubj )�”}”(hŒC(struct netfs_cache_resources *cres, struct fscache_cookie *cookie)”h]”(j )�”}”(hŒ"struct netfs_cache_resources *cres”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hjÚ%h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hjÖ%ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç%h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjÖ%ubh)�”}”(hhh]”j® )�”}”(hŒnetfs_cache_resources”h]”hŒnetfs_cache_resources”…”�”}”(hjø%h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjõ%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jú%Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÔ )�”}”jÇ jÀ%sbŒc.fscache_begin_read_operation”†”asbuh1hhjÖ%ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjÖ%ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj&&h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hjÖ%ubj® )�”}”(hŒcres”h]”hŒcres”…”�”}”(hj3&h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjÖ%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hjÒ%ubj )�”}”(hŒstruct fscache_cookie *cookie”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hjL&h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hjH&ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY&h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjH&ubh)�”}”(hhh]”j® )�”}”(hŒfscache_cookie”h]”hŒfscache_cookie”…”�”}”(hjj&h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjg&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jl&Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”j&Œc.fscache_begin_read_operation”†”asbuh1hhjH&ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ&h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjH&ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj–&h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hjH&ubj® )�”}”(hŒcookie”h]”hŒcookie”…”�”}”(hj£&h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjH&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hjÒ%ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hj™%h²hh³j«%h´M³ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjŠ ˆuh1j� j‹ jŒ hj•%h²hh³j«%h´M³ubah}”(h]”j�%ah ]”(j� j‘ eh"]”h$]”h&]”j• ˆj– )j— huh1j{ h³j«%h´M³hj’%h²hubj™ )�”}”(hhh]”hÞ)�”}”(hŒ(Begin a read operation for the netfs lib”h]”hŒ(Begin a read operation for the netfs lib”…”�”}”(hjÍ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M³hjÊ&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜ hj’%h²hh³j«%h´M³ubeh}”(h]”h ]”(jÅ Œfunction”eh"]”h$]”h&]”j¹ jÅ jº jå&j» jå&j¼ ‰j½ ‰j¾ ‰uh1jv h²hhjT h³Nh´NubjÀ )�”}”(hXÑ**Parameters** ``struct netfs_cache_resources *cres`` The cache resources for the read being performed ``struct fscache_cookie *cookie`` The cookie representing the cache object **Description** Begin a read operation on behalf of the netfs helper library. **cres** indicates the cache resources to which the operation state should be attached; **cookie** indicates the cache object that will be accessed. **cres->inval_counter** is set from **cookie->inval_counter** for comparison at the end of the operation. This allows invalidation during the operation to be detected by the caller. **Return** * 0 - Success * -ENOBUFS - No caching available * Other error code from the cache, such as -ENOMEM.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jÊ )�”}”(hjï&h]”hŒ Parameters”…”�”}”(hjñ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjí&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M·hjé&ubjà )�”}”(hhh]”(jå )�”}”(hŒX``struct netfs_cache_resources *cres`` The cache resources for the read being performed ”h]”(jë )�”}”(hŒ&``struct netfs_cache_resources *cres``”h]”j^)�”}”(hj'h]”hŒ"struct netfs_cache_resources *cres”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj 'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M´hj'ubj )�”}”(hhh]”hÞ)�”}”(hŒ0The cache resources for the read being performed”h]”hŒ0The cache resources for the read being performed”…”�”}”(hj''h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j#'h´M´hj$'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j#'h´M´hj'ubjå )�”}”(hŒK``struct fscache_cookie *cookie`` The cookie representing the cache object ”h]”(jë )�”}”(hŒ!``struct fscache_cookie *cookie``”h]”j^)�”}”(hjG'h]”hŒstruct fscache_cookie *cookie”…”�”}”(hjI'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjE'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MµhjA'ubj )�”}”(hhh]”hÞ)�”}”(hŒ(The cookie representing the cache object”h]”hŒ(The cookie representing the cache object”…”�”}”(hj`'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j\'h´Mµhj]'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjA'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j\'h´Mµhj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jß hjé&ubhÞ)�”}”(hŒ**Description**”h]”jÊ )�”}”(hj‚'h]”hŒ Description”…”�”}”(hj„'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj€'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M·hjé&ubhÞ)�”}”(hŒÓBegin a read operation on behalf of the netfs helper library. **cres** indicates the cache resources to which the operation state should be attached; **cookie** indicates the cache object that will be accessed.”h]”(hŒ?Begin a read operation on behalf of the netfs helper library. ”…”�”}”(hj˜'h²hh³Nh´NubjÊ )�”}”(hŒ**cres**”h]”hŒcres”…”�”}”(hj 'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj˜'ubhŒP indicates the cache resources to which the operation state should be attached; ”…”�”}”(hj˜'h²hh³Nh´NubjÊ )�”}”(hŒ **cookie**”h]”hŒcookie”…”�”}”(hj²'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj˜'ubhŒ2 indicates the cache object that will be accessed.”…”�”}”(hj˜'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M¶hjé&ubhÞ)�”}”(hŒ¶**cres->inval_counter** is set from **cookie->inval_counter** for comparison at the end of the operation. This allows invalidation during the operation to be detected by the caller.”h]”(jÊ )�”}”(hŒ**cres->inval_counter**”h]”hŒcres->inval_counter”…”�”}”(hjÏ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjË'ubhŒ is set from ”…”�”}”(hjË'h²hh³Nh´NubjÊ )�”}”(hŒ**cookie->inval_counter**”h]”hŒcookie->inval_counter”…”�”}”(hjá'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjË'ubhŒy for comparison at the end of the operation. This allows invalidation during the operation to be detected by the caller.”…”�”}”(hjË'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mºhjé&ubhÞ)�”}”(hŒ **Return**”h]”jÊ )�”}”(hjü'h]”hŒReturn”…”�”}”(hjþ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjú'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M¾hjé&ubj.)�”}”(hhh]”(hù)�”}”(hŒ0 - Success”h]”hÞ)�”}”(hj(h]”hŒ0 - Success”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M¿hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1høhj(ubhù)�”}”(hŒ!-ENOBUFS - No caching available”h]”hŒ option_list”“”)�”}”(hhh]”hŒoption_list_item”“”)�”}”(hhh]”(hŒ option_group”“”)�”}”(hhh]”hŒoption”“”)�”}”(hŒ-ENOBUFS”h]”(hŒ option_string”“”)�”}”(hŒ-E”h]”hŒ-E”…”�”}”hjH(sbah}”(h]”h ]”h"]”h$]”h&]”uh1jF(hjB(ubhŒoption_argument”“”)�”}”(hŒNOBUFS”h]”hŒNOBUFS”…”�”}”(hjX(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œ delimiter”huh1jV(hjB(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j@(hj=(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;(hj8(ubhŒ description”“”)�”}”(hŒ- No caching available”h]”j.)�”}”(hhh]”hù)�”}”(hŒNo caching available”h]”hÞ)�”}”(hj~(h]”hŒNo caching available”…”�”}”(hj€(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MÀhj|(ubah}”(h]”h ]”h"]”h$]”h&]”uh1høhjy(ubah}”(h]”h ]”h"]”h$]”h&]”jÂŒ-”uh1j-h³j�(h´MÀhju(ubah}”(h]”h ]”h"]”h$]”h&]”uh1js(hj8(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6(hj3(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j1(h³j�(h´MÀhj-(ubah}”(h]”h ]”h"]”h$]”h&]”uh1høhj(ubhù)�”}”(hŒ1Other error code from the cache, such as -ENOMEM.”h]”hÞ)�”}”(hjµ(h]”hŒ1Other error code from the cache, such as -ENOMEM.”…”�”}”(hj·(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MÁhj³(ubah}”(h]”h ]”h"]”h$]”h&]”uh1høhj(ubeh}”(h]”h ]”h"]”h$]”h&]”jÂjÃuh1j-h³j&(h´M¿hjé&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¿ hjT h²hh³Nh´Nubjf )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jr Œ"fscache_end_operation (C function)”Œc.fscache_end_operation”hNt”auh1je hjT h²hh³Nh´Nubjw )�”}”(hhh]”(j| )�”}”(hŒ?void fscache_end_operation (struct netfs_cache_resources *cres)”h]”j‚ )�”}”(hŒ>void fscache_end_operation(struct netfs_cache_resources *cres)”h]”(j< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjñ(h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjí(h²hh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MÎubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjí(h²hh³jÿ(h´MÎubjù )�”}”(hŒfscache_end_operation”h]”j® )�”}”(hŒfscache_end_operation”h]”hŒfscache_end_operation”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj)ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jø hjí(h²hh³jÿ(h´MÎubj )�”}”(hŒ$(struct netfs_cache_resources *cres)”h]”j )�”}”(hŒ"struct netfs_cache_resources *cres”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hj.)h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj*)ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;)h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj*)ubh)�”}”(hhh]”j® )�”}”(hŒnetfs_cache_resources”h]”hŒnetfs_cache_resources”…”�”}”(hjL)h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjI)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jN)Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÔ )�”}”jÇ j)sbŒc.fscache_end_operation”†”asbuh1hhj*)ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl)h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj*)ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hjz)h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj*)ubj® )�”}”(hŒcres”h]”hŒcres”…”�”}”(hj‡)h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj*)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj&)ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hjí(h²hh³jÿ(h´MÎubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjŠ ˆuh1j� j‹ jŒ hjé(h²hh³jÿ(h´MÎubah}”(h]”jä(ah ]”(j� j‘ eh"]”h$]”h&]”j• ˆj– )j— huh1j{ h³jÿ(h´MÎhjæ(h²hubj™ )�”}”(hhh]”hÞ)�”}”(hŒ(End the read operation for the netfs lib”h]”hŒ(End the read operation for the netfs lib”…”�”}”(hj±)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MÎhj®)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜ hjæ(h²hh³jÿ(h´MÎubeh}”(h]”h ]”(jÅ Œfunction”eh"]”h$]”h&]”j¹ jÅ jº jÉ)j» jÉ)j¼ ‰j½ ‰j¾ ‰uh1jv h²hhjT h³Nh´NubjÀ )�”}”(hŒ¬**Parameters** ``struct netfs_cache_resources *cres`` The cache resources for the read operation **Description** Clean up the resources at the end of the read request.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jÊ )�”}”(hjÓ)h]”hŒ Parameters”…”�”}”(hjÕ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjÑ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MÒhjÍ)ubjà )�”}”(hhh]”jå )�”}”(hŒR``struct netfs_cache_resources *cres`` The cache resources for the read operation ”h]”(jë )�”}”(hŒ&``struct netfs_cache_resources *cres``”h]”j^)�”}”(hjò)h]”hŒ"struct netfs_cache_resources *cres”…”�”}”(hjô)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjð)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MÏhjì)ubj )�”}”(hhh]”hÞ)�”}”(hŒ*The cache resources for the read operation”h]”hŒ*The cache resources for the read operation”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j*h´MÏhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjì)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j*h´MÏhjé)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jß hjÍ)ubhÞ)�”}”(hŒ**Description**”h]”jÊ )�”}”(hj-*h]”hŒ Description”…”�”}”(hj/*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj+*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MÑhjÍ)ubhÞ)�”}”(hŒ6Clean up the resources at the end of the read request.”h]”hŒ6Clean up the resources at the end of the read request.”…”�”}”(hjC*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MÐhjÍ)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¿ hjT h²hh³Nh´Nubjf )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jr Œfscache_read (C function)”Œc.fscache_read”hNt”auh1je hjT h²hh³Nh´Nubjw )�”}”(hhh]”(j| )�”}”(hŒºint fscache_read (struct netfs_cache_resources *cres, loff_t start_pos, struct iov_iter *iter, enum netfs_read_from_hole read_hole, netfs_io_terminated_t term_func, void *term_func_priv)”h]”j‚ )�”}”(hŒ¹int fscache_read(struct netfs_cache_resources *cres, loff_t start_pos, struct iov_iter *iter, enum netfs_read_from_hole read_hole, netfs_io_terminated_t term_func, void *term_func_priv)”h]”(j< )�”}”(hŒint”h]”hŒint”…”�”}”(hjr*h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjn*h²hh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MÜubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�*h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjn*h²hh³j€*h´MÜubjù )�”}”(hŒ fscache_read”h]”j® )�”}”(hŒ fscache_read”h]”hŒ fscache_read”…”�”}”(hj“*h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj�*ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jø hjn*h²hh³j€*h´MÜubj )�”}”(hŒ©(struct netfs_cache_resources *cres, loff_t start_pos, struct iov_iter *iter, enum netfs_read_from_hole read_hole, netfs_io_terminated_t term_func, void *term_func_priv)”h]”(j )�”}”(hŒ"struct netfs_cache_resources *cres”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hj¯*h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj«*ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼*h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj«*ubh)�”}”(hhh]”j® )�”}”(hŒnetfs_cache_resources”h]”hŒnetfs_cache_resources”…”�”}”(hjÍ*h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjÊ*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jÏ*Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÔ )�”}”jÇ j•*sbŒc.fscache_read”†”asbuh1hhj«*ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí*h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj«*ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hjû*h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj«*ubj® )�”}”(hŒcres”h]”hŒcres”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj«*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj§*ubj )�”}”(hŒloff_t start_pos”h]”(h)�”}”(hhh]”j® )�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj$+h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj!+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”j&+Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jé*Œc.fscache_read”†”asbuh1hhj+ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB+h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj+ubj® )�”}”(hŒ start_pos”h]”hŒ start_pos”…”�”}”(hjP+h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj§*ubj )�”}”(hŒstruct iov_iter *iter”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hji+h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hje+ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv+h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hje+ubh)�”}”(hhh]”j® )�”}”(hŒiov_iter”h]”hŒiov_iter”…”�”}”(hj‡+h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj„+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”j‰+Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jé*Œc.fscache_read”†”asbuh1hhje+ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥+h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hje+ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj³+h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hje+ubj® )�”}”(hŒiter”h]”hŒiter”…”�”}”(hjÀ+h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hje+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj§*ubj )�”}”(hŒ#enum netfs_read_from_hole read_hole”h]”(jˆ )�”}”(hŒenum”h]”hŒenum”…”�”}”(hjÙ+h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hjÕ+ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç+h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjÕ+ubh)�”}”(hhh]”j® )�”}”(hŒnetfs_read_from_hole”h]”hŒnetfs_read_from_hole”…”�”}”(hjø+h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjõ+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jú+Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jé*Œc.fscache_read”†”asbuh1hhjÕ+ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjÕ+ubj® )�”}”(hŒ read_hole”h]”hŒ read_hole”…”�”}”(hj$,h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjÕ+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj§*ubj )�”}”(hŒnetfs_io_terminated_t term_func”h]”(h)�”}”(hhh]”j® )�”}”(hŒnetfs_io_terminated_t”h]”hŒnetfs_io_terminated_t”…”�”}”(hj@,h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj=,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jB,Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jé*Œc.fscache_read”†”asbuh1hhj9,ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^,h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj9,ubj® )�”}”(hŒ term_func”h]”hŒ term_func”…”�”}”(hjl,h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj9,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj§*ubj )�”}”(hŒvoid *term_func_priv”h]”(j< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj…,h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj�,ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“,h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj�,ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj¡,h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj�,ubj® )�”}”(hŒterm_func_priv”h]”hŒterm_func_priv”…”�”}”(hj®,h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj�,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj§*ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hjn*h²hh³j€*h´MÜubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjŠ ˆuh1j� j‹ jŒ hjj*h²hh³j€*h´MÜubah}”(h]”je*ah ]”(j� j‘ eh"]”h$]”h&]”j• ˆj– )j— huh1j{ h³j€*h´MÜhjg*h²hubj™ )�”}”(hhh]”hÞ)�”}”(hŒStart a read from the cache.”h]”hŒStart a read from the cache.”…”�”}”(hjØ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MÜhjÕ,h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜ hjg*h²hh³j€*h´MÜubeh}”(h]”h ]”(jÅ Œfunction”eh"]”h$]”h&]”j¹ jÅ jº jð,j» jð,j¼ ‰j½ ‰j¾ ‰uh1jv h²hhjT h³Nh´NubjÀ )�”}”(hXL**Parameters** ``struct netfs_cache_resources *cres`` The cache resources to use ``loff_t start_pos`` The beginning file offset in the cache file ``struct iov_iter *iter`` The buffer to fill - and also the length ``enum netfs_read_from_hole read_hole`` How to handle a hole in the data. ``netfs_io_terminated_t term_func`` The function to call upon completion ``void *term_func_priv`` The private data for **term_func** **Description** Start a read from the cache. **cres** indicates the cache object to read from and must be obtained by a call to fscache_begin_operation() beforehand. The data is read into the iterator, **iter**, and that also indicates the size of the operation. **start_pos** is the start position in the file, though if **seek_data** is set appropriately, the cache can use SEEK_DATA to find the next piece of data, writing zeros for the hole into the iterator. Upon termination of the operation, **term_func** will be called and supplied with **term_func_priv** plus the amount of data written, if successful, or the error code otherwise. **read_hole** indicates how a partially populated region in the cache should be handled. It can be one of a number of settings: NETFS_READ_HOLE_IGNORE - Just try to read (may return a short read). NETFS_READ_HOLE_FAIL - Give ENODATA if we encounter a hole.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jÊ )�”}”(hjú,h]”hŒ Parameters”…”�”}”(hjü,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjø,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Màhjô,ubjà )�”}”(hhh]”(jå )�”}”(hŒB``struct netfs_cache_resources *cres`` The cache resources to use ”h]”(jë )�”}”(hŒ&``struct netfs_cache_resources *cres``”h]”j^)�”}”(hj-h]”hŒ"struct netfs_cache_resources *cres”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MÝhj-ubj )�”}”(hhh]”hÞ)�”}”(hŒThe cache resources to use”h]”hŒThe cache resources to use”…”�”}”(hj2-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j.-h´MÝhj/-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j.-h´MÝhj-ubjå )�”}”(hŒA``loff_t start_pos`` The beginning file offset in the cache file ”h]”(jë )�”}”(hŒ``loff_t start_pos``”h]”j^)�”}”(hjR-h]”hŒloff_t start_pos”…”�”}”(hjT-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjP-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MÞhjL-ubj )�”}”(hhh]”hÞ)�”}”(hŒ+The beginning file offset in the cache file”h]”hŒ+The beginning file offset in the cache file”…”�”}”(hjk-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jg-h´MÞhjh-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjL-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jg-h´MÞhj-ubjå )�”}”(hŒC``struct iov_iter *iter`` The buffer to fill - and also the length ”h]”(jë )�”}”(hŒ``struct iov_iter *iter``”h]”j^)�”}”(hj‹-h]”hŒstruct iov_iter *iter”…”�”}”(hj�-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj‰-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mßhj…-ubj )�”}”(hhh]”hÞ)�”}”(hŒ(The buffer to fill - and also the length”h]”hŒ(The buffer to fill - and also the length”…”�”}”(hj¤-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j -h´Mßhj¡-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj…-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j -h´Mßhj-ubjå )�”}”(hŒJ``enum netfs_read_from_hole read_hole`` How to handle a hole in the data. ”h]”(jë )�”}”(hŒ'``enum netfs_read_from_hole read_hole``”h]”j^)�”}”(hjÄ-h]”hŒ#enum netfs_read_from_hole read_hole”…”�”}”(hjÆ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÂ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Màhj¾-ubj )�”}”(hhh]”hÞ)�”}”(hŒ!How to handle a hole in the data.”h]”hŒ!How to handle a hole in the data.”…”�”}”(hjÝ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÙ-h´MàhjÚ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¾-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jÙ-h´Màhj-ubjå )�”}”(hŒI``netfs_io_terminated_t term_func`` The function to call upon completion ”h]”(jë )�”}”(hŒ#``netfs_io_terminated_t term_func``”h]”j^)�”}”(hjý-h]”hŒnetfs_io_terminated_t term_func”…”�”}”(hjÿ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjû-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Máhj÷-ubj )�”}”(hhh]”hÞ)�”}”(hŒ$The function to call upon completion”h]”hŒ$The function to call upon completion”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j.h´Máhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj÷-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j.h´Máhj-ubjå )�”}”(hŒ<``void *term_func_priv`` The private data for **term_func** ”h]”(jë )�”}”(hŒ``void *term_func_priv``”h]”j^)�”}”(hj6.h]”hŒvoid *term_func_priv”…”�”}”(hj8.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj4.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mâhj0.ubj )�”}”(hhh]”hÞ)�”}”(hŒ"The private data for **term_func**”h]”(hŒThe private data for ”…”�”}”(hjO.h²hh³Nh´NubjÊ )�”}”(hŒ **term_func**”h]”hŒ term_func”…”�”}”(hjW.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjO.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jK.h´MâhjL.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj0.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jK.h´Mâhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jß hjô,ubhÞ)�”}”(hŒ**Description**”h]”jÊ )�”}”(hj.h]”hŒ Description”…”�”}”(hj�.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj}.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mähjô,ubhÞ)�”}”(hŒ–Start a read from the cache. **cres** indicates the cache object to read from and must be obtained by a call to fscache_begin_operation() beforehand.”h]”(hŒStart a read from the cache. ”…”�”}”(hj•.h²hh³Nh´NubjÊ )�”}”(hŒ**cres**”h]”hŒcres”…”�”}”(hj�.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj•.ubhŒp indicates the cache object to read from and must be obtained by a call to fscache_begin_operation() beforehand.”…”�”}”(hj•.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mãhjô,ubhÞ)�”}”(hX*The data is read into the iterator, **iter**, and that also indicates the size of the operation. **start_pos** is the start position in the file, though if **seek_data** is set appropriately, the cache can use SEEK_DATA to find the next piece of data, writing zeros for the hole into the iterator.”h]”(hŒ$The data is read into the iterator, ”…”�”}”(hj¶.h²hh³Nh´NubjÊ )�”}”(hŒ**iter**”h]”hŒiter”…”�”}”(hj¾.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj¶.ubhŒ6, and that also indicates the size of the operation. ”…”�”}”(hj¶.h²hh³Nh´NubjÊ )�”}”(hŒ **start_pos**”h]”hŒ start_pos”…”�”}”(hjÐ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj¶.ubhŒ. is the start position in the file, though if ”…”�”}”(hj¶.h²hh³Nh´NubjÊ )�”}”(hŒ **seek_data**”h]”hŒ seek_data”…”�”}”(hjâ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj¶.ubhŒ€ is set appropriately, the cache can use SEEK_DATA to find the next piece of data, writing zeros for the hole into the iterator.”…”�”}”(hj¶.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mæhjô,ubhÞ)�”}”(hŒ±Upon termination of the operation, **term_func** will be called and supplied with **term_func_priv** plus the amount of data written, if successful, or the error code otherwise.”h]”(hŒ#Upon termination of the operation, ”…”�”}”(hjû.h²hh³Nh´NubjÊ )�”}”(hŒ **term_func**”h]”hŒ term_func”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjû.ubhŒ" will be called and supplied with ”…”�”}”(hjû.h²hh³Nh´NubjÊ )�”}”(hŒ**term_func_priv**”h]”hŒterm_func_priv”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjû.ubhŒM plus the amount of data written, if successful, or the error code otherwise.”…”�”}”(hjû.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mëhjô,ubhÞ)�”}”(hŒ€**read_hole** indicates how a partially populated region in the cache should be handled. It can be one of a number of settings:”h]”(jÊ )�”}”(hŒ **read_hole**”h]”hŒ read_hole”…”�”}”(hj2/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj./ubhŒs indicates how a partially populated region in the cache should be handled. It can be one of a number of settings:”…”�”}”(hj./h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mïhjô,ubhî)�”}”(hŒ�NETFS_READ_HOLE_IGNORE - Just try to read (may return a short read). NETFS_READ_HOLE_FAIL - Give ENODATA if we encounter a hole.”h]”(hÞ)�”}”(hŒDNETFS_READ_HOLE_IGNORE - Just try to read (may return a short read).”h]”hŒDNETFS_READ_HOLE_IGNORE - Just try to read (may return a short read).”…”�”}”(hjO/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MòhjK/ubhÞ)�”}”(hŒ;NETFS_READ_HOLE_FAIL - Give ENODATA if we encounter a hole.”h]”hŒ;NETFS_READ_HOLE_FAIL - Give ENODATA if we encounter a hole.”…”�”}”(hj^/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MôhjK/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1híh³j]/h´Mòhjô,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¿ hjT h²hh³Nh´Nubjf )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jr Œ*fscache_begin_write_operation (C function)”Œc.fscache_begin_write_operation”hNt”auh1je hjT h²hh³Nh´Nubjw )�”}”(hhh]”(j| )�”}”(hŒeint fscache_begin_write_operation (struct netfs_cache_resources *cres, struct fscache_cookie *cookie)”h]”j‚ )�”}”(hŒdint fscache_begin_write_operation(struct netfs_cache_resources *cres, struct fscache_cookie *cookie)”h]”(j< )�”}”(hŒint”h]”hŒint”…”�”}”(hj“/h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj�/h²hh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢/h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj�/h²hh³j¡/h´Mubjù )�”}”(hŒfscache_begin_write_operation”h]”j® )�”}”(hŒfscache_begin_write_operation”h]”hŒfscache_begin_write_operation”…”�”}”(hj´/h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj°/ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jø hj�/h²hh³j¡/h´Mubj )�”}”(hŒC(struct netfs_cache_resources *cres, struct fscache_cookie *cookie)”h]”(j )�”}”(hŒ"struct netfs_cache_resources *cres”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hjÐ/h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hjÌ/ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ/h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjÌ/ubh)�”}”(hhh]”j® )�”}”(hŒnetfs_cache_resources”h]”hŒnetfs_cache_resources”…”�”}”(hjî/h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjë/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jð/Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÔ )�”}”jÇ j¶/sbŒc.fscache_begin_write_operation”†”asbuh1hhjÌ/ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjÌ/ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hjÌ/ubj® )�”}”(hŒcres”h]”hŒcres”…”�”}”(hj)0h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjÌ/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hjÈ/ubj )�”}”(hŒstruct fscache_cookie *cookie”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hjB0h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj>0ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO0h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj>0ubh)�”}”(hhh]”j® )�”}”(hŒfscache_cookie”h]”hŒfscache_cookie”…”�”}”(hj`0h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj]0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jb0Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”j 0Œc.fscache_begin_write_operation”†”asbuh1hhj>0ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~0h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj>0ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hjŒ0h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj>0ubj® )�”}”(hŒcookie”h]”hŒcookie”…”�”}”(hj™0h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj>0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hjÈ/ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hj�/h²hh³j¡/h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjŠ ˆuh1j� j‹ jŒ hj‹/h²hh³j¡/h´Mubah}”(h]”j†/ah ]”(j� j‘ eh"]”h$]”h&]”j• ˆj– )j— huh1j{ h³j¡/h´Mhjˆ/h²hubj™ )�”}”(hhh]”hÞ)�”}”(hŒ)Begin a write operation for the netfs lib”h]”hŒ)Begin a write operation for the netfs lib”…”�”}”(hjÃ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MhjÀ0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜ hjˆ/h²hh³j¡/h´Mubeh}”(h]”h ]”(jÅ Œfunction”eh"]”h$]”h&]”j¹ jÅ jº jÛ0j» jÛ0j¼ ‰j½ ‰j¾ ‰uh1jv h²hhjT h³Nh´NubjÀ )�”}”(hXÓ**Parameters** ``struct netfs_cache_resources *cres`` The cache resources for the write being performed ``struct fscache_cookie *cookie`` The cookie representing the cache object **Description** Begin a write operation on behalf of the netfs helper library. **cres** indicates the cache resources to which the operation state should be attached; **cookie** indicates the cache object that will be accessed. **cres->inval_counter** is set from **cookie->inval_counter** for comparison at the end of the operation. This allows invalidation during the operation to be detected by the caller. **Return** * 0 - Success * -ENOBUFS - No caching available * Other error code from the cache, such as -ENOMEM.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jÊ )�”}”(hjå0h]”hŒ Parameters”…”�”}”(hjç0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjã0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M hjß0ubjà )�”}”(hhh]”(jå )�”}”(hŒY``struct netfs_cache_resources *cres`` The cache resources for the write being performed ”h]”(jë )�”}”(hŒ&``struct netfs_cache_resources *cres``”h]”j^)�”}”(hj1h]”hŒ"struct netfs_cache_resources *cres”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mhjþ0ubj )�”}”(hhh]”hÞ)�”}”(hŒ1The cache resources for the write being performed”h]”hŒ1The cache resources for the write being performed”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j1h´Mhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjþ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j1h´Mhjû0ubjå )�”}”(hŒK``struct fscache_cookie *cookie`` The cookie representing the cache object ”h]”(jë )�”}”(hŒ!``struct fscache_cookie *cookie``”h]”j^)�”}”(hj=1h]”hŒstruct fscache_cookie *cookie”…”�”}”(hj?1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj;1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mhj71ubj )�”}”(hhh]”hÞ)�”}”(hŒ(The cookie representing the cache object”h]”hŒ(The cookie representing the cache object”…”�”}”(hjV1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jR1h´MhjS1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj71ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jR1h´Mhjû0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jß hjß0ubhÞ)�”}”(hŒ**Description**”h]”jÊ )�”}”(hjx1h]”hŒ Description”…”�”}”(hjz1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjv1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M hjß0ubhÞ)�”}”(hŒÔBegin a write operation on behalf of the netfs helper library. **cres** indicates the cache resources to which the operation state should be attached; **cookie** indicates the cache object that will be accessed.”h]”(hŒ@Begin a write operation on behalf of the netfs helper library. ”…”�”}”(hjŽ1h²hh³Nh´NubjÊ )�”}”(hŒ**cres**”h]”hŒcres”…”�”}”(hj–1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjŽ1ubhŒP indicates the cache resources to which the operation state should be attached; ”…”�”}”(hjŽ1h²hh³Nh´NubjÊ )�”}”(hŒ **cookie**”h]”hŒcookie”…”�”}”(hj¨1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjŽ1ubhŒ2 indicates the cache object that will be accessed.”…”�”}”(hjŽ1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mhjß0ubhÞ)�”}”(hŒ¶**cres->inval_counter** is set from **cookie->inval_counter** for comparison at the end of the operation. This allows invalidation during the operation to be detected by the caller.”h]”(jÊ )�”}”(hŒ**cres->inval_counter**”h]”hŒcres->inval_counter”…”�”}”(hjÅ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjÁ1ubhŒ is set from ”…”�”}”(hjÁ1h²hh³Nh´NubjÊ )�”}”(hŒ**cookie->inval_counter**”h]”hŒcookie->inval_counter”…”�”}”(hj×1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjÁ1ubhŒy for comparison at the end of the operation. This allows invalidation during the operation to be detected by the caller.”…”�”}”(hjÁ1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M hjß0ubhÞ)�”}”(hŒ **Return**”h]”jÊ )�”}”(hjò1h]”hŒReturn”…”�”}”(hjô1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjð1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mhjß0ubj.)�”}”(hhh]”(hù)�”}”(hŒ0 - Success”h]”hÞ)�”}”(hj 2h]”hŒ0 - Success”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mhj 2ubah}”(h]”h ]”h"]”h$]”h&]”uh1høhj2ubhù)�”}”(hŒ!-ENOBUFS - No caching available”h]”j2()�”}”(hhh]”j7()�”}”(hhh]”(j<()�”}”(hhh]”jA()�”}”(hŒ-ENOBUFS”h]”(jG()�”}”(hŒ-E”h]”hŒ-E”…”�”}”hj42sbah}”(h]”h ]”h"]”h$]”h&]”uh1jF(hj02ubjW()�”}”(hŒNOBUFS”h]”hŒNOBUFS”…”�”}”(hjB2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œ delimiter”huh1jV(hj02ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j@(hj-2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;(hj*2ubjt()�”}”(hŒ- No caching available”h]”j.)�”}”(hhh]”hù)�”}”(hŒNo caching available”h]”hÞ)�”}”(hjf2h]”hŒNo caching available”…”�”}”(hjh2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mhjd2ubah}”(h]”h ]”h"]”h$]”h&]”uh1høhja2ubah}”(h]”h ]”h"]”h$]”h&]”jÂjš(uh1j-h³ju2h´Mhj]2ubah}”(h]”h ]”h"]”h$]”h&]”uh1js(hj*2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6(hj'2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j1(h³ju2h´Mhj#2ubah}”(h]”h ]”h"]”h$]”h&]”uh1høhj2ubhù)�”}”(hŒ1Other error code from the cache, such as -ENOMEM.”h]”hÞ)�”}”(hjœ2h]”hŒ1Other error code from the cache, such as -ENOMEM.”…”�”}”(hjž2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mhjš2ubah}”(h]”h ]”h"]”h$]”h&]”uh1høhj2ubeh}”(h]”h ]”h"]”h$]”h&]”jÂjÃuh1j-h³j2h´Mhjß0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¿ hjT h²hh³Nh´Nubjf )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jr Œfscache_write (C function)”Œc.fscache_write”hNt”auh1je hjT h²hh³Nh´Nubjw )�”}”(hhh]”(j| )�”}”(hŒ–int fscache_write (struct netfs_cache_resources *cres, loff_t start_pos, struct iov_iter *iter, netfs_io_terminated_t term_func, void *term_func_priv)”h]”j‚ )�”}”(hŒ•int fscache_write(struct netfs_cache_resources *cres, loff_t start_pos, struct iov_iter *iter, netfs_io_terminated_t term_func, void *term_func_priv)”h]”(j< )�”}”(hŒint”h]”hŒint”…”�”}”(hjØ2h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjÔ2h²hh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç2h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjÔ2h²hh³jæ2h´M ubjù )�”}”(hŒ fscache_write”h]”j® )�”}”(hŒ fscache_write”h]”hŒ fscache_write”…”�”}”(hjù2h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjõ2ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jø hjÔ2h²hh³jæ2h´M ubj )�”}”(hŒ„(struct netfs_cache_resources *cres, loff_t start_pos, struct iov_iter *iter, netfs_io_terminated_t term_func, void *term_func_priv)”h]”(j )�”}”(hŒ"struct netfs_cache_resources *cres”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj3ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"3h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj3ubh)�”}”(hhh]”j® )�”}”(hŒnetfs_cache_resources”h]”hŒnetfs_cache_resources”…”�”}”(hj33h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj03ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”j53Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÔ )�”}”jÇ jû2sbŒc.fscache_write”†”asbuh1hhj3ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS3h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj3ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hja3h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj3ubj® )�”}”(hŒcres”h]”hŒcres”…”�”}”(hjn3h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj 3ubj )�”}”(hŒloff_t start_pos”h]”(h)�”}”(hhh]”j® )�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjŠ3h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj‡3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jŒ3Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jO3Œc.fscache_write”†”asbuh1hhjƒ3ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨3h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjƒ3ubj® )�”}”(hŒ start_pos”h]”hŒ start_pos”…”�”}”(hj¶3h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjƒ3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj 3ubj )�”}”(hŒstruct iov_iter *iter”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hjÏ3h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hjË3ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ3h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjË3ubh)�”}”(hhh]”j® )�”}”(hŒiov_iter”h]”hŒiov_iter”…”�”}”(hjí3h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjê3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jï3Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jO3Œc.fscache_write”†”asbuh1hhjË3ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjË3ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hjË3ubj® )�”}”(hŒiter”h]”hŒiter”…”�”}”(hj&4h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjË3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj 3ubj )�”}”(hŒnetfs_io_terminated_t term_func”h]”(h)�”}”(hhh]”j® )�”}”(hŒnetfs_io_terminated_t”h]”hŒnetfs_io_terminated_t”…”�”}”(hjB4h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj?4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jD4Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jO3Œc.fscache_write”†”asbuh1hhj;4ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`4h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj;4ubj® )�”}”(hŒ term_func”h]”hŒ term_func”…”�”}”(hjn4h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj;4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj 3ubj )�”}”(hŒvoid *term_func_priv”h]”(j< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‡4h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjƒ4ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•4h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjƒ4ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj£4h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hjƒ4ubj® )�”}”(hŒterm_func_priv”h]”hŒterm_func_priv”…”�”}”(hj°4h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjƒ4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj 3ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hjÔ2h²hh³jæ2h´M ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjŠ ˆuh1j� j‹ jŒ hjÐ2h²hh³jæ2h´M ubah}”(h]”jË2ah ]”(j� j‘ eh"]”h$]”h&]”j• ˆj– )j— huh1j{ h³jæ2h´M hjÍ2h²hubj™ )�”}”(hhh]”hÞ)�”}”(hŒStart a write to the cache.”h]”hŒStart a write to the cache.”…”�”}”(hjÚ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M hj×4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜ hjÍ2h²hh³jæ2h´M ubeh}”(h]”h ]”(jÅ Œfunction”eh"]”h$]”h&]”j¹ jÅ jº jò4j» jò4j¼ ‰j½ ‰j¾ ‰uh1jv h²hhjT h³Nh´NubjÀ )�”}”(hXg**Parameters** ``struct netfs_cache_resources *cres`` The cache resources to use ``loff_t start_pos`` The beginning file offset in the cache file ``struct iov_iter *iter`` The data to write - and also the length ``netfs_io_terminated_t term_func`` The function to call upon completion ``void *term_func_priv`` The private data for **term_func** **Description** Start a write to the cache. **cres** indicates the cache object to write to and must be obtained by a call to fscache_begin_operation() beforehand. The data to be written is obtained from the iterator, **iter**, and that also indicates the size of the operation. **start_pos** is the start position in the file. Upon termination of the operation, **term_func** will be called and supplied with **term_func_priv** plus the amount of data written, if successful, or the error code otherwise.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jÊ )�”}”(hjü4h]”hŒ Parameters”…”�”}”(hjþ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjú4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M$hjö4ubjà )�”}”(hhh]”(jå )�”}”(hŒB``struct netfs_cache_resources *cres`` The cache resources to use ”h]”(jë )�”}”(hŒ&``struct netfs_cache_resources *cres``”h]”j^)�”}”(hj5h]”hŒ"struct netfs_cache_resources *cres”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M!hj5ubj )�”}”(hhh]”hÞ)�”}”(hŒThe cache resources to use”h]”hŒThe cache resources to use”…”�”}”(hj45h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j05h´M!hj15ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j05h´M!hj5ubjå )�”}”(hŒA``loff_t start_pos`` The beginning file offset in the cache file ”h]”(jë )�”}”(hŒ``loff_t start_pos``”h]”j^)�”}”(hjT5h]”hŒloff_t start_pos”…”�”}”(hjV5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjR5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M"hjN5ubj )�”}”(hhh]”hÞ)�”}”(hŒ+The beginning file offset in the cache file”h]”hŒ+The beginning file offset in the cache file”…”�”}”(hjm5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³ji5h´M"hjj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjN5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³ji5h´M"hj5ubjå )�”}”(hŒB``struct iov_iter *iter`` The data to write - and also the length ”h]”(jë )�”}”(hŒ``struct iov_iter *iter``”h]”j^)�”}”(hj�5h]”hŒstruct iov_iter *iter”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj‹5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M#hj‡5ubj )�”}”(hhh]”hÞ)�”}”(hŒ'The data to write - and also the length”h]”hŒ'The data to write - and also the length”…”�”}”(hj¦5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j¢5h´M#hj£5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‡5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j¢5h´M#hj5ubjå )�”}”(hŒI``netfs_io_terminated_t term_func`` The function to call upon completion ”h]”(jë )�”}”(hŒ#``netfs_io_terminated_t term_func``”h]”j^)�”}”(hjÆ5h]”hŒnetfs_io_terminated_t term_func”…”�”}”(hjÈ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÄ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M$hjÀ5ubj )�”}”(hhh]”hÞ)�”}”(hŒ$The function to call upon completion”h]”hŒ$The function to call upon completion”…”�”}”(hjß5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÛ5h´M$hjÜ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÀ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jÛ5h´M$hj5ubjå )�”}”(hŒ<``void *term_func_priv`` The private data for **term_func** ”h]”(jë )�”}”(hŒ``void *term_func_priv``”h]”j^)�”}”(hjÿ5h]”hŒvoid *term_func_priv”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1••j]hjý5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M%hjù5ubj )�”}”(hhh]”hÞ)�”}”(hŒ"The private data for **term_func**”h]”(hŒThe private data for ”…”�”}”(hj6h²hh³Nh´NubjÊ )�”}”(hŒ **term_func**”h]”hŒ term_func”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j6h´M%hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjù5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j6h´M%hj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jß hjö4ubhÞ)�”}”(hŒ**Description**”h]”jÊ )�”}”(hjH6h]”hŒ Description”…”�”}”(hjJ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjF6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M'hjö4ubhÞ)�”}”(hŒ”Start a write to the cache. **cres** indicates the cache object to write to and must be obtained by a call to fscache_begin_operation() beforehand.”h]”(hŒStart a write to the cache. ”…”�”}”(hj^6h²hh³Nh´NubjÊ )�”}”(hŒ**cres**”h]”hŒcres”…”�”}”(hjf6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj^6ubhŒo indicates the cache object to write to and must be obtained by a call to fscache_begin_operation() beforehand.”…”�”}”(hj^6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M&hjö4ubhÞ)�”}”(hŒ¤The data to be written is obtained from the iterator, **iter**, and that also indicates the size of the operation. **start_pos** is the start position in the file.”h]”(hŒ6The data to be written is obtained from the iterator, ”…”�”}”(hj6h²hh³Nh´NubjÊ )�”}”(hŒ**iter**”h]”hŒiter”…”�”}”(hj‡6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj6ubhŒ6, and that also indicates the size of the operation. ”…”�”}”(hj6h²hh³Nh´NubjÊ )�”}”(hŒ **start_pos**”h]”hŒ start_pos”…”�”}”(hj™6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj6ubhŒ# is the start position in the file.”…”�”}”(hj6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M)hjö4ubhÞ)�”}”(hŒ±Upon termination of the operation, **term_func** will be called and supplied with **term_func_priv** plus the amount of data written, if successful, or the error code otherwise.”h]”(hŒ#Upon termination of the operation, ”…”�”}”(hj²6h²hh³Nh´NubjÊ )�”}”(hŒ **term_func**”h]”hŒ term_func”…”�”}”(hjº6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj²6ubhŒ" will be called and supplied with ”…”�”}”(hj²6h²hh³Nh´NubjÊ )�”}”(hŒ**term_func_priv**”h]”hŒterm_func_priv”…”�”}”(hjÌ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj²6ubhŒM plus the amount of data written, if successful, or the error code otherwise.”…”�”}”(hj²6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M-hjö4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¿ hjT h²hh³Nh´Nubjf )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jr Œ$fscache_clear_page_bits (C function)”Œc.fscache_clear_page_bits”hNt”auh1je hjT h²hh³Nh´Nubjw )�”}”(hhh]”(j| )�”}”(hŒdvoid fscache_clear_page_bits (struct address_space *mapping, loff_t start, size_t len, bool caching)”h]”j‚ )�”}”(hŒcvoid fscache_clear_page_bits(struct address_space *mapping, loff_t start, size_t len, bool caching)”h]”(j< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj7h²hh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M>ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj7h²hh³j7h´M>ubjù )�”}”(hŒfscache_clear_page_bits”h]”j® )�”}”(hŒfscache_clear_page_bits”h]”hŒfscache_clear_page_bits”…”�”}”(hj&7h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj"7ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jø hj7h²hh³j7h´M>ubj )�”}”(hŒG(struct address_space *mapping, loff_t start, size_t len, bool caching)”h]”(j )�”}”(hŒstruct address_space *mapping”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hjB7h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj>7ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO7h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj>7ubh)�”}”(hhh]”j® )�”}”(hŒ address_space”h]”hŒ address_space”…”�”}”(hj`7h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj]7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jb7Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÔ )�”}”jÇ j(7sbŒc.fscache_clear_page_bits”†”asbuh1hhj>7ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€7h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj>7ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hjŽ7h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj>7ubj® )�”}”(hŒmapping”h]”hŒmapping”…”�”}”(hj›7h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj>7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj:7ubj )�”}”(hŒ loff_t start”h]”(h)�”}”(hhh]”j® )�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj·7h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj´7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”j¹7Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”j|7Œc.fscache_clear_page_bits”†”asbuh1hhj°7ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ7h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj°7ubj® )�”}”(hŒstart”h]”hŒstart”…”�”}”(hjã7h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj°7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj:7ubj )�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j® )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÿ7h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjü7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”j8Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”j|7Œc.fscache_clear_page_bits”†”asbuh1hhjø7ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjø7ubj® )�”}”(hŒlen”h]”hŒlen”…”�”}”(hj+8h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjø7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj:7ubj )�”}”(hŒ bool caching”h]”(j< )�”}”(hj8h]”hŒbool”…”�”}”(hjD8h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj@8ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ8h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj@8ubj® )�”}”(hŒcaching”h]”hŒcaching”…”�”}”(hj_8h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj@8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj:7ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hj7h²hh³j7h´M>ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjŠ ˆuh1j� j‹ jŒ hjý6h²hh³j7h´M>ubah}”(h]”jø6ah ]”(j� j‘ eh"]”h$]”h&]”j• ˆj– )j— huh1j{ h³j7h´M>hjú6h²hubj™ )�”}”(hhh]”hÞ)�”}”(hŒ-Clear the PG_fscache bits from a set of pages”h]”hŒ-Clear the PG_fscache bits from a set of pages”…”�”}”(hj‰8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M>hj†8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜ hjú6h²hh³j7h´M>ubeh}”(h]”h ]”(jÅ Œfunction”eh"]”h$]”h&]”j¹ jÅ jº j¡8j» j¡8j¼ ‰j½ ‰j¾ ‰uh1jv h²hhjT h³Nh´NubjÀ )�”}”(hXS**Parameters** ``struct address_space *mapping`` The netfs inode to use as the source ``loff_t start`` The start position in **mapping** ``size_t len`` The amount of data to unlock ``bool caching`` If PG_fscache has been set **Description** Clear the PG_fscache flag from a sequence of pages and wake up anyone who's waiting.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jÊ )�”}”(hj«8h]”hŒ Parameters”…”�”}”(hj­8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj©8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MBhj¥8ubjà )�”}”(hhh]”(jå )�”}”(hŒG``struct address_space *mapping`` The netfs inode to use as the source ”h]”(jë )�”}”(hŒ!``struct address_space *mapping``”h]”j^)�”}”(hjÊ8h]”hŒstruct address_space *mapping”…”�”}”(hjÌ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjÈ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M?hjÄ8ubj )�”}”(hhh]”hÞ)�”}”(hŒ$The netfs inode to use as the source”h]”hŒ$The netfs inode to use as the source”…”�”}”(hjã8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jß8h´M?hjà8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÄ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jß8h´M?hjÁ8ubjå )�”}”(hŒ3``loff_t start`` The start position in **mapping** ”h]”(jë )�”}”(hŒ``loff_t start``”h]”j^)�”}”(hj9h]”hŒ loff_t start”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M@hjý8ubj )�”}”(hhh]”hÞ)�”}”(hŒ!The start position in **mapping**”h]”(hŒThe start position in ”…”�”}”(hj9h²hh³Nh´NubjÊ )�”}”(hŒ **mapping**”h]”hŒmapping”…”�”}”(hj$9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j9h´M@hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjý8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j9h´M@hjÁ8ubjå )�”}”(hŒ,``size_t len`` The amount of data to unlock ”h]”(jë )�”}”(hŒ``size_t len``”h]”j^)�”}”(hjJ9h]”hŒ size_t len”…”�”}”(hjL9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjH9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MAhjD9ubj )�”}”(hhh]”hÞ)�”}”(hŒThe amount of data to unlock”h]”hŒThe amount of data to unlock”…”�”}”(hjc9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j_9h´MAhj`9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjD9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j_9h´MAhjÁ8ubjå )�”}”(hŒ,``bool caching`` If PG_fscache has been set ”h]”(jë )�”}”(hŒ``bool caching``”h]”j^)�”}”(hjƒ9h]”hŒ bool caching”…”�”}”(hj…9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj�9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MBhj}9ubj )�”}”(hhh]”hÞ)�”}”(hŒIf PG_fscache has been set”h]”hŒIf PG_fscache has been set”…”�”}”(hjœ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j˜9h´MBhj™9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj}9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j˜9h´MBhjÁ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jß hj¥8ubhÞ)�”}”(hŒ**Description**”h]”jÊ )�”}”(hj¾9h]”hŒ Description”…”�”}”(hjÀ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj¼9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MDhj¥8ubhÞ)�”}”(hŒTClear the PG_fscache flag from a sequence of pages and wake up anyone who's waiting.”h]”hŒVClear the PG_fscache flag from a sequence of pages and wake up anyone who’s waiting.”…”�”}”(hjÔ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MChj¥8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¿ hjT h²hh³Nh´Nubjf )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jr Œ#fscache_write_to_cache (C function)”Œc.fscache_write_to_cache”hNt”auh1je hjT h²hh³Nh´Nubjw )�”}”(hhh]”(j| )�”}”(hŒÜvoid fscache_write_to_cache (struct fscache_cookie *cookie, struct address_space *mapping, loff_t start, size_t len, loff_t i_size, netfs_io_terminated_t term_func, void *term_func_priv, bool using_pgpriv2, bool caching)”h]”j‚ )�”}”(hŒÛvoid fscache_write_to_cache(struct fscache_cookie *cookie, struct address_space *mapping, loff_t start, size_t len, loff_t i_size, netfs_io_terminated_t term_func, void *term_func_priv, bool using_pgpriv2, bool caching)”h]”(j< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hjÿ9h²hh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MPubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjÿ9h²hh³j:h´MPubjù )�”}”(hŒfscache_write_to_cache”h]”j® )�”}”(hŒfscache_write_to_cache”h]”hŒfscache_write_to_cache”…”�”}”(hj$:h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj :ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jø hjÿ9h²hh³j:h´MPubj )�”}”(hŒÀ(struct fscache_cookie *cookie, struct address_space *mapping, loff_t start, size_t len, loff_t i_size, netfs_io_terminated_t term_func, void *term_func_priv, bool using_pgpriv2, bool caching)”h]”(j )�”}”(hŒstruct fscache_cookie *cookie”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hj@:h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj<:ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM:h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj<:ubh)�”}”(hhh]”j® )�”}”(hŒfscache_cookie”h]”hŒfscache_cookie”…”�”}”(hj^:h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj[:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”j`:Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÔ )�”}”jÇ j&:sbŒc.fscache_write_to_cache”†”asbuh1hhj<:ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~:h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj<:ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hjŒ:h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj<:ubj® )�”}”(hŒcookie”h]”hŒcookie”…”�”}”(hj™:h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj<:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj8:ubj )�”}”(hŒstruct address_space *mapping”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hj²:h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hj®:ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿:h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj®:ubh)�”}”(hhh]”j® )�”}”(hŒ address_space”h]”hŒ address_space”…”�”}”(hjÐ:h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjÍ:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jÒ:Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jz:Œc.fscache_write_to_cache”†”asbuh1hhj®:ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî:h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj®:ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hjü:h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj®:ubj® )�”}”(hŒmapping”h]”hŒmapping”…”�”}”(hj ;h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj®:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj8:ubj )�”}”(hŒ loff_t start”h]”(h)�”}”(hhh]”j® )�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hj%;h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj";ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”j';Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jz:Œc.fscache_write_to_cache”†”asbuh1hhj;ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjC;h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj;ubj® )�”}”(hŒstart”h]”hŒstart”…”�”}”(hjQ;h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj8:ubj )�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j® )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjm;h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjj;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jo;Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jz:Œc.fscache_write_to_cache”†”asbuh1hhjf;ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹;h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjf;ubj® )�”}”(hŒlen”h]”hŒlen”…”�”}”(hj™;h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjf;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj8:ubj )�”}”(hŒ loff_t i_size”h]”(h)�”}”(hhh]”j® )�”}”(hŒloff_t”h]”hŒloff_t”…”�”}”(hjµ;h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj²;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”j·;Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jz:Œc.fscache_write_to_cache”†”asbuh1hhj®;ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ;h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj®;ubj® )�”}”(hŒi_size”h]”hŒi_size”…”�”}”(hjá;h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj®;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj8:ubj )�”}”(hŒnetfs_io_terminated_t term_func”h]”(h)�”}”(hhh]”j® )�”}”(hŒnetfs_io_terminated_t”h]”hŒnetfs_io_terminated_t”…”�”}”(hjý;h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjú;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”jÿ;Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jz:Œc.fscache_write_to_cache”†”asbuh1hhjö;ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjö;ubj® )�”}”(hŒ term_func”h]”hŒ term_func”…”�”}”(hj)<h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjö;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj8:ubj )�”}”(hŒvoid *term_func_priv”h]”(j< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjB<h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj><ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP<h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj><ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hj^<h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hj><ubj® )�”}”(hŒterm_func_priv”h]”hŒterm_func_priv”…”�”}”(hjk<h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj><ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj8:ubj )�”}”(hŒbool using_pgpriv2”h]”(j< )�”}”(hj8h]”hŒbool”…”�”}”(hj„<h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj€<ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘<h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj€<ubj® )�”}”(hŒ using_pgpriv2”h]”hŒ using_pgpriv2”…”�”}”(hjŸ<h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj€<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj8:ubj )�”}”(hŒ bool caching”h]”(j< )�”}”(hj8h]”hŒbool”…”�”}”(hj¸<h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj´<ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ<h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj´<ubj® )�”}”(hŒcaching”h]”hŒcaching”…”�”}”(hjÓ<h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj´<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hj8:ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hjÿ9h²hh³j:h´MPubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjŠ ˆuh1j� j‹ jŒ hjû9h²hh³j:h´MPubah}”(h]”jö9ah ]”(j� j‘ eh"]”h$]”h&]”j• ˆj– )j— huh1j{ h³j:h´MPhjø9h²hubj™ )�”}”(hhh]”hÞ)�”}”(hŒ.Save a write to the cache and clear PG_fscache”h]”hŒ.Save a write to the cache and clear PG_fscache”…”�”}”(hjý<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MPhjú<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜ hjø9h²hh³j:h´MPubeh}”(h]”h ]”(jÅ Œfunction”eh"]”h$]”h&]”j¹ jÅ jº j=j» j=j¼ ‰j½ ‰j¾ ‰uh1jv h²hhjT h³Nh´NubjÀ )�”}”(hXÇ**Parameters** ``struct fscache_cookie *cookie`` The cookie representing the cache object ``struct address_space *mapping`` The netfs inode to use as the source ``loff_t start`` The start position in **mapping** ``size_t len`` The amount of data to write back ``loff_t i_size`` The new size of the inode ``netfs_io_terminated_t term_func`` The function to call upon completion ``void *term_func_priv`` The private data for **term_func** ``bool using_pgpriv2`` If we're using PG_private_2 to mark in-progress write ``bool caching`` If we actually want to do the caching **Description** Helper function for a netfs to write dirty data from an inode into the cache object that's backing it. **start** and **len** describe the range of the data. This does not need to be page-aligned, but to satisfy DIO requirements, the cache may expand it up to the page boundaries on either end. All the pages covering the range must be marked with PG_fscache. If given, **term_func** will be called upon completion and supplied with **term_func_priv**. Note that if **using_pgpriv2** is set, the PG_private_2 flags will have been cleared by this point, so the netfs must retain its own pin on the mapping.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jÊ )�”}”(hj=h]”hŒ Parameters”…”�”}”(hj!=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MThj=ubjà )�”}”(hhh]”(jå )�”}”(hŒK``struct fscache_cookie *cookie`` The cookie representing the cache object ”h]”(jë )�”}”(hŒ!``struct fscache_cookie *cookie``”h]”j^)�”}”(hj>=h]”hŒstruct fscache_cookie *cookie”…”�”}”(hj@=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj<=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MQhj8=ubj )�”}”(hhh]”hÞ)�”}”(hŒ(The cookie representing the cache object”h]”hŒ(The cookie representing the cache object”…”�”}”(hjW=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jS=h´MQhjT=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj8=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jS=h´MQhj5=ubjå )�”}”(hŒG``struct address_space *mapping`` The netfs inode to use as the source ”h]”(jë )�”}”(hŒ!``struct address_space *mapping``”h]”j^)�”}”(hjw=h]”hŒstruct address_space *mapping”…”�”}”(hjy=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hju=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MRhjq=ubj )�”}”(hhh]”hÞ)�”}”(hŒ$The netfs inode to use as the source”h]”hŒ$The netfs inode to use as the source”…”�”}”(hj�=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jŒ=h´MRhj�=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjq=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jŒ=h´MRhj5=ubjå )�”}”(hŒ3``loff_t start`` The start position in **mapping** ”h]”(jë )�”}”(hŒ``loff_t start``”h]”j^)�”}”(hj°=h]”hŒ loff_t start”…”�”}”(hj²=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj®=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MShjª=ubj )�”}”(hhh]”hÞ)�”}”(hŒ!The start position in **mapping**”h]”(hŒThe start position in ”…”�”}”(hjÉ=h²hh³Nh´NubjÊ )�”}”(hŒ **mapping**”h]”hŒmapping”…”�”}”(hjÑ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjÉ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jÅ=h´MShjÆ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjª=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jÅ=h´MShj5=ubjå )�”}”(hŒ0``size_t len`` The amount of data to write back ”h]”(jë )�”}”(hŒ``size_t len``”h]”j^)�”}”(hj÷=h]”hŒ size_t len”…”�”}”(hjù=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjõ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MThjñ=ubj )�”}”(hhh]”hÞ)�”}”(hŒ The amount of data to write back”h]”hŒ The amount of data to write back”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j >h´MThj >ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjñ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j >h´MThj5=ubjå )�”}”(hŒ,``loff_t i_size`` The new size of the inode ”h]”(jë )�”}”(hŒ``loff_t i_size``”h]”j^)�”}”(hj0>h]”hŒ loff_t i_size”…”�”}”(hj2>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj.>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MUhj*>ubj )�”}”(hhh]”hÞ)�”}”(hŒThe new size of the inode”h]”hŒThe new size of the inode”…”�”}”(hjI>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jE>h´MUhjF>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj*>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jE>h´MUhj5=ubjå )�”}”(hŒI``netfs_io_terminated_t term_func`` The function to call upon completion ”h]”(jë )�”}”(hŒ#``netfs_io_terminated_t term_func``”h]”j^)�”}”(hji>h]”hŒnetfs_io_terminated_t term_func”…”�”}”(hjk>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjg>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MVhjc>ubj )�”}”(hhh]”hÞ)�”}”(hŒ$The function to call upon completion”h]”hŒ$The function to call upon completion”…”�”}”(hj‚>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j~>h´MVhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjc>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j~>h´MVhj5=ubjå )�”}”(hŒ<``void *term_func_priv`` The private data for **term_func** ”h]”(jë )�”}”(hŒ``void *term_func_priv``”h]”j^)�”}”(hj¢>h]”hŒvoid *term_func_priv”…”�”}”(hj¤>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj >ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MWhjœ>ubj )�”}”(hhh]”hÞ)�”}”(hŒ"The private data for **term_func**”h]”(hŒThe private data for ”…”�”}”(hj»>h²hh³Nh´NubjÊ )�”}”(hŒ **term_func**”h]”hŒ term_func”…”�”}”(hjÃ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj»>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j·>h´MWhj¸>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœ>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j·>h´MWhj5=ubjå )�”}”(hŒM``bool using_pgpriv2`` If we're using PG_private_2 to mark in-progress write ”h]”(jë )�”}”(hŒ``bool using_pgpriv2``”h]”j^)�”}”(hjé>h]”hŒbool using_pgpriv2”…”�”}”(hjë>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjç>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MXhjã>ubj )�”}”(hhh]”hÞ)�”}”(hŒ5If we're using PG_private_2 to mark in-progress write”h]”hŒ7If we’re using PG_private_2 to mark in-progress write”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³jþ>h´MXhjÿ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjã>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³jþ>h´MXhj5=ubjå )�”}”(hŒ7``bool caching`` If we actually want to do the caching ”h]”(jë )�”}”(hŒ``bool caching``”h]”j^)�”}”(hj"?h]”hŒ bool caching”…”�”}”(hj$?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hj ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MYhj?ubj )�”}”(hhh]”hÞ)�”}”(hŒ%If we actually want to do the caching”h]”hŒ%If we actually want to do the caching”…”�”}”(hj;?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j7?h´MYhj8?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j7?h´MYhj5=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jß hj=ubhÞ)�”}”(hŒ**Description**”h]”jÊ )�”}”(hj]?h]”hŒ Description”…”�”}”(hj_?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj[?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M[hj=ubhÞ)�”}”(hŒfHelper function for a netfs to write dirty data from an inode into the cache object that's backing it.”h]”hŒhHelper function for a netfs to write dirty data from an inode into the cache object that’s backing it.”…”�”}”(hjs?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MZhj=ubhÞ)�”}”(hX**start** and **len** describe the range of the data. This does not need to be page-aligned, but to satisfy DIO requirements, the cache may expand it up to the page boundaries on either end. All the pages covering the range must be marked with PG_fscache.”h]”(jÊ )�”}”(hŒ **start**”h]”hŒstart”…”�”}”(hj†?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj‚?ubhŒ and ”…”�”}”(hj‚?h²hh³Nh´NubjÊ )�”}”(hŒ**len**”h]”hŒlen”…”�”}”(hj˜?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj‚?ubhŒì describe the range of the data. This does not need to be page-aligned, but to satisfy DIO requirements, the cache may expand it up to the page boundaries on either end. All the pages covering the range must be marked with PG_fscache.”…”�”}”(hj‚?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M]hj=ubhÞ)�”}”(hŒöIf given, **term_func** will be called upon completion and supplied with **term_func_priv**. Note that if **using_pgpriv2** is set, the PG_private_2 flags will have been cleared by this point, so the netfs must retain its own pin on the mapping.”h]”(hŒ If given, ”…”�”}”(hj±?h²hh³Nh´NubjÊ )�”}”(hŒ **term_func**”h]”hŒ term_func”…”�”}”(hj¹?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj±?ubhŒ2 will be called upon completion and supplied with ”…”�”}”(hj±?h²hh³Nh´NubjÊ )�”}”(hŒ**term_func_priv**”h]”hŒterm_func_priv”…”�”}”(hjË?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj±?ubhŒ. Note that if ”…”�”}”(hj±?h²hh³Nh´NubjÊ )�”}”(hŒ**using_pgpriv2**”h]”hŒ using_pgpriv2”…”�”}”(hjÝ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hj±?ubhŒz is set, the PG_private_2 flags will have been cleared by this point, so the netfs must retain its own pin on the mapping.”…”�”}”(hj±?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Mbhj=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¿ hjT h²hh³Nh´Nubjf )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jr Œ&fscache_note_page_release (C function)”Œc.fscache_note_page_release”hNt”auh1je hjT h²hh³Nh´Nubjw )�”}”(hhh]”(j| )�”}”(hŒ>void fscache_note_page_release (struct fscache_cookie *cookie)”h]”j‚ )�”}”(hŒ=void fscache_note_page_release(struct fscache_cookie *cookie)”h]”(j< )�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jH ah"]”h$]”h&]”uh1j; hj@h²hh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´Myubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%@h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hj@h²hh³j$@h´Myubjù )�”}”(hŒfscache_note_page_release”h]”j® )�”}”(hŒfscache_note_page_release”h]”hŒfscache_note_page_release”…”�”}”(hj7@h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hj3@ubah}”(h]”h ]”(j j eh"]”h$]”h&]”hÅhÆuh1jø hj@h²hh³j$@h´Myubj )�”}”(hŒ(struct fscache_cookie *cookie)”h]”j )�”}”(hŒstruct fscache_cookie *cookie”h]”(jˆ )�”}”(hj‹ h]”hŒstruct”…”�”}”(hjS@h²hh³Nh´Nubah}”(h]”h ]”j” ah"]”h$]”h&]”uh1j‡ hjO@ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`@h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjO@ubh)�”}”(hhh]”j® )�”}”(hŒfscache_cookie”h]”hŒfscache_cookie”…”�”}”(hjq@h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjn@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÅ Œreftype”jÇ Œ reftarget”js@Œmodname”NŒ classname”NjË jÎ )�”}”jÑ ]”jÔ )�”}”jÇ j9@sbŒc.fscache_note_page_release”†”asbuh1hhjO@ubjš )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘@h²hh³Nh´Nubah}”(h]”h ]”j¦ ah"]”h$]”h&]”uh1j™ hjO@ubjé )�”}”(hjÃh]”hŒ*”…”�”}”(hjŸ@h²hh³Nh´Nubah}”(h]”h ]”jô ah"]”h$]”h&]”uh1jè hjO@ubj® )�”}”(hŒcookie”h]”hŒcookie”…”�”}”(hj¬@h²hh³Nh´Nubah}”(h]”h ]”jº ah"]”h$]”h&]”uh1j­ hjO@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1j hjK@ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j hj@h²hh³j$@h´Myubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjŠ ˆuh1j� j‹ jŒ hj@h²hh³j$@h´Myubah}”(h]”j @ah ]”(j� j‘ eh"]”h$]”h&]”j• ˆj– )j— huh1j{ h³j$@h´Myhj @h²hubj™ )�”}”(hhh]”hÞ)�”}”(hŒ#Note that a netfs page got released”h]”hŒ#Note that a netfs page got released”…”�”}”(hjÖ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MyhjÓ@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j˜ hj @h²hh³j$@h´Myubeh}”(h]”h ]”(jÅ Œfunction”eh"]”h$]”h&]”j¹ jÅ jº jî@j» jî@j¼ ‰j½ ‰j¾ ‰uh1jv h²hhjT h³Nh´NubjÀ )�”}”(hX**Parameters** ``struct fscache_cookie *cookie`` The cookie corresponding to the file **Description** Note that a page that has been copied to the cache has been released. This means that future reads will need to look in the cache to see if it's there.”h]”(hÞ)�”}”(hŒ**Parameters**”h]”jÊ )�”}”(hjø@h]”hŒ Parameters”…”�”}”(hjú@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjö@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M}hjò@ubjà )�”}”(hhh]”jå )�”}”(hŒG``struct fscache_cookie *cookie`` The cookie corresponding to the file ”h]”(jë )�”}”(hŒ!``struct fscache_cookie *cookie``”h]”j^)�”}”(hjAh]”hŒstruct fscache_cookie *cookie”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jê h³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´MzhjAubj )�”}”(hhh]”hÞ)�”}”(hŒ$The cookie corresponding to the file”h]”hŒ$The cookie corresponding to the file”…”�”}”(hj0Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³j,Ah´Mzhj-Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jä h³j,Ah´MzhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jß hjò@ubhÞ)�”}”(hŒ**Description**”h]”jÊ )�”}”(hjRAh]”hŒ Description”…”�”}”(hjTAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÉ hjPAubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M|hjò@ubhÞ)�”}”(hŒ˜Note that a page that has been copied to the cache has been released. This means that future reads will need to look in the cache to see if it's there.”h]”hŒšNote that a page that has been copied to the cache has been released. This means that future reads will need to look in the cache to see if it’s there.”…”�”}”(hjhAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³Œf/var/lib/git/docbuild/linux/Documentation/filesystems/caching/netfs-api:452: ./include/linux/fscache.h”h´M{hjò@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¿ hjT h²hh³Nh´Nubeh}”(h]”Œapi-function-reference”ah ]”h"]”Œapi function reference”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MÂubeh}”(h]”Œnetwork-filesystem-caching-api”ah ]”h"]”Œnetwork filesystem caching api”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j±AŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j‹AjˆAjXjUjýjúj”j‘j%j"j|jyjWjTjšj—jùjöjÿjüjÀj½jQ jN jƒAj€AuŒ nametypes”}”(j‹A‰jX‰jý‰j”‰j%‰j|‰jW‰jš‰jù‰jÿ‰jÀ‰jQ ‰jƒA‰uh}”(jˆAhÊjUj°júj[j‘jj"j—jyj(jTjj—jZjöj�jüjüj½jjN jÃj€AjT jt j} j j" j¢j§j�j¢j‹j�jKjPjHjMj;j@jL jQ jž#j£#j�%j•%jä(jé(je*jj*j†/j‹/jË2jÐ2jø6jý6jö9jû9j @j@uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.