linux/fs/9p/fid.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * V9FS FID Management
   4 *
   5 *  Copyright (C) 2005 by Eric Van Hensbergen <ericvh@gmail.com>
   6 */
   7#ifndef FS_9P_FID_H
   8#define FS_9P_FID_H
   9#include <linux/list.h>
  10
  11struct p9_fid *v9fs_fid_lookup(struct dentry *dentry);
  12static inline struct p9_fid *v9fs_parent_fid(struct dentry *dentry)
  13{
  14        return v9fs_fid_lookup(dentry->d_parent);
  15}
  16void v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid);
  17struct p9_fid *v9fs_writeback_fid(struct dentry *dentry);
  18void v9fs_open_fid_add(struct inode *inode, struct p9_fid *fid);
  19static inline struct p9_fid *clone_fid(struct p9_fid *fid)
  20{
  21        return IS_ERR(fid) ? fid :  p9_client_walk(fid, 0, NULL, 1);
  22}
  23static inline struct p9_fid *v9fs_fid_clone(struct dentry *dentry)
  24{
  25        struct p9_fid *fid, *nfid;
  26
  27        fid = v9fs_fid_lookup(dentry);
  28        if (!fid || IS_ERR(fid))
  29                return fid;
  30
  31        nfid = clone_fid(fid);
  32        p9_client_clunk(fid);
  33        return nfid;
  34}
  35#endif
  36