ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] inode > 2^32 на 32-битных системах
@ 2013-10-23 13:56 Vitaly Lipatov
  2013-10-23 14:29 ` Dmitry V. Levin
  0 siblings, 1 reply; 5+ messages in thread
From: Vitaly Lipatov @ 2013-10-23 13:56 UTC (permalink / raw)
  To: ALT Devel discussion list; +Cc: reprofy, ldv

Добрый день!

Начну с того, что у нас в компании используются как 32-битные, так и 
64-битные системы. При этом они взаимодействуют между собой, а ещё и 
работают с файлами.

За последний год выявилось следующее:
1. Файловая система glusterfs, разработчики которой заявляют, что она 
не работает на 32-битных системах, на самом деле работает.
2. Файловая система XFS при достижении определённого объёма начинает 
создавать файлы с inode >2^32 (поскольку inode там зависит от позиции 
данных на диске)
3. Функция stat (32-битная функция stat — для структуры с 32-битным 
st_ino) возвращает ошибку, если inode у файла слишком велик
4. Многие программы (особенно такие важные, как apt и rpm) собраны без 
поддержки _FILE_OFFSET_BITS=64 (AC_SYS_LARGEFILE в configure.am)
и не способны работать с файлами (работа с файлами почти всегда 
включает в себя вызов функции stat).

Не дождавшись исправления сборки rpm (rpmReadSignature failed при 
inode, выходящем за 32 бита 
https://bugzilla.altlinux.org/show_bug.cgi?id=29117)
я подумал, что большинству программ, вызывающих stat(), значение inode 
не очень-то интересно.

Собственно, я рассматриваю 3 варианта:
1. Обнулять st_ino, если значение туда не влезает. Возражающие 
программы следует пересобрать со stat64()
2. Заполнять st_ino максимальным значением (все единицы). Возражающие 
программы следует пересобрать со stat64()
3. Сжимать значение inode в 32-битное (squash). Это существующая 
практика, применяемая в cifs, nfs и fuse. Но возникает вопрос с 
последствиями коллизий.

При использовании glibc исправление касается только glibc, при 
использовании других библиотек, предполагаю, нужно изменить и 
соответствующую функцию в ядре.

Прошу совета, мнений, помощи.

Здесь некоторые подробности (то же самое другими словами и пример 
патча)
http://wiki.etersoft.ru/Linux/ZeroInode

-- 
С уважением,
Виталий Липатов,
Etersoft


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [devel] inode > 2^32 на 32-битных системах
  2013-10-23 13:56 [devel] inode > 2^32 на 32-битных системах Vitaly Lipatov
@ 2013-10-23 14:29 ` Dmitry V. Levin
  2013-10-25 10:18   ` Vitaly Lipatov
  0 siblings, 1 reply; 5+ messages in thread
From: Dmitry V. Levin @ 2013-10-23 14:29 UTC (permalink / raw)
  To: ALT Devel discussion list; +Cc: reprofy

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

On Wed, Oct 23, 2013 at 05:56:45PM +0400, Vitaly Lipatov wrote:
[...]
> Прошу совета, мнений, помощи.

В феврале в glibc'шном списке рассылки упоминались еще некоторые идеи:
http://sourceware.org/ml/libc-alpha/2013-02/msg00575.html
http://sourceware.org/ml/libc-alpha/2013-02/msg00580.html


-- 
ldv

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [devel] inode > 2^32 на 32-битных системах
  2013-10-23 14:29 ` Dmitry V. Levin
@ 2013-10-25 10:18   ` Vitaly Lipatov
  2013-10-25 11:04     ` Dmitry V. Levin
  0 siblings, 1 reply; 5+ messages in thread
From: Vitaly Lipatov @ 2013-10-25 10:18 UTC (permalink / raw)
  To: ALT Devel discussion list, reprofy

Dmitry V. Levin писал 2013-10-23 18:29:
> On Wed, Oct 23, 2013 at 05:56:45PM +0400, Vitaly Lipatov wrote:
> [...]
>> Прошу совета, мнений, помощи.
>
> В феврале в glibc'шном списке рассылки упоминались еще некоторые 
> идеи:
> http://sourceware.org/ml/libc-alpha/2013-02/msg00575.html
> http://sourceware.org/ml/libc-alpha/2013-02/msg00580.html

Ни одна из которых не способна решить нашу проблему с rpm?
Как я понял, одно предложение заключалось в том, чтобы структуру stat 
заполнять, как получится, в любом случае, но при этом и код ошибки 
возвращать.

Второе предложение — заставить всех собираться со 
-D_FILE_OFFSET_BITS=64, применяя следующие меры:
1. Поставить его в параметры по умолчанию
2. Удалить из заголовочных файлов glibc описание 32-битной структуры и 
функции

