Exemple #1
0
static void migrate_nfs_server_set_fsinfo(struct nfs_server *server,
        struct nfs_fh *mntfh,
        struct nfs_fsinfo *fsinfo)
{
    unsigned long max_rpc_payload;

    /* Work out a lot of parameters */
    if (server->rsize == 0)
        server->rsize = nfs_block_size(fsinfo->rtpref, NULL);
    if (server->wsize == 0)
        server->wsize = nfs_block_size(fsinfo->wtpref, NULL);

    if (fsinfo->rtmax >= 512 && server->rsize > fsinfo->rtmax)
        server->rsize = nfs_block_size(fsinfo->rtmax, NULL);
    if (fsinfo->wtmax >= 512 && server->wsize > fsinfo->wtmax)
        server->wsize = nfs_block_size(fsinfo->wtmax, NULL);

    max_rpc_payload = nfs_block_size(rpc_max_payload(server->client), NULL);
    if (server->rsize > max_rpc_payload)
        server->rsize = max_rpc_payload;
    if (server->rsize > NFS_MAX_FILE_IO_SIZE)
        server->rsize = NFS_MAX_FILE_IO_SIZE;
    server->rpages = (server->rsize + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;

    server->backing_dev_info.name = "nfs";
    server->backing_dev_info.ra_pages = server->rpages * NFS_MAX_READAHEAD;

    if (server->wsize > max_rpc_payload)
        server->wsize = max_rpc_payload;
    if (server->wsize > NFS_MAX_FILE_IO_SIZE)
        server->wsize = NFS_MAX_FILE_IO_SIZE;
    server->wpages = (server->wsize + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;

    server->wtmult = nfs_block_bits(fsinfo->wtmult, NULL);

    server->dtsize = nfs_block_size(fsinfo->dtpref, NULL);
    if (server->dtsize > PAGE_CACHE_SIZE * NFS_MAX_READDIR_PAGES)
        server->dtsize = PAGE_CACHE_SIZE * NFS_MAX_READDIR_PAGES;
    if (server->dtsize > server->rsize)
        server->dtsize = server->rsize;

    if (server->flags & NFS_MOUNT_NOAC) {
        server->acregmin = server->acregmax = 0;
        server->acdirmin = server->acdirmax = 0;
    }

    server->maxfilesize = fsinfo->maxfilesize;

    server->time_delta = fsinfo->time_delta;

    /* We're airborne Set socket buffersize */
    rpc_setbufsize(server->client, server->wsize + 100, server->rsize + 100);
}
Exemple #2
0
/*
 * Initialise the common bits of the superblock
 */
static inline void nfs_initialise_sb(struct super_block *sb)
{
	struct nfs_server *server = NFS_SB(sb);

	sb->s_magic = NFS_SUPER_MAGIC;

	/* We probably want something more informative here */
	snprintf(sb->s_id, sizeof(sb->s_id),
		 "%x:%x", MAJOR(sb->s_dev), MINOR(sb->s_dev));

	if (sb->s_blocksize == 0)
		sb->s_blocksize = nfs_block_bits(server->wsize,
						 &sb->s_blocksize_bits);

	if (server->flags & NFS_MOUNT_NOAC)
		sb->s_flags |= MS_SYNCHRONOUS;

	nfs_super_set_maxbytes(sb, server->maxfilesize);
}