Add VOP_SEEK
This commit is contained in:
parent
d83ba26e18
commit
97735c39e3
|
@ -207,6 +207,8 @@ extern int vn_rdwr(uio_rw_t uio, vnode_t *vp, void *addr, ssize_t len,
|
|||
offset_t off, uio_seg_t seg, int x1, rlim64_t x2,
|
||||
void *x3, ssize_t *residp);
|
||||
extern int vn_close(vnode_t *vp, int flags, int x1, int x2, void *x3, void *x4);
|
||||
extern int vn_seek(vnode_t *vp, offset_t o, offset_t *op, caller_context_t *ct);
|
||||
|
||||
extern int vn_remove(const char *path, uio_seg_t seg, int flags);
|
||||
extern int vn_rename(const char *path1, const char *path2, int x1);
|
||||
extern int vn_getattr(vnode_t *vp, vattr_t *vap, int flags, void *x3, void *x4);
|
||||
|
@ -230,6 +232,7 @@ vn_putpage(vnode_t *vp, offset_t off, ssize_t size,
|
|||
} /* vn_putpage() */
|
||||
|
||||
#define VOP_CLOSE vn_close
|
||||
#define VOP_SEEK vn_seek
|
||||
#define VN_RELE vn_rele
|
||||
#define VOP_GETATTR vn_getattr
|
||||
#define VOP_FSYNC vn_fsync
|
||||
|
|
|
@ -235,19 +235,31 @@ vn_close(vnode_t *vp, int flags, int x1, int x2, void *x3, void *x4)
|
|||
ASSERT(vp);
|
||||
ASSERT(vp->v_file);
|
||||
|
||||
rc = filp_close(vp->v_file, 0);
|
||||
vn_free(vp);
|
||||
rc = filp_close(vp->v_file, 0);
|
||||
vn_free(vp);
|
||||
|
||||
RETURN(-rc);
|
||||
} /* vn_close() */
|
||||
EXPORT_SYMBOL(vn_close);
|
||||
|
||||
static struct dentry *vn_lookup_hash(struct nameidata *nd)
|
||||
/* vn_seek() does not actually seek it only performs bounds checking on the
|
||||
* proposed seek. We perform minimal checking and allow vn_rdwr() to catch
|
||||
* anything more serious. */
|
||||
int
|
||||
vn_seek(vnode_t *vp, offset_t ooff, offset_t *noffp, caller_context_t *ct)
|
||||
{
|
||||
return ((*noffp < 0 || *noffp > MAXOFFSET_T) ? EINVAL : 0);
|
||||
}
|
||||
EXPORT_SYMBOL(vn_seek);
|
||||
|
||||
static struct dentry *
|
||||
vn_lookup_hash(struct nameidata *nd)
|
||||
{
|
||||
return lookup_one_len(nd->last.name, nd->nd_dentry, nd->last.len);
|
||||
} /* lookup_hash() */
|
||||
|
||||
static void vn_path_release(struct nameidata *nd)
|
||||
static void
|
||||
vn_path_release(struct nameidata *nd)
|
||||
{
|
||||
dput(nd->nd_dentry);
|
||||
mntput(nd->nd_mnt);
|
||||
|
|
Loading…
Reference in New Issue