ALT Linux Community general discussions
 help / color / mirror / Atom feed
From: Sergey Vlasov <vsu@altlinux.ru>
To: ALT Linux Community <community@altlinux.ru>
Subject: Re: [Comm] Re: ограничение размера файла на ext3
Date: Wed, 21 Sep 2005 22:40:16 +0400
Message-ID: <20050921184016.GB11632@procyon.home> (raw)
In-Reply-To: <20050921171640.GC8878@osdn.org.ua>

[-- Attachment #1: Type: text/plain, Size: 2150 bytes --]

On Wed, Sep 21, 2005 at 08:16:40PM +0300, Michael Shigorin wrote:
> On Wed, Sep 21, 2005 at 09:03:38PM +0400, Владимир Гусев wrote:
> > >mc - глюкало.  VMware поддерживает файлы больше 2G но как-то
> > >странно работает.  А вообще это проблемы софта.
> > Почему "софта"? Ведь тот же софт не "жужжит", если это reiserfs 3.6..
> 
> Не верю (c)

Ха.  А ведь это правда.  Причём вплоть до последних ядер 2.6.x.

Однако ошибка в данном случае не в ext2/3, а как раз в reiserfs.  Дело
в том, что для работы с файлами больше 2 Гб программы должны быть либо
собраны с опцией -D_FILE_OFFSET_BITS=64 (в этом случае
переопределяется тип off_t и структуры, где присутствуют размеры
файлов - например, struct stat), либо с опцией -D_LARGEFILE64_SOURCE
(в этом случае должны использоваться функции open64(), lseek64() и
т.д.).  При открытии файлов в ядро передаётся флаг, определяющий
возможности программы (O_LARGEFILE); если этот флаг не установлен,
открытие файлов размером более 2 Гб невозможно.  (Всё это относится к
32-разрядным архитектурам - на 64-разрядных архитектурах этой проблемы
нет в принципе.)

Большинство файловых систем использует общую функцию для обработки
открытия файлов - generic_file_open(); именно там выполняется проверка
O_LARGEFILE при открытии.  Однако в reiserfs обработчик ->open вообще
не задан, в результате проверка размера не выполняется, и файл удаётся
открыть даже при несоблюдении ограничения на размер.  Это может
привести к проблемам при дальнейшем выполнении программы - например,
если программа, собранная без поддержки больших файлов, попытается
определить размер такого файла, она получит совершенно неверный
результат (а в некоторых случаях может повести себя совсем
непредсказуемым образом, поскольку из-за переполнения получится
отрицательное число).

Так что то, что на reiserfs файлы размером более 2 Гб открываются
любой программой, даже собранной без поддержки больших файлов - это
ошибка reiserfs, и когда-нибудь она будет исправлена.

Кстати, похожие баги были и в других ФС (или, вероятно, в общем коде),
и чинились довольно давно:

http://lkml.org/lkml/2000/7/30/38

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

  parent reply	other threads:[~2005-09-21 18:40 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-21 13:40 [Comm] " Владимир Гусев
2005-09-21 13:50 ` Olvin
2005-09-21 15:30   ` Владимир Гусев
2005-09-21 15:58     ` Michael Popov
2005-09-21 16:41     ` Maxim Tyurin
2005-09-21 17:03       ` Владимир Гусев
2005-09-21 17:16         ` [Comm] " Michael Shigorin
2005-09-21 17:22           ` Владимир Гусев
2005-09-21 17:32             ` Maxim Tyurin
2005-09-21 18:07               ` Владимир Гусев
2005-09-21 17:37             ` Michael Shigorin
2005-09-21 18:00               ` Sergey Vlasov
2005-09-21 18:42                 ` [Comm] [JT] " Michael Shigorin
2005-09-21 18:09               ` [Comm] " Владимир Гусев
2005-09-21 18:43                 ` Michael Shigorin
2005-09-21 18:40           ` Sergey Vlasov [this message]
2005-09-21 18:48             ` Michael Shigorin
2005-09-21 17:28         ` [Comm] " Maxim Tyurin
2005-09-21 16:40 ` Maxim Tyurin
2005-09-21 17:02   ` Владимир Гусев
2005-09-21 17:19     ` Maxim Tyurin
2005-09-21 18:42       ` Владимир Гусев

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050921184016.GB11632@procyon.home \
    --to=vsu@altlinux.ru \
    --cc=community@altlinux.ru \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git