static void sqfs_ll_op_forget(fuse_req_t req, fuse_ino_t ino, unsigned long nlookup) { sqfs_ll_i lli; sqfs_ll_iget(req, &lli, SQFS_FUSE_INODE_NONE); lli.ll->ino_forget(lli.ll, ino, nlookup); fuse_reply_none(req); }
static void do_forget(fuse_req_t req, fuse_ino_t nodeid, const void *inarg) { struct fuse_forget_in *arg = (struct fuse_forget_in *) inarg; if (req->f->op.forget) req->f->op.forget(req, nodeid, arg->nlookup); else fuse_reply_none(req); }
static void lo_forget(fuse_req_t req, fuse_ino_t ino, uint64_t nlookup) { struct lo_inode *inode = lo_inode(req, ino); if (lo_debug(req)) { fprintf(stderr, " forget %lli %lli -%lli\n", (unsigned long long) ino, (unsigned long long) inode->nlookup, (unsigned long long) nlookup); } assert(inode->nlookup >= nlookup); inode->nlookup -= nlookup; if (!inode->nlookup) lo_free(inode); fuse_reply_none(req); }
static void serve_forget(fuse_req_t req, fuse_ino_t ino, unsigned long nlookup) { Dprintf("%s(ino = %lu, nlookup = %lu)\n", __FUNCTION__, ino, nlookup); (void) hash_map_erase(reqmount(req)->parents, (void *) ino); fuse_reply_none(req); }