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

    Комментарии (46) 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;
                Ответить
            • Жыве беларусь!
              Ответить
    • показать все, что скрытоvanished
      Ответить
    • > Глаз-алмаз!

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

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

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

        P.S. Он, кстати, помню, пытался пиариться в LKML, но представители низкоразвитой цивилизации не приняли его идей путём игнора.
        Ответить
    • показать все, что скрытоvanished
      Ответить
      • показать все, что скрытоvanished
        Ответить
      • Внезапно, для kernel.org есть даже юзерстайлы.¹ Но на поддомене bugzilla они не работают ☺

        ¹ https://userstyles.org/styles/37979/kernel-org-dark
        Ответить
        • Кмк, там весьма сносный дизайн, просто и функционально, разве что пустые поля скрыть, шрифт покрупнее местами сделать и комментарии на всю ширину контейнера растянуть. Если не нравится — берём XML и пишем xslt-трансформацию с любым дизайном.
          https://bugzilla.kernel.org/show_bug.cgi?ctype=xml&id=82021
          Ответить
        • показать все, что скрытоvanished
          Ответить
          • ты ещё не видел исходник gcode.cx

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

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