From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Mon, 22 May 2023 09:54:03 +0200 From: Alexey Gladkov To: make-initrd@lists.altlinux.org Message-ID: References: <5522f0c1-adac-3db7-e569-05cda6d05d58@gmail.com> <20230521085326.308119-1-gladkov.alexey@gmail.com> <6258d160-9ffc-30de-abda-d6aec405559a@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <6258d160-9ffc-30de-abda-d6aec405559a@gmail.com> Subject: Re: [make-initrd] [PATCH] ueventd: Don't use a epoll timeout when it's not needed X-BeenThere: make-initrd@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: make-initrd@lists.altlinux.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 May 2023 07:54:06 -0000 Archived-At: List-Archive: On Mon, May 22, 2023 at 07:46:07AM +0300, Leonid Krivoshein wrote: > Привет! > > > Глянул финальную версию в for-master. Было неплохо, а стало намного > лучше. :-) > > В ueventd.c(108): утечка path. Да, пропустил утечку. Спасибо! > А в строках 124, 196, 324, 330 и 336 нет предупреждений? Нет. > В строке 178 получается странный путь для отслеживания > ("%s/queue/pause/."), поскольку параметр name="." -- так задумано или > тут д.б. ".all"? Так и задумано. Может это не самое удачное решение для watch_path(). Нужна была возможность указывать саму директорию filter_dir. Мне не хотелось дополнительно копировать и подготавливать строку ради единственного вызова watch_path() на старте. Поэтому в этом и остальных местах в качестве name просто передаётся ".". > В memory.c несколько удивляет неудобство интерфейса rd_asprintf_or_die() > -- зачем тащить указатель на переменную в первом параметре и потом её > возвращать? Мне кажется, тут можно обойтись локальной переменной и не > тащить указатель через стек, к тому же 'char *'. Очень хорошая мысль. Код становится более читабильным. Правда, наткнулся на предупреждение от компилятора: datasrc/libinitramfs/memory.c:30:7: warning: function might be candidate for attribute ‘noreturn’ [-Wsuggest-attribute=noreturn] 30 | char *rd_asprintf_or_die(const char *fmt, ...) | ^~~~~~~~~~~~~~~~~~ да, функция делает exit при условии ошибки vasprintf, но при этом функция явно делает return. Какой тут нафиг noreturn ? Я не нашёл способов исправить это кроме как выключить -Wmissing-noreturn. > В queue-processor.c вызовы open() в 51, 55 и 59 так и остались не > обёрнуты, на хорошей нагрузке это может приводить к произвольным > фатальным вылетам с Interrupted system call. К слову, абсолютно все > close() в коде теоретически могут быть этому подвержены. Я передумал оборачивать open/close. open может получить на медленном устройстве, что маловероятно для initramfs. -- Rgrds, legion