Igor
Btrfs at Facebook https://lwn.net/SubscriberLink/824855/30c689f442d0033c/
из приватной дискуссии от того человека, который раньше предлагал подождать и потестить btfs подольше: Full disk issues (despite free disk space) with ext4+lvm: likely (based on having hit this myself multiple times and multiple reports in the discussion) Corruption of individual files: unlikely (It seems internal drive crc is effective in catching those kinds of small-scale corruptions. There don't seem to be many reports despite lack of fs-level checksumming.) Loss of individual files: unlikely Loss of big chunk of the filesystem with ext4+lvm: very unlikely (I'm limiting this to data loss because of file system corruption. A disk dying is something else.) Full disk issues (primarily metadata space exhaustion) with btrfs: unlikely This has become much better over the last few years, I don't think this is an important worry. Corruption of individual files: none Loss of individual files: unlikely Loss of big chunk of the filesystem with btrfs: unlikely, but possible. And that last one is the big unknown. For the sake of discussion, let's say it happens 1e-5 / machine / year. This might still result in a handful of cases over all Fedora users. If we stagger the introduction of the new default, we might get half or one-third of such cases. And btrfs might be improved upstream in response to our reports, so we'd not just be delaying such failures, but reducing the total number of occurrences. After writing this out, I'm starting to think that we should just switch the default, period. Some people will follow the default, others will pick a different layout, and staggering will occur naturally.
ㅤ
Ну и правда, только багрепорты покажут насколько она safe. Ну и кто хочет всегда выберет ext4 себе.
Fedor
П он вроде в отдельную локацию все ставит в /opt насколько помню
Alexander
из приватной дискуссии от того человека, который раньше предлагал подождать и потестить btfs подольше: Full disk issues (despite free disk space) with ext4+lvm: likely (based on having hit this myself multiple times and multiple reports in the discussion) Corruption of individual files: unlikely (It seems internal drive crc is effective in catching those kinds of small-scale corruptions. There don't seem to be many reports despite lack of fs-level checksumming.) Loss of individual files: unlikely Loss of big chunk of the filesystem with ext4+lvm: very unlikely (I'm limiting this to data loss because of file system corruption. A disk dying is something else.) Full disk issues (primarily metadata space exhaustion) with btrfs: unlikely This has become much better over the last few years, I don't think this is an important worry. Corruption of individual files: none Loss of individual files: unlikely Loss of big chunk of the filesystem with btrfs: unlikely, but possible. And that last one is the big unknown. For the sake of discussion, let's say it happens 1e-5 / machine / year. This might still result in a handful of cases over all Fedora users. If we stagger the introduction of the new default, we might get half or one-third of such cases. And btrfs might be improved upstream in response to our reports, so we'd not just be delaying such failures, but reducing the total number of occurrences. After writing this out, I'm starting to think that we should just switch the default, period. Some people will follow the default, others will pick a different layout, and staggering will occur naturally.
Lvm классический или с thinpool? Между ними довольно существенная разница, в т.ч. в надежности.
Igor
дефолтная установка
Alexander
а на 32 можно обновляться уже? а то помню были какие-то вещи, из-за которых не рекомендовалось...
Меня, кстати, тоже интересует. Как минимум, я помню, что после релиза высплывали массовые проблемы с крешами софта из-за бага в gcc, которым 32-ой релиз был собран.
Alexander
классический, конечно же
Тогда сравнение не очень корректное, т.к. и набор фич существенно отличается.
Igor
Почему?
потому что расширять вольюмы надо руками
Alexander
потому что расширять вольюмы надо руками
Ты про то, что флаг -r у lvresize не работает?
Igor
Ты про то, что флаг -r у lvresize не работает?
нет, я про то что когда у пользователя заканчивается место - нужно ему что-то делать - вручную запукать какую-то команду
Igor
это не допустимо
Alexander
FIXED. REBUIT.
Вроде, собирались ребилдить не все пакеты, а только те, про которые жалобы дошли до майнтейнеров.
Igor
Ну так с обычным lvm всё точно так же обстоит
одна из проблем которую нужно решить - разделение /, /home. потому что у многих с флэтпаками заканчивается место на /, но не на /home
Igor
Ну так в этом случае thinpool наоборот для юзера удобнее, чем классический лвм
нет, что то не подходит, что другое. thinpool в целом лучше при этой проблеме, но то что пользователь сам должен расширять тома - это no-go
Igor
Тогда я не вижу, как с этой проблемой справляется лучше классический лвм
никак, поэтому и существует пропозал чтобы перейти с LVM+ext4 на btrs
Igor
есть эксперты по getopt?
Igor
нужна помощь)
Yaroslav
есть эксперты по getopt?
это который man 3 getopt? или утилита?
Igor
это который man 3 getopt? или утилита?
да в целом одно и то же, но вообще нужна помощь с getopt(3)
Igor
нужно сделать чтобы можно было передавать любы параметры .. т.е. если -X foo передаётся, а в optstring не было :X:, то он бы всё равно принял этот аргумент
Alexander
есть эксперты по getopt?
Ты про шелльный или про глибцешный?
Igor
А в чем в таком случае будет заключаться работа getopt?
опишу юзкейс, в RPM у макросов можно делать аргументы. соотв-но если есть unknown option, то rpm отказывается из принимать. хочу модифицировать таким обраном, чтобы мжно было указать что в целом все опции подходят
Igor
%** all arguments (including processed flags)
Yaroslav
@ignatenkobrain If the caller has set the global variable opterr to zero, then getopt() does not print an error message. не оно?
Yaroslav
т.е. ты уже сам будешь разбираться с результатами вызова getopt
Igor
@ignatenkobrain If the caller has set the global variable opterr to zero, then getopt() does not print an error message. не оно?
не, там в самом RPM if (c == '?' || strchr(opts, c) == NULL) { mbErr(mb, 1, _("Unknown option %c in %s(%s)\n"), (char)optopt, me->name, opts);
Igor
но я не хочу полностью выключить проверку
Alexander
https://rpm.org/user_doc/macros.html
Вообще, ман говорит вот это If getopt() does not recognize an option character, it prints an error message to stderr, stores the character in optopt, and returns '?'. The calling program may prevent the error message by setting opterr to 0.
Igor
только при каком-то определённом условии. я вижу, что в openSUSE используется :-:, но оно не работает в федоре (не уверен, что оно работает там тоже)
Alexander
opterr=0 это отключает
У меня про это же и написано
Igor
идеально, хотелось бы: * :-x: -> можно кидать какие-угодно параметры * :x:-> можно передавать только -x ..
Yaroslav
@ignatenkobrain `If the first character (following any optional '+' or '-' described above) of optstring is a colon (':'), then getopt() likewise does not print an error message. In addition, it returns ':' instead of '?' to indicate a missing option argu- ment.` т.е. типа того: ":X"
Yaroslav
У меня про это же и написано
см. выше на 2 сообщения
Yaroslav
не видя кода - сложно сказать какие костыли мешают это сделать
Igor
сейчас скину код
Igor
https://github.com/rpm-software-management/rpm/blob/master/rpmio/macro.c#L963-L988
Igor
rpm --define "foo(:a:) cd tmp; echo %**; cd -" --eval "%foo -j1"
Igor
что-то подобное хотелось бы запилить
Alexander
https://github.com/rpm-software-management/rpm/blob/master/rpmio/macro.c#L963-L988
Выставь opterr=0 и в ветке if (c == '?' Вместо ошибки бери optopt, кидай в отдельный массив, и затем передавай его вместе с хвостом argv в макрос.
Alexander
Правда, это существенно поменяет поведение макросов и их станет сложнее отлаживать
Igor
да, поэтому хочу сделать так, чтобы не просто всё время передавать всевозможные опции, а сделать это каким-то параметром
Alexander
Я бы, как пользователь rpmbuild, хотел бы видеть ошибки, связанные с определением флагов, которые я допустил, а не получать имплицитно данные, которые не удалось разобрать, внутрь argv
Igor
%ctest
Igor
cd "%{__cmake_builddir}" %__ctest --output-on-failure --force-new-ctest-process %{?_smp_mflags} %{**} cd -
Igor
всё, что передаётся в %ctest - хочется присунуть внутри в %__ctest
Филипп Бедросович
- В чём сила андроида, брат? - В термуксе, брат!
Igor
всё, что передаётся в %ctest - хочется присунуть внутри в %__ctest
ели бы не cd -, я бы даже не стал делать аргументы к %ctest
Igor
ну тут именно штука в том, что нужно все эти опции и аргументы передать в %__ctest
Alexander
cd "%{__cmake_builddir}" %__ctest --output-on-failure --force-new-ctest-process %{?_smp_mflags} %{**} cd -
Я бы тут просто задокал передачу нераспознаваемых параметров за двойным дэшем, как это обычно делается.
Alexander
Собственно, двойной дэш специально для этого и существует
Alexander
Все, что после него, getopt не разбирает
Igor
проблема в том, что тогда получается так _
Igor
/usr/bin/ctest --output-on-failure --force-new-ctest-process -j8 -- -j1
Igor
должно быть ctest -j8 -j1, а не ctest -j8 -- -j1
Alexander
должно быть ctest -j8 -j1, а не ctest -j8 -- -j1
Так ты подставляй не %**, а %*
Igor
ах, точно
Igor
работает, да
Igor
https://build.opensuse.org/package/view_file/openSUSE:Factory/cmake/cmake.macros?expand=1
Igor
интересно как в openSUSE это работает всё же
Igor
вообще идеально было бы всё же запилить без --, потому что %make_build -j8 работает, а %ctest -j8 нет
Yaroslav
вообще идеально было бы всё же запилить без --, потому что %make_build -j8 работает, а %ctest -j8 нет
м.б. сделать что если имя макроса кончается на ? - игнорировать не заданные параметры