SHA256
1
0
forked from pool/elilo
elilo/elilo-blocksize.diff
2013-10-24 18:32:17 +00:00

57 lines
2.0 KiB
Diff

---
config.c | 4 ++++
elilo.h | 2 ++
fs/netfs.c | 3 ++-
3 files changed, 8 insertions(+), 1 deletion(-)
--- a/config.c
+++ b/config.c
@@ -119,6 +119,7 @@ typedef struct {
UINTN timeout;
UINTN verbose;
UINTN edd30_no_force; /* don't force EDD30 if not set */
+ UINTN blocksize;
} global_config_t;
/*
@@ -143,6 +144,7 @@ static config_option_t global_common_opt
{OPT_STR, OPT_GLOBAL, L"default", NULL, NULL, global_config.default_image_name},
{OPT_NUM, OPT_GLOBAL, L"timeout", NULL, NULL, &global_config.timeout},
{OPT_NUM, OPT_GLOBAL, L"delay", NULL, NULL, &global_config.delay},
+{OPT_NUM, OPT_GLOBAL, L"block-size", NULL, NULL, &global_config.blocksize},
{OPT_BOOL, OPT_GLOBAL, L"debug", NULL, NULL, &global_config.debug},
{OPT_BOOL, OPT_GLOBAL, L"prompt", NULL, NULL, &global_config.prompt},
{OPT_NUM, OPT_GLOBAL, L"verbose", NULL, check_verbosity, &global_config.verbose},
@@ -827,6 +829,8 @@ update_elilo_opt(VOID)
if (global_config.debug) elilo_opt.debug = 1;
if (global_config.prompt) elilo_opt.prompt = 1;
+ if (global_config.blocksize)
+ elilo_opt.blocksize = global_config.blocksize;
/*
* update only if not set on command line
--- a/elilo.h
+++ b/elilo.h
@@ -105,6 +105,8 @@ typedef struct {
UINTN prompt; /* enter interactive mode */
UINTN parse_only; /* only parses the config file */
UINTN timeout; /* timeout before leaving interactive mode*/
+ UINTN blocksize; /* user-specified block-size for I/O */
+ /* (currently only used for TFTP!) */
image_opt_t img_opt; /* architecture independent per image options*/
--- a/fs/netfs.c
+++ b/fs/netfs.c
@@ -522,7 +522,8 @@ netfs_open(netfs_interface_t *this, CHAR
netfs_fd_t *f;
EFI_STATUS status;
CHAR8 ascii_name[FILENAME_MAXLEN];
- UINTN blocksize = NETFS_DEFAULT_BLOCKSIZE;
+ UINTN blocksize = (elilo_opt.blocksize > 0) ?
+ elilo_opt.blocksize : NETFS_DEFAULT_BLOCKSIZE;
UINTN prev_netbufsize, retries = 0;
BOOLEAN server_provided_filesize = FALSE;