vfs_default.c (194601) | vfs_default.c (197680) |
---|---|
1/*- 2 * Copyright (c) 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed 6 * to Berkeley by John Heidemann of the UCLA Ficus project. 7 * 8 * Source: * @(#)i405_init.c 2.10 92/04/27 UCLA Ficus project --- 19 unchanged lines hidden (view full) --- 28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32 * SUCH DAMAGE. 33 */ 34 35#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed 6 * to Berkeley by John Heidemann of the UCLA Ficus project. 7 * 8 * Source: * @(#)i405_init.c 2.10 92/04/27 UCLA Ficus project --- 19 unchanged lines hidden (view full) --- 28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32 * SUCH DAMAGE. 33 */ 34 35#include <sys/cdefs.h> |
36__FBSDID("$FreeBSD: head/sys/kern/vfs_default.c 194601 2009-06-21 19:21:01Z kib $"); | 36__FBSDID("$FreeBSD: head/sys/kern/vfs_default.c 197680 2009-10-01 17:22:03Z trasz $"); |
37 38#include <sys/param.h> 39#include <sys/systm.h> 40#include <sys/bio.h> 41#include <sys/buf.h> 42#include <sys/conf.h> 43#include <sys/event.h> 44#include <sys/kernel.h> --- 33 unchanged lines hidden (view full) --- 78#define DIRENT_MINSIZE (sizeof(struct dirent) - (MAXNAMLEN+1) + 4) 79 80/* 81 * This vnode table stores what we want to do if the filesystem doesn't 82 * implement a particular VOP. 83 * 84 * If there is no specific entry here, we will return EOPNOTSUPP. 85 * | 37 38#include <sys/param.h> 39#include <sys/systm.h> 40#include <sys/bio.h> 41#include <sys/buf.h> 42#include <sys/conf.h> 43#include <sys/event.h> 44#include <sys/kernel.h> --- 33 unchanged lines hidden (view full) --- 78#define DIRENT_MINSIZE (sizeof(struct dirent) - (MAXNAMLEN+1) + 4) 79 80/* 81 * This vnode table stores what we want to do if the filesystem doesn't 82 * implement a particular VOP. 83 * 84 * If there is no specific entry here, we will return EOPNOTSUPP. 85 * |
86 * Note that every filesystem has to implement either vop_access 87 * or vop_accessx; failing to do so will result in immediate crash 88 * due to stack overflow, as vop_stdaccess() calls vop_stdaccessx(), 89 * which calls vop_stdaccess() etc. |
|
86 */ 87 88struct vop_vector default_vnodeops = { 89 .vop_default = NULL, 90 .vop_bypass = VOP_EOPNOTSUPP, 91 | 90 */ 91 92struct vop_vector default_vnodeops = { 93 .vop_default = NULL, 94 .vop_bypass = VOP_EOPNOTSUPP, 95 |
96 .vop_access = vop_stdaccess, |
|
92 .vop_accessx = vop_stdaccessx, 93 .vop_advlock = vop_stdadvlock, 94 .vop_advlockasync = vop_stdadvlockasync, 95 .vop_bmap = vop_stdbmap, 96 .vop_close = VOP_NULL, 97 .vop_fsync = VOP_NULL, 98 .vop_getpages = vop_stdgetpages, 99 .vop_getwritemount = vop_stdgetwritemount, --- 221 unchanged lines hidden (view full) --- 321 } while (len > 0 || !eofflag); 322 323out: 324 free(dirbuf, M_TEMP); 325 return (found); 326} 327 328int | 97 .vop_accessx = vop_stdaccessx, 98 .vop_advlock = vop_stdadvlock, 99 .vop_advlockasync = vop_stdadvlockasync, 100 .vop_bmap = vop_stdbmap, 101 .vop_close = VOP_NULL, 102 .vop_fsync = VOP_NULL, 103 .vop_getpages = vop_stdgetpages, 104 .vop_getwritemount = vop_stdgetwritemount, --- 221 unchanged lines hidden (view full) --- 326 } while (len > 0 || !eofflag); 327 328out: 329 free(dirbuf, M_TEMP); 330 return (found); 331} 332 333int |
334vop_stdaccess(struct vop_access_args *ap) 335{ 336 337 KASSERT((ap->a_accmode & ~(VEXEC | VWRITE | VREAD | VADMIN | 338 VAPPEND)) == 0, ("invalid bit in accmode")); 339 340 return (VOP_ACCESSX(ap->a_vp, ap->a_accmode, ap->a_cred, ap->a_td)); 341} 342 343int |
|
329vop_stdaccessx(struct vop_accessx_args *ap) 330{ 331 int error; 332 accmode_t accmode = ap->a_accmode; 333 334 error = vfs_unixify_accmode(&accmode); 335 if (error != 0) 336 return (error); --- 626 unchanged lines hidden --- | 344vop_stdaccessx(struct vop_accessx_args *ap) 345{ 346 int error; 347 accmode_t accmode = ap->a_accmode; 348 349 error = vfs_unixify_accmode(&accmode); 350 if (error != 0) 351 return (error); --- 626 unchanged lines hidden --- |