On 2012-07-06 08:04, Dunrong Huang wrote: > Users may pass the following parameters to qemu: > $ qemu-kvm -net nic -net user,smb= ... > $ qemu-kvm -net nic -net user,smb ... > $ qemu-kvm -net nic -net user,smb=bad_directory ... > > In these cases, qemu started successfully while samba server > failed to start. Users will confuse since samba server > failed silently without any indication of what it did wrong. > > To avoid it, we check whether the shared directory exist and > if users have permission to access this directory when QEMU's > "built-in" SMB server is enabled. > > Signed-off-by: Dunrong Huang <riegama...@gmail.com> > --- > net/slirp.c | 12 ++++++++++++ > 1 files changed, 12 insertions(+), 0 deletions(-) > > diff --git a/net/slirp.c b/net/slirp.c > index 37b6ccf..ff36fa2 100644 > --- a/net/slirp.c > +++ b/net/slirp.c > @@ -489,6 +489,18 @@ static int slirp_smb(SlirpState* s, const char > *exported_dir, > char smb_cmdline[128]; > FILE *f; > > + if (access(CONFIG_SMBD_COMMAND, F_OK)) { > + error_report("could not find '%s', please install it", > + CONFIG_SMBD_COMMAND); > + return -1; > + } > + > + if (access(exported_dir, R_OK | X_OK)) { > + error_report("no such directory '%s', or you do not have permission " > + "to access it, please check it", exported_dir); > + return -1; > + } > + > snprintf(s->smb_dir, sizeof(s->smb_dir), "/tmp/qemu-smb.%ld-%d", > (long)getpid(), instance++); > if (mkdir(s->smb_dir, 0700) < 0) { >
Thanks, applied to slirp queue. I added a tiny patch on top that reports the exact error returned by access(): diff --git a/net/slirp.c b/net/slirp.c index eb80889..b82eab0 100644 --- a/net/slirp.c +++ b/net/slirp.c @@ -504,8 +504,8 @@ static int slirp_smb(SlirpState* s, const char *exported_dir, } if (access(exported_dir, R_OK | X_OK)) { - error_report("no such directory '%s', or you do not have permission " - "to access it, please check it", exported_dir); + error_report("error accessing shared directory '%s': %s", + exported_dir, strerror(errno)); return -1; } Jan
signature.asc
Description: OpenPGP digital signature