From: Linus Torvalds Date: Mon, 10 Jan 2011 15:43:54 +0000 (-0800) Subject: Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi... X-Git-Tag: firefly_0821_release~7613^2~3094 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=7d44b0440147d83a65270205b22e7d365de28948;p=firefly-linux-kernel-4.4.55.git Merge branch 'for-linus' of git://git./linux/kernel/git/mszeredi/fuse * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse: fuse: fix ioctl ABI fuse: allow batching of FORGET requests fuse: separate queue for FORGET requests fuse: ioctl cleanup Fix up trivial conflict in fs/fuse/inode.c due to RCU lookup having done the RCU-freeing of the inode in fuse_destroy_inode(). --- 7d44b0440147d83a65270205b22e7d365de28948 diff --cc fs/fuse/inode.c index a8b31da19b93,7ba4d351da65..f62b32cffea9 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c @@@ -111,24 -109,10 +116,10 @@@ static void fuse_destroy_inode(struct i struct fuse_inode *fi = get_fuse_inode(inode); BUG_ON(!list_empty(&fi->write_files)); BUG_ON(!list_empty(&fi->queued_writes)); - if (fi->forget_req) - fuse_request_free(fi->forget_req); + kfree(fi->forget); - kmem_cache_free(fuse_inode_cachep, inode); + call_rcu(&inode->i_rcu, fuse_i_callback); } - 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; - fuse_request_send_noreply(fc, req); - } - static void fuse_evict_inode(struct inode *inode) { truncate_inode_pages(&inode->i_data, 0);