Назад | Перейти на главную страницу

Ошибка io при отсутствии соответствия glob в cifs OSX -> debian jessie mount

Использование подстановочного знака / глобуса (по крайней мере * и ?) в bash вызывает input/output error когда на самабе нет спичек cifs смонтировать в Debain Jessie 8.2. В других файловых системах ожидаемый No such file дана ошибка.

Та же самая точка монтирования samaba на ящике archlinux и без ошибки io. Машина Archlinux mount.cifs понимает mapposix. Я подозреваю что mount.cifs на Джесси не позволяет / понять mapposix как-то с этим связано.

Есть ли ошибки вокруг io для *?


 ## works as expected on cifs mount from centos server
 ls /data/Luna1/*adfadf*
 # ls: cannot access /data/Luna1/*adfadf*: No such file or director


 ### unexpected io failure on osx mounted on debian
 mkdir /Volumes/Phillips/testdir

 ## no files match in empty directory: io error
 ls /Volumes/Phillips/testdir/*
 #  ls: reading directory /Volumes/Phillips/testdir/*: Input/output error

 ## glob matches, ls results
 touch /Volumes/Phillips/testdir/file
 ls /Volumes/Phillips/testdir/*
 #  /Volumes/Phillips/testdir/file

 ## glob matches, ls results
 ls /Volumes/Phillips/testdir/*il*
 # /Volumes/Phillips/testdir/file

 ## no files match: io error
 ls /Volumes/Phillips/testdir/*foobar*
 #  ls: reading directory /Volumes/Phillips/testdir/*foobar*: Input/output error

 # fails as expected
 ls /*filedoesnotexist*
 #  ls: cannot access /*filedoesnotexist*: No such file or directory

 ## zsh handles this correctly
 zsh -c "ls /Volumes/Phillips/*dne*"
 #  zsh:1: no matches found: /Volumes/Phillips/*dne*

Системная информация:

cat /etc/debian_version 
   8.2  
dpkg -l cifs-utils 
   ii  cifs-utils     2:6.4-1      amd64        Common Internet File 


mount |grep cifs
//gromit/Luna1/ on /data/Luna1 type cifs (rw,relatime,vers=1.0,cache=strict,username=foranw,domain=GROMIT,uid=1000,forceuid,gid=1000,forcegid,addr=10.145.64.52,unix,posixpaths,serverino,nobrl,acl,rsize=61440,wsize=65536,actimeo=1)

//skynet/Phillips/ on /Volumes/Phillips type cifs (rw,nosuid,nodev,noexec,relatime,vers=1.0,cache=strict,username=lncd,domain=SKYNET,uid=1000,forceuid,gid=1000,forcegid,addr=10.145.64.109,file_mode=0755,dir_mode=0755,nounix,nobrl,rsize=61440,wsize=65536,actimeo=1)

Мой текущий обходной путь - прикоснуться к файлу, который соответствует глобусу, чтобы избежать ошибки.

Это особенно хорошо работает для FSL bet где rm вызывается с глобусом, который ничего не соответствует. Интересно, что вместо ошибки ввода-вывода он выдает «каталог существует» (когда его нет).

bet 002_mprage_hpf 002_mprage_hpf_brain -m -f 0.1
# /bin/rm: cannot remove '002_mprage_hpf_brain_tmp*': Is a directory.
[ $? -ne 0 ] && echo failed
# failed

против

touch 002_mprage_hpf_brain_tmp_hackyhackhack
bet 002_mprage_hpf 002_mprage_hpf_brain -m -f 0.1
[ $? -ne 0 ] && echo failed
# $? == 0