aboutsummaryrefslogtreecommitdiff
path: root/sys/fs
diff options
context:
space:
mode:
authorPav Lucistnik <pav@FreeBSD.org>2006-12-30 15:42:11 +0000
committerPav Lucistnik <pav@FreeBSD.org>2006-12-30 15:42:11 +0000
commit4048347c9fee8938e7dbe2a4ef48f99eed44aace (patch)
treeb1c853439789541c839a1d9bf34abb06d16e49ec /sys/fs
parentc76054aacb92610496f84a9a92ea9d4f44eef394 (diff)
Notes
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/udf/udf_vnops.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/fs/udf/udf_vnops.c b/sys/fs/udf/udf_vnops.c
index f76d542b010b..938b868cde91 100644
--- a/sys/fs/udf/udf_vnops.c
+++ b/sys/fs/udf/udf_vnops.c
@@ -57,6 +57,7 @@ extern struct iconv_functions *udf_iconv;
static vop_access_t udf_access;
static vop_getattr_t udf_getattr;
+static vop_open_t udf_open;
static vop_ioctl_t udf_ioctl;
static vop_pathconf_t udf_pathconf;
static vop_read_t udf_read;
@@ -80,6 +81,7 @@ static struct vop_vector udf_vnodeops = {
.vop_getattr = udf_getattr,
.vop_ioctl = udf_ioctl,
.vop_lookup = vfs_cache_lookup,
+ .vop_open = udf_open,
.vop_pathconf = udf_pathconf,
.vop_read = udf_read,
.vop_readdir = udf_readdir,
@@ -159,6 +161,16 @@ udf_access(struct vop_access_args *a)
a_mode, a->a_cred, NULL));
}
+static int
+udf_open(struct vop_open_args *ap) {
+ struct udf_node *np = VTON(ap->a_vp);
+ off_t fsize;
+
+ fsize = le64toh(np->fentry->inf_len);
+ vnode_create_vobject_off(ap->a_vp, fsize, ap->a_td);
+ return 0;
+}
+
static int mon_lens[2][12] = {
{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}