123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package mount
- import (
- "context"
- "github.com/seaweedfs/seaweedfs/weed/util"
- )
- // Forget is called when the kernel discards entries from its
- // dentry cache. This happens on unmount, and when the kernel
- // is short on memory. Since it is not guaranteed to occur at
- // any moment, and since there is no return value, Forget
- // should not do I/O, as there is no channel to report back
- // I/O errors.
- // from https://github.com/libfuse/libfuse/blob/master/include/fuse_lowlevel.h
- /**
- * Forget about an inode
- *
- * This function is called when the kernel removes an inode
- * from its internal caches.
- *
- * The inode's lookup count increases by one for every call to
- * fuse_reply_entry and fuse_reply_create. The nlookup parameter
- * indicates by how much the lookup count should be decreased.
- *
- * Inodes with a non-zero lookup count may receive request from
- * the kernel even after calls to unlink, rmdir or (when
- * overwriting an existing file) rename. Filesystems must handle
- * such requests properly and it is recommended to defer removal
- * of the inode until the lookup count reaches zero. Calls to
- * unlink, rmdir or rename will be followed closely by forget
- * unless the file or directory is open, in which case the
- * kernel issues forget only after the release or releasedir
- * calls.
- *
- * Note that if a file system will be exported over NFS the
- * inodes lifetime must extend even beyond forget. See the
- * generation field in struct fuse_entry_param above.
- *
- * On unmount the lookup count for all inodes implicitly drops
- * to zero. It is not guaranteed that the file system will
- * receive corresponding forget messages for the affected
- * inodes.
- *
- * Valid replies:
- * fuse_reply_none
- *
- * @param req request handle
- * @param ino the inode number
- * @param nlookup the number of lookups to forget
- */
- /*
- https://libfuse.github.io/doxygen/include_2fuse__lowlevel_8h.html
- int fuse_reply_entry ( fuse_req_t req,
- const struct fuse_entry_param * e
- )
- Reply with a directory entry
- Possible requests: lookup, mknod, mkdir, symlink, link
- Side effects: increments the lookup count on success
- */
- func (wfs *WFS) Forget(nodeid, nlookup uint64) {
- wfs.inodeToPath.Forget(nodeid, nlookup, func(dir util.FullPath) {
- wfs.metaCache.DeleteFolderChildren(context.Background(), dir)
- })
- wfs.fhmap.ReleaseByInode(nodeid)
- }
|