Re: ограничение файловой системы
On Sat, 5 Jun 2004, Yuri N. Glibovetz wrote:
> read/write действительно не влияют. А вот выбор open/open64 влияет.
А где Вы нашли open64? В glibc? Потому, что в ядре такого нет.
Вот в `fs/open.c' оно само определяет на какой архитектуре работает:
...
long sys_open(const char * filename, int flags, int mode)
{
char * tmp;
int fd, error;
#if BITS_PER_LONG != 32
flags |= O_LARGEFILE;
#endif
...
Кстати, получается Linux не может работать ни на одной <32-разрядной
архитектуре, если у них в ядре такое ;-)
Кстати об lseek. Тут вообще забавный код:
...
loff_t generic_file_llseek(struct file *file, loff_t offset, int
origin)
{
long long retval;
switch (origin) {
case 2: /* вот здесь */
offset += file->f_dentry->d_inode->i_size;
break;
case 1: /* и здесь */
offset += file->f_pos;
}
...
Да и вообще в `read_write.c' полнейший бред с long/off_t/loff_t и
unsigned/[signed] int. Сами посудите:
off_t sys_lseek(unsigned int fd, off_t offset, unsigned int origin)
^^^^^ ^^^^^^^^^^^^
вызывает (со своими же параметрами):
loff_t llseek(struct file *file, loff_t offset, int origin)
^^^^^^ ^^^
Вот еще штука:
#if !defined(__alpha__) /* а че там с альфой не так, кто нам скажет? */
long sys_llseek(unsigned int fd, unsigned long offset_high,
unsigned long offset_low, loff_t * result,
unsigned int origin)
Чего куда здесь коннектится вообще хрен поймешь... Помойка короче :-)
Хоть комментарий бы написали, что ли...