Я бы смотрел на проблемы с точки зрения legacy-программ. Ну или хотя бы 
rpm, который сложно, и, наверное, незачем
было бы пересобирать с -D_FILE_OFFSET_BITS=64.

Этой проблемы они не решают.

Я просто подумал, что это надо обсуждать с разработчиками glibc, 
поэтому и пишу сюда :)

-- 
С уважением,
Виталий Липатов,
Etersoft


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [devel] inode > 2^32 на 32-битных системах
  2013-10-25 10:18   ` Vitaly Lipatov
@ 2013-10-25 11:04     ` Dmitry V. Levin
  2013-10-25 13:34       ` Vitaly Lipatov
  0 siblings, 1 reply; 5+ messages in thread
From: Dmitry V. Levin @ 2013-10-25 11:04 UTC (permalink / raw)
  To: ALT Devel discussion list; +Cc: reprofy

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

On Fri, Oct 25, 2013 at 02:18:36PM +0400, Vitaly Lipatov wrote:
> Dmitry V. Levin писал 2013-10-23 18:29:
> >On Wed, Oct 23, 2013 at 05:56:45PM +0400, Vitaly Lipatov wrote:
> >[...]
> >>Прошу совета, мнений, помощи.
> >
> >В феврале в glibc'шном списке рассылки 
> >упоминались еще некоторые идеи:
> >http://sourceware.org/ml/libc-alpha/2013-02/msg00575.html
> >http://sourceware.org/ml/libc-alpha/2013-02/msg00580.html
> 
> Ни одна из которых не способна решить 
> нашу проблему с rpm?

Наверное, смена умолчания у _FILE_OFFSET_BITS в перспективе могда бы
решить проблему, но по дороге придется неизвестно сколько всего чинить.

Для решения проблемы с rpm достаточно решить вопрос с fts в glibc:
http://sourceware.org/bugzilla/show_bug.cgi?id=11460

Или засунуть копию реализации fts из glibc/gnulib прямо в rpm,
как это сделал jbj в 2002 году.

> Я просто подумал, что это надо обсуждать 
> с разработчиками glibc, поэтому и пишу сюда 
> :)

Я могу рассказать, где можно встретить больше разработчиков glibc,
чем тут. :)


-- 
ldv

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [devel] inode > 2^32 на 32-битных системах
  2013-10-25 11:04     ` Dmitry V. Levin
@ 2013-10-25 13:34       ` Vitaly Lipatov
  0 siblings, 0 replies; 5+ messages in thread
From: Vitaly Lipatov @ 2013-10-25 13:34 UTC (permalink / raw)
  To: ALT Devel discussion list, reprofy

Dmitry V. Levin писал 2013-10-25 15:04:
> On Fri, Oct 25, 2013 at 02:18:36PM +0400, Vitaly Lipatov wrote:
>> Dmitry V. Levin писал 2013-10-23 18:29:
>> >On Wed, Oct 23, 2013 at 05:56:45PM +0400, Vitaly Lipatov wrote:
>> >[...]
>> >>Прошу совета, мнений, помощи.
>> >
>> >В феврале в glibc'шном списке рассылки
>> >упоминались еще некоторые идеи:
>> >http://sourceware.org/ml/libc-alpha/2013-02/msg00575.html
>> >http://sourceware.org/ml/libc-alpha/2013-02/msg00580.html
>>
>> Ни одна из которых не способна решить
>> нашу проблему с rpm?
>
> Наверное, смена умолчания у _FILE_OFFSET_BITS в перспективе могда бы
> решить проблему, но по дороге придется неизвестно сколько всего 
> чинить.
>
> Для решения проблемы с rpm достаточно решить вопрос с fts в glibc:
> http://sourceware.org/bugzilla/show_bug.cgi?id=11460
Это была риторика, я не сомневаюсь, что конкретную проблему с 
конкретным rpm мы поборем.
Я о том, что предложенные там решения ничего не дают существующему 
коду.

И я так понимаю, что мало кому это важно, все счастливы на 64-битных 
системах.

> Я могу рассказать, где можно встретить больше разработчиков glibc,
> чем тут. :)
Посоветуйте, пожалуйста, где лучше продолжить обсуждение, чтобы это 
могло повлиять на код glibc.

-- 
С уважением,
Виталий Липатов,
Etersoft


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-10-25 13:34 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-10-23 13:56 [devel] inode > 2^32 на 32-битных системах Vitaly Lipatov
2013-10-23 14:29 ` Dmitry V. Levin
2013-10-25 10:18   ` Vitaly Lipatov
2013-10-25 11:04     ` Dmitry V. Levin
2013-10-25 13:34       ` Vitaly Lipatov

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/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 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

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


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