static void fuse_clear_inode(struct inode *inode) { struct fuse_conn *fc = INO_FC(inode); struct fuse_in *in = NULL; struct fuse_forget_in *inarg = NULL; if(fc == NULL) return; in = kmalloc(sizeof(struct fuse_in), GFP_NOFS); if(!in) return; memset(in, 0, sizeof(struct fuse_in)); inarg = kmalloc(sizeof(struct fuse_forget_in), GFP_NOFS); if(!inarg) goto out_free; memset(inarg, 0, sizeof(struct fuse_forget_in)); inarg->version = inode->i_version; in->h.opcode = FUSE_FORGET; in->h.ino = inode->i_ino; in->numargs = 1; in->args[0].size = sizeof(struct fuse_forget_in); in->args[0].value = inarg; if(!request_send_noreply(fc, in)) return; out_free: kfree(inarg); kfree(in); }
void fuse_send_forget(struct fuse_conn *fc, struct fuse_req *req, u64 nodeid, u64 nlookup) { struct fuse_forget_in *inarg = &req->misc.forget_in; inarg->nlookup = nlookup; req->in.h.opcode = FUSE_FORGET; req->in.h.nodeid = nodeid; req->in.numargs = 1; req->in.args[0].size = sizeof(struct fuse_forget_in); req->in.args[0].value = inarg; request_send_noreply(fc, req); }