/*===========================================================================* * sef_cb_init_fresh * *===========================================================================*/ PRIVATE int sef_cb_init_fresh(int type, sef_init_info_t *info) { /* Initialize the Minix file server. */ int i; /* Defaults */ opt.use_orlov = TRUE; opt.mfsalloc = FALSE; opt.use_reserved_blocks = FALSE; opt.block_with_super = 0; opt.use_prealloc = FALSE; /* If we have been given an options string, parse options from there. */ for (i = 1; i < env_argc - 1; i++) if (!strcmp(env_argv[i], "-o")) optset_parse(optset_table, env_argv[++i]); may_use_vmcache = 1; /* Init inode table */ for (i = 0; i < NR_INODES; ++i) { inode[i].i_count = 0; cch[i] = 0; } init_inode_cache(); SELF_E = getprocnr(); /* just a small number before we find out the block size at mount time */ buf_pool(10); fs_block_size = _MIN_BLOCK_SIZE; return(OK); }
/*===========================================================================* * sef_cb_init_fresh * *===========================================================================*/ static int sef_cb_init_fresh(int type, sef_init_info_t *info) { /* Initialize the pipe file server. */ int i; struct passwd *pw; /* Initialize main loop parameters. */ exitsignaled = 0; /* No exit request seen yet. */ busy = 0; /* Server is not 'busy' (i.e., inodes in use). */ /* Init inode table */ for (i = 0; i < PFS_NR_INODES; ++i) { inode[i].i_count = 0; } init_inode_cache(); uds_init(); buf_pool(); /* Drop root privileges */ if ((pw = getpwnam(SERVICE_LOGIN)) == NULL) { printf("PFS: unable to retrieve uid of SERVICE_LOGIN, " "still running as root"); } else if (setuid(pw->pw_uid) != 0) { panic("unable to drop privileges"); } SELF_E = getprocnr(); return(OK); }
/*===========================================================================* * set_blocksize * *===========================================================================*/ PUBLIC void set_blocksize(unsigned int blocksize) { struct buf *bp; struct inode *rip; ASSERT(blocksize > 0); for (bp = &buf[0]; bp < &buf[nr_bufs]; bp++) if(bp->b_count != 0) panic("change blocksize with buffer in use"); for (rip = &inode[0]; rip < &inode[NR_INODES]; rip++) if (rip->i_count > 0) panic("change blocksize with inode in use"); buf_pool(nr_bufs); fs_block_size = blocksize; }
/*===========================================================================* * sef_cb_init_fresh * *===========================================================================*/ PRIVATE int sef_cb_init_fresh(int type, sef_init_info_t *info) { /* Initialize the Minix file server. */ int i, r; /* Defaults */ opt.use_orlov = TRUE; opt.mfsalloc = FALSE; opt.use_reserved_blocks = FALSE; opt.block_with_super = 0; opt.use_prealloc = FALSE; /* If we have been given an options string, parse options from there. */ for (i = 1; i < env_argc - 1; i++) if (!strcmp(env_argv[i], "-o")) optset_parse(optset_table, env_argv[++i]); may_use_vmcache = 1; /* Init inode table */ for (i = 0; i < NR_INODES; ++i) { inode[i].i_count = 0; cch[i] = 0; } init_inode_cache(); /* Init driver mapping */ for (i = 0; i < NR_DEVICES; ++i) driver_endpoints[i].driver_e = NONE; SELF_E = getprocnr(); buf_pool(DEFAULT_NR_BUFS); fs_block_size = _MIN_BLOCK_SIZE; fs_m_in.m_type = FS_READY; if ((r = send(VFS_PROC_NR, &fs_m_in)) != OK) { panic("Error sending login to VFS: %d", r); } return(OK); }
/*===========================================================================* * init_server * *===========================================================================*/ PRIVATE void init_server(void) { int i; /* Init inode table */ for (i = 0; i < NR_INODES; ++i) { inode[i].i_count = 0; cch[i] = 0; } init_inode_cache(); /* Init driver mapping */ for (i = 0; i < NR_DEVICES; ++i) driver_endpoints[i].driver_e = NONE; SELF_E = getprocnr(); buf_pool(); fs_block_size = _MIN_BLOCK_SIZE; }
/*===========================================================================* * cache_resize * *===========================================================================*/ static void cache_resize(unsigned int blocksize, unsigned int bufs) { struct buf *bp; struct inode *rip; #define MINBUFS 10 assert(blocksize > 0); assert(bufs >= MINBUFS); for (bp = &buf[0]; bp < &buf[nr_bufs]; bp++) if(bp->b_count != 0) panic("change blocksize with buffer in use"); for (rip = &inode[0]; rip < &inode[NR_INODES]; rip++) if (rip->i_count > 0) panic("change blocksize with inode in use"); buf_pool(bufs); fs_block_size = blocksize; super_start = SUPER_BLOCK_BYTES / fs_block_size; super_end = (SUPER_BLOCK_BYTES + _MIN_BLOCK_SIZE - 1) / fs_block_size; }
/*===========================================================================* * sef_cb_init_fresh * *===========================================================================*/ PRIVATE int sef_cb_init_fresh(int type, sef_init_info_t *info) { /* Initialize the pipe file server. */ int i; /* Initialize main loop parameters. */ exitsignaled = 0; /* No exit request seen yet. */ busy = 0; /* Server is not 'busy' (i.e., inodes in use). */ /* Init inode table */ for (i = 0; i < NR_INODES; ++i) { inode[i].i_count = 0; } init_inode_cache(); uds_init(); SELF_E = getprocnr(); buf_pool(); driver_announce(); return(OK); }