diff options
Diffstat (limited to 'Documentation/filesystems/caching/netfs-api.txt')
| -rw-r--r-- | Documentation/filesystems/caching/netfs-api.txt | 46 |
1 files changed, 38 insertions, 8 deletions
diff --git a/Documentation/filesystems/caching/netfs-api.txt b/Documentation/filesystems/caching/netfs-api.txt index 7cc6bf2871eb..97e6c0ecc5ef 100644 --- a/Documentation/filesystems/caching/netfs-api.txt +++ b/Documentation/filesystems/caching/netfs-api.txt | |||
| @@ -35,8 +35,9 @@ This document contains the following sections: | |||
| 35 | (12) Index and data file update | 35 | (12) Index and data file update |
| 36 | (13) Miscellaneous cookie operations | 36 | (13) Miscellaneous cookie operations |
| 37 | (14) Cookie unregistration | 37 | (14) Cookie unregistration |
| 38 | (15) Index and data file invalidation | 38 | (15) Index invalidation |
| 39 | (16) FS-Cache specific page flags. | 39 | (16) Data file invalidation |
| 40 | (17) FS-Cache specific page flags. | ||
| 40 | 41 | ||
| 41 | 42 | ||
| 42 | ============================= | 43 | ============================= |
| @@ -767,13 +768,42 @@ the cookies for "child" indices, objects and pages have been relinquished | |||
| 767 | first. | 768 | first. |
| 768 | 769 | ||
| 769 | 770 | ||
| 770 | ================================ | 771 | ================== |
| 771 | INDEX AND DATA FILE INVALIDATION | 772 | INDEX INVALIDATION |
| 772 | ================================ | 773 | ================== |
| 774 | |||
| 775 | There is no direct way to invalidate an index subtree. To do this, the caller | ||
| 776 | should relinquish and retire the cookie they have, and then acquire a new one. | ||
| 777 | |||
| 778 | |||
| 779 | ====================== | ||
| 780 | DATA FILE INVALIDATION | ||
| 781 | ====================== | ||
| 782 | |||
| 783 | Sometimes it will be necessary to invalidate an object that contains data. | ||
| 784 | Typically this will be necessary when the server tells the netfs of a foreign | ||
| 785 | change - at which point the netfs has to throw away all the state it had for an | ||
| 786 | inode and reload from the server. | ||
| 787 | |||
| 788 | To indicate that a cache object should be invalidated, the following function | ||
| 789 | can be called: | ||
| 790 | |||
| 791 | void fscache_invalidate(struct fscache_cookie *cookie); | ||
| 792 | |||
| 793 | This can be called with spinlocks held as it defers the work to a thread pool. | ||
| 794 | All extant storage, retrieval and attribute change ops at this point are | ||
| 795 | cancelled and discarded. Some future operations will be rejected until the | ||
| 796 | cache has had a chance to insert a barrier in the operations queue. After | ||
| 797 | that, operations will be queued again behind the invalidation operation. | ||
| 798 | |||
| 799 | The invalidation operation will perform an attribute change operation and an | ||
| 800 | auxiliary data update operation as it is very likely these will have changed. | ||
| 801 | |||
| 802 | Using the following function, the netfs can wait for the invalidation operation | ||
| 803 | to have reached a point at which it can start submitting ordinary operations | ||
| 804 | once again: | ||
| 773 | 805 | ||
| 774 | There is no direct way to invalidate an index subtree or a data file. To do | 806 | void fscache_wait_on_invalidate(struct fscache_cookie *cookie); |
| 775 | this, the caller should relinquish and retire the cookie they have, and then | ||
| 776 | acquire a new one. | ||
| 777 | 807 | ||
| 778 | 808 | ||
| 779 | =========================== | 809 | =========================== |
