LINUX.ORG.RU

не работает перезапись fopen(..., «w») на NFS


0

0

столкнулся с проблемой - не открывается существующий файл на запись на NFS разделе.
Создаётся, но не перезаписывается:

$ cat write.cpp

#include <cstdio>
#include <cerrno>
#include <cstring>

int main(int argc, char **argv)
{
    FILE *f = fopen("/tst", "w");

    if(!f)
    {
        printf("Cannot fopen %s\n", strerror(errno));
    }
    else
        fclose(f);

    return 0;
}

$
$ arm-linux-g++ -o write write.cpp
$ cp write /home/alex/arm/my/rootfs/t/
-----------------

захожу на прибор:

[root@rm9200 /root]$ /t/write
[root@rm9200 /root]$ /t/write
Cannot fopen Invalid argument

--------------------------

С меня NFS-ная шара export-ться так:

/home/alex/arm/my/rootfs 192.168.1.41 (rw,no_root_squash)

на приборе (всё происходит там) корневая система монтируется по NFS:

[root@rm9200 /root]$ cat /proc/cmdline
rootfs=/dev/nfs rw ip=192.168.1.41 nfsroot=192.168.1.15:/home/alex/arm/my/rootfs,nolock,hard elevator=as

В чём может быть проблема? Спасибо.
Ответ на: комментарий от fghj

-rw-r--r-- 1 root root 0 2008-01-05 10:19 /home/alex/arm/my/rootfs/tst

права в порядке. strace говорит тоже самое: при вызове open() на существующем файле возвращается -1. Если файл не существует, всё ок.

alex_custov ★★★★★
() автор топика
Ответ на: комментарий от Reset

нет, атрибуты по умолчанию - 0644

[root@rm9200 /root]$ /t/write
[root@rm9200 /root]$ /t/write
Cannot fopen Invalid argument

[root@rm9200 /root]$ stat /tst
  File: "/tst"
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: dh/13d  Inode: 1350759769  Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2008-01-05 12:16:50.000000000
Modify: 2008-01-05 12:16:50.000000000
Change: 2008-01-05 12:16:50.000000000

alex_custov ★★★★★
() автор топика
Ответ на: комментарий от fghj

я же написал в программе :))

EINVAL он же Invalid argument

[root@rm9200 /root]$ rm /tst
[root@rm9200 /root]$ strace /t/write
...

open("/tst", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
close(3)                                = 0

[root@rm9200 /root]$ strace /t/write
...

open("/tst", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EINVAL (Invalid argument)

alex_custov ★★★★★
() автор топика

> С меня NFS-ная шара export-ться так:

> /home/alex/arm/my/rootfs 192.168.1.41 (rw,no_root_squash)

Вот прям так, с пробелом между ip-адресом и атрибутами?

mv ★★★★★
()
Ответ на: комментарий от alex_custov

> open("/tst", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EINVAL (Invalid argument)

А глючит только с созданием в корне, или в какой-нибудь /usr/tst тоже?

mv ★★★★★
()
Ответ на: комментарий от mv

>>Вот прям так, с пробелом между ip-адресом и атрибутами?

Да.

Потестировать lsattr и другое смогу только во вторник, на работе.

alex_custov ★★★★★
() автор топика
Ответ на: комментарий от mv

>>А глючит только с созданием в корне, или в какой-нибудь /usr/tst тоже?

в /usr/tst такая же ошибка. Наверно что-то с NFS, а что не пойму.

alex_custov ★★★★★
() автор топика
Ответ на: комментарий от Reset

>>права на корень какие стоят?

на моей машине

drwxr-xr-x 16 root  root     4096 2008-01-05 14:21 rootfs

alex_custov ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.