diff --git a/fs/9p/fid.c b/fs/9p/fid.c index de009a33e0e2..a5b716b716d4 100644 --- a/fs/9p/fid.c +++ b/fs/9p/fid.c @@ -67,6 +67,7 @@ struct p9_fid *v9fs_fid_find_inode(struct inode *inode, bool want_writeable, spin_lock(&inode->i_lock); h = (struct hlist_head *)&inode->i_private; + printk("ino: %p, inode fid list is empty: %d, %s\n", inode, hlist_empty(h), __func__); hlist_for_each_entry(fid, h, ilist) { if (any || uid_eq(fid->uid, uid)) { if (want_writeable && !v9fs_is_writeable(fid->mode)) { diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c index 348cc90bf9c5..5329b83829e4 100644 --- a/fs/9p/vfs_file.c +++ b/fs/9p/vfs_file.c @@ -44,6 +44,7 @@ int v9fs_file_open(struct inode *inode, struct file *file) struct p9_fid *fid; int omode; + printk("1ind: %p, %s\n", inode, __func__); p9_debug(P9_DEBUG_VFS, "inode: %p file: %p\n", inode, file); v9ses = v9fs_inode2v9ses(inode); if (v9fs_proto_dotl(v9ses)) @@ -54,8 +55,10 @@ int v9fs_file_open(struct inode *inode, struct file *file) fid = file->private_data; if (!fid) { fid = v9fs_fid_clone(file_dentry(file)); - if (IS_ERR(fid)) - return PTR_ERR(fid); + if (IS_ERR(fid)) { + err = PTR_ERR(fid); + goto error; + } if ((v9ses->cache & CACHE_WRITEBACK) && (omode & P9_OWRITE)) { int writeback_omode = (omode & ~P9_OWRITE) | P9_ORDWR; @@ -72,7 +75,7 @@ int v9fs_file_open(struct inode *inode, struct file *file) } if (err < 0) { p9_fid_put(fid); - return err; + goto error; } if ((file->f_flags & O_APPEND) && (!v9fs_proto_dotu(v9ses) && !v9fs_proto_dotl(v9ses))) @@ -87,8 +90,13 @@ int v9fs_file_open(struct inode *inode, struct file *file) file->f_mode & FMODE_WRITE); #endif v9fs_fid_add_modes(fid, v9ses->flags, v9ses->cache, file->f_flags); + printk("2ind: %p, %s\n", inode, __func__); v9fs_open_fid_add(inode, &fid); return 0; +error: + printk("err: %d, ind: %p, %s\n", err, inode, __func__); + return err; + } /** diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c index fd72fc38c8f5..29a055f2fe7b 100644 --- a/fs/9p/vfs_inode.c +++ b/fs/9p/vfs_inode.c @@ -738,6 +738,7 @@ v9fs_vfs_atomic_open(struct inode *dir, struct dentry *dentry, struct inode *inode; int p9_omode; + printk("1ind: %p, %s\n", inode, __func__); if (d_in_lookup(dentry)) { res = v9fs_vfs_lookup(dir, dentry, 0); if (IS_ERR(res)) @@ -781,6 +782,7 @@ v9fs_vfs_atomic_open(struct inode *dir, struct dentry *dentry, #endif v9fs_fid_add_modes(fid, v9ses->flags, v9ses->cache, file->f_flags); + printk("2ind: %p, %s\n", inode, __func__); v9fs_open_fid_add(inode, &fid); file->f_mode |= FMODE_CREATED; @@ -789,6 +791,7 @@ v9fs_vfs_atomic_open(struct inode *dir, struct dentry *dentry, return err; error: + printk("err: %d, ind: %p, %s\n", err, inode, __func__); p9_fid_put(fid); goto out; } diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c index c61b97bd13b9..3c4c744af0e8 100644 --- a/fs/9p/vfs_inode_dotl.c +++ b/fs/9p/vfs_inode_dotl.c @@ -194,6 +194,7 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct dentry *dentry, struct posix_acl *pacl = NULL, *dacl = NULL; struct dentry *res = NULL; + printk("1ind: %p, %s\n", inode, __func__); if (d_in_lookup(dentry)) { res = v9fs_vfs_lookup(dir, dentry, 0); if (IS_ERR(res)) @@ -284,9 +285,11 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct dentry *dentry, } #endif v9fs_fid_add_modes(ofid, v9ses->flags, v9ses->cache, flags); + printk("2ind: %p, %s\n", inode, __func__); v9fs_open_fid_add(inode, &ofid); file->f_mode |= FMODE_CREATED; out: + printk("err: %d, ind: %p, %s\n", err, inode, __func__); p9_fid_put(dfid); p9_fid_put(ofid); p9_fid_put(fid);