|  | /* SPDX-License-Identifier: GPL-2.0-only */ | 
|  | /* | 
|  | * V9FS FID Management | 
|  | * | 
|  | *  Copyright (C) 2005 by Eric Van Hensbergen <ericvh@gmail.com> | 
|  | */ | 
|  | #ifndef FS_9P_FID_H | 
|  | #define FS_9P_FID_H | 
|  | #include <linux/list.h> | 
|  |  | 
|  | struct p9_fid *v9fs_fid_lookup(struct dentry *dentry); | 
|  | static inline struct p9_fid *v9fs_parent_fid(struct dentry *dentry) | 
|  | { | 
|  | return v9fs_fid_lookup(dentry->d_parent); | 
|  | } | 
|  | void v9fs_fid_add(struct dentry *dentry, struct p9_fid **fid); | 
|  | struct p9_fid *v9fs_writeback_fid(struct dentry *dentry); | 
|  | void v9fs_open_fid_add(struct inode *inode, struct p9_fid **fid); | 
|  | static inline struct p9_fid *clone_fid(struct p9_fid *fid) | 
|  | { | 
|  | return IS_ERR(fid) ? fid :  p9_client_walk(fid, 0, NULL, 1); | 
|  | } | 
|  | static inline struct p9_fid *v9fs_fid_clone(struct dentry *dentry) | 
|  | { | 
|  | struct p9_fid *fid, *nfid; | 
|  |  | 
|  | fid = v9fs_fid_lookup(dentry); | 
|  | if (!fid || IS_ERR(fid)) | 
|  | return fid; | 
|  |  | 
|  | nfid = clone_fid(fid); | 
|  | p9_fid_put(fid); | 
|  | return nfid; | 
|  | } | 
|  | #endif |