1. Си / Говнокод #24739

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    if (!(fs_info->workers && fs_info->delalloc_workers &&
      fs_info->submit_workers && fs_info->flush_workers &&
      fs_info->endio_workers && fs_info->endio_meta_workers &&
      fs_info->endio_meta_write_workers &&
      fs_info->endio_write_workers && fs_info->endio_raid56_workers &&
      fs_info->endio_freespace_worker && fs_info->rmw_workers &&
      fs_info->caching_workers && fs_info->readahead_workers &&
      fs_info->fixup_workers && fs_info->delayed_workers &&  // <===
      fs_info->fixup_workers && fs_info->extent_workers &&   // <===
      fs_info->qgroup_rescan_workers)) {
        err = -ENOMEM;
        goto fail_sb_buffer;
    }

    https://bugzilla.kernel.org/show_bug.cgi?id=82021

    Глаз-алмаз!

    Запостил: wvxvw, 10 Сентября 2018

    Комментарии (39) RSS

    • Прикольно, когда Maks Naumov и Anrey Utkin на bugzilla.kernel.org обсуждяют ядро по-английски.
      Ответить
      • К.О. передаёт, что это нормальная практика, т.к. в любой момент в тред может включиться кто-то ещё
        Ответить
      • Там, скорее всего, на других языках вообще не полагается общаться. Иначе получится вавилонская башня.
        Ответить
    • В таком условии немудрено заблудиться
      Ответить
      • Ирония тут как бы в том, что эта система называется "лучшей".
        В ext4 или xfs наверное условия не такие хорошие.
        Ответить
        • Ну не ставить же if после аллокации каждого из воркеров.
          Ответить
        • > эта система называется "лучшей".

          Кем называется? Ораклом? Как лишнее условие в ифе влияет на качество дизайна ФС?

          Кстати, чем принципиально новая btrfs отличается от солнечного ZFS, и почему Oracle не захотел открывать последний после покупки Sun? Чтобы все сразу не переключились на более отлаженную технологию и btrfs не пришлось закапывать?
          Ответить
          • btrfs читается как better-fs.

            С ZFS работать не приходилось. Сказать чем отличается не могу.

            Мое понимание причин существования btrfs - они решили изначально заложить в систему всякие фишки, над которыми люди работали со времен создания более концептуально простых систем, типа ext. Т.е. снепшоты, рейд-массивы, сжатие данных, дедупликация, репликация, объединение нескольких физических устройств в одну файловую систему и т.д. в более старых системах, это, как правило, надстройки над системой, которя в принципе, ничего этого не умеет. А тут это все встроено.

            Но не все встроено... например btrfs не умеет самостоятельно справлятся с плохими секторами на устройстве, ну и, по их идеологии, не работает с утилитами типа badblocks. Поэтому, если один блок на диске посыпался, btrfs можно выбрасывать... ну, или использовать в качестве прокси какой-нибуд dmanager, который скроет плохой блок... но так жеж жить никто не захочет.
            Ответить
            • До сих пор не пойму, нафига было тащить функционал raid и lvm прямо в файлуху. Какой-то комбайн, противоречащий идеологии юникс и вообще модульности...
              Ответить
              • З.Ы. Ну хотя за счет этого можно отбрасывать освободившиеся блоки из середины, а не только с конца...
                Ответить
              • > нафига было тащить функционал raid и lvm прямо в файлуху

                Если дизайн ФС позволяет реализовать всё это гораздо более эффективно, чем в общем случае, почему нет? ZFS, насколько я понимаю, реализует персистентную структуру данных (что-то вроде git-репозитория), поэтому взятие снэпшотов является очень дешёвой операцией (как создание ветки в гите). А поскольку она хранит чек-суммы всех данных, восстановление после ошибок должно быть в теории очень эффективной операцией.

                > Efficient rebuilding of RAID arrays — a RAID controller often has to rebuild an entire disk, but ZFS can combine disk and file knowledge to limit any rebuilding to data which is actually missing or corrupt, greatly speeding up rebuilding;
                Ответить
    • Задача: перевести на "PHP", изменяя или добавляя наименьшее кол-во символов.
      Ответить
    • > Глаз-алмаз!

      Такое еще может статический анализатор отловить какой-нибудь. Типа того, который с блюющим единорогом
      Ответить
      • Эту безобидную хуйню сможет, а вот пропущенное условие - уже далеко не факт.

        Нахуй так писать вообще? if'ы хотелось сэкономить?
        Ответить
        • Ничо, потом этот перец 100% на собеседованиях задаёт вопросы типа
          "Как бы вы избавились от лишних условных ветвлений?" и "Что вы знаете про паттерн "Стратегия"?"
          Ответить
          • > Что вы знаете про паттерн "Стратегия"

            Что это убогий частный случай функций высшего порядка.
            Ответить
      • Я открыл пост j123123, и оказалось, что, мать твою, Борманд, там сидел чёртов Карпов! Эти сукины сыны научились спамить даже на говнокоде!

        P.S. Он, кстати, помню, пытался пиариться в LKML, но представители низкоразвитой цивилизации не приняли его идей путём игнора.
        Ответить
        • Карпов - это блюющий единорог?
          Ответить
        • Ну так этот Карпов про существование говнокода вкурсе: https://habr.com/post/114704/
          Наверняка свой анализатор они на местных примерах натаскивали

          > Предлагаю топ 10 лучших «лучших» фрагментов кода из собранных мною за последнее время. У этих примеров есть существенное отличие от собранных на сайте «Говнокод.ру». Если там множество примеров взято из студенческих курсовых и частных малоизвестных проектов, то мои примеры из солидных мест. Это известные open-source приложения и открытые библиотеки.
          Ответить
        • Так он и сюда зачем-то пиариться приходил
          https://www.govnokod.ru/8292
          Ответить
          • Очередная файка Борманда
            Ответить
          • > https
            охуеть
            Ответить
            • Вот да, а то раньше меня очень волновало, что мой пароль на говнокод сопрут прослушиванием трафика и будут срать всякой гомосятиной от этого аккаунта
              Ответить
            • Уже давно так
              Ответить
            • Видимо дефолтная плюшка клоудфлары.
              Ответить
          • Если бы вы сейчас хором не расжевали, то я бы думал, что Карпов — это бывший опер из телесериала, который двинулся и всех замочил, а теперь я знаю, что речь об Андрее Карпове, который по всем сайтам рекламирует свой "пивас".

            Ну теперь-то я понял, что вы призываете всех пользователей ГК забыть Герострата и никогда больше не вспоминать, что он сжёг храм.
            Ответить
            • Я слушал лекции этого Карпова, конкретно - "Эффективное использование С++", там он рассказывает про атавизмы и рудименты с++, между прочим, довольно доходчиво.
              Ответить
            • Это тот Карпов, который пиарит свой "PVS Studio" во все дыры?
              Ответить
    • Багзилла родом из 90-х? Мои глаза!
      Ответить
      • Тут уже дизайн немного осовремененный: круглые уголочки, как на ГК.
        Ответить
      • Внезапно, для kernel.org есть даже юзерстайлы.¹ Но на поддомене bugzilla они не работают ☺

        ¹ https://userstyles.org/styles/37979/kernel-org-dark
        Ответить
        • Кмк, там весьма сносный дизайн, просто и функционально, разве что пустые поля скрыть, шрифт покрупнее местами сделать и комментарии на всю ширину контейнера растянуть. Если не нравится — берём XML и пишем xslt-трансформацию с любым дизайном.
          https://bugzilla.kernel.org/show_bug.cgi?ctype=xml&id=82021
          Ответить
        • Что за издевательская страница на userstyles.org? Элемент <body> выглядит так:
          <body>
          <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
          <!--compile index.jsx (should be in react) into index.html.erb in views-->
          
          <div id="root"></div>
          <script type="text/javascript" src="/ui/app.js"></script>
          
          
          </body>
          Выглядит как белый фон. Оно должно что-то показывать или так и задумано?
          Ответить
          • ты ещё не видел исходник gcode.cx

            Предполагаю, ты используешь адблок или что-то подобное.
            Ответить

    Добавить комментарий