summaryrefslogtreecommitdiffstats
path: root/sys/fs/msdosfs
diff options
context:
space:
mode:
authortrhodes <trhodes@FreeBSD.org>2007-06-01 17:06:46 +0000
committertrhodes <trhodes@FreeBSD.org>2007-06-01 17:06:46 +0000
commit4173ae41551893cb869a1b5b3e064cc1db1e2d84 (patch)
treeed57fb0e4c45b000483abe91e36e2d81b18ad7f8 /sys/fs/msdosfs
parent867d47ed4e58a3b1b4d55046b91d92699ba5ec18 (diff)
downloadFreeBSD-src-4173ae41551893cb869a1b5b3e064cc1db1e2d84.zip
FreeBSD-src-4173ae41551893cb869a1b5b3e064cc1db1e2d84.tar.gz
Revert previous, part of NFS that I didn't know about.
Diffstat (limited to 'sys/fs/msdosfs')
-rw-r--r--sys/fs/msdosfs/msdosfs_vfsops.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/sys/fs/msdosfs/msdosfs_vfsops.c b/sys/fs/msdosfs/msdosfs_vfsops.c
index 699c0ef..3b53b0a 100644
--- a/sys/fs/msdosfs/msdosfs_vfsops.c
+++ b/sys/fs/msdosfs/msdosfs_vfsops.c
@@ -106,6 +106,7 @@ struct iconv_functions *msdosfs_iconv = NULL;
static int update_mp(struct mount *mp, struct thread *td);
static int mountmsdosfs(struct vnode *devvp, struct mount *mp,
struct thread *td);
+static vfs_fhtovp_t msdosfs_fhtovp;
static vfs_mount_t msdosfs_mount;
static vfs_root_t msdosfs_root;
static vfs_statfs_t msdosfs_statfs;
@@ -911,7 +912,26 @@ loop:
return (allerror);
}
+static int
+msdosfs_fhtovp(struct mount *mp, struct fid *fhp, struct vnode **vpp)
+{
+ struct msdosfsmount *pmp = VFSTOMSDOSFS(mp);
+ struct defid *defhp = (struct defid *) fhp;
+ struct denode *dep;
+ int error;
+
+ error = deget(pmp, defhp->defid_dirclust, defhp->defid_dirofs, &dep);
+ if (error) {
+ *vpp = NULLVP;
+ return (error);
+ }
+ *vpp = DETOV(dep);
+ vnode_create_vobject(*vpp, dep->de_FileSize, curthread);
+ return (0);
+}
+
static struct vfsops msdosfs_vfsops = {
+ .vfs_fhtovp = msdosfs_fhtovp,
.vfs_mount = msdosfs_mount,
.vfs_cmount = msdosfs_cmount,
.vfs_root = msdosfs_root,
OpenPOWER on IntegriCloud