diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2016-02-08 08:26:45 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2016-02-08 08:26:45 +0100 |
commit | a22f59c178355ea3efe376739591a43c8ac877d1 (patch) | |
tree | f7c25bae127dab722dc5323740b6a2da069a4aae /fs | |
parent | 1379a5ef1e5229d9ea71293c7bb6cb89e6d706a4 (diff) | |
parent | b5778f9773df9e749158e43976a4d88e84ef79f8 (diff) | |
download | barebox-a22f59c178355ea3efe376739591a43c8ac877d1.tar.gz barebox-a22f59c178355ea3efe376739591a43c8ac877d1.tar.xz |
Merge branch 'for-next/net'
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfs.c | 21 |
1 files changed, 20 insertions, 1 deletions
@@ -133,7 +133,9 @@ struct nfs_priv { IPaddr_t server; char *path; uint16_t mount_port; + unsigned manual_mount_port:1; uint16_t nfs_port; + unsigned manual_nfs_port:1; uint32_t rpc_id; uint32_t rootfh_len; char rootfh[NFS3_FHSIZE]; @@ -1311,7 +1313,7 @@ static char *rootnfsopts; static void nfs_set_rootarg(struct nfs_priv *npriv, struct fs_device_d *fsdev) { - char *str; + char *str, *tmp; const char *ip; ip = ip_to_string(npriv->server); @@ -1319,6 +1321,19 @@ static void nfs_set_rootarg(struct nfs_priv *npriv, struct fs_device_d *fsdev) ip, npriv->path, rootnfsopts[0] ? "," : "", rootnfsopts); + /* forward specific mount options on demand */ + if (npriv->manual_nfs_port == 1) { + tmp = asprintf("%s,port=%hu", str, npriv->nfs_port); + free(str); + str = tmp; + } + + if (npriv->manual_mount_port == 1) { + tmp = asprintf("%s,mountport=%hu", str, npriv->mount_port); + free(str); + str = tmp; + } + fsdev_set_linux_rootarg(fsdev, str); free(str); @@ -1367,6 +1382,8 @@ static int nfs_probe(struct device_d *dev) goto err2; } npriv->mount_port = ret; + } else { + npriv->manual_mount_port = 1; } debug("mount port: %hu\n", npriv->mount_port); @@ -1378,6 +1395,8 @@ static int nfs_probe(struct device_d *dev) goto err2; } npriv->nfs_port = ret; + } else { + npriv->manual_nfs_port = 1; } debug("nfs port: %d\n", npriv->nfs_port); |