James Simmons jsimmons · review.whamcloud.com
Needs your action
17 new · 78 longstanding
70336
master
J –B ✓T ✗1R 0/2
LU-18687 ptlrpc: handle CONFIG_LUSTRE_FS_SERVER tristate
mine enforced failed: review-ldiskfs-dne
upstream
pw_shepherd
3 unresolved
M +42 −43
5h
LU-18687 ptlrpc: handle CONFIG_LUSTRE_FS_SERVER tristate
mine enforced failed: review-ldiskfs-dne
upstream
pw_shepherd
3 unresolved
M +42 −43
5h
enforced failed: review-ldiskfs-dne
3 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-dne | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
build #135255 SUCCESS · tests all Maloo sessions
threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (style) This isn't a bug, but the body is one line and only repeats the subject. It would help to explain why the change is needed: in-tree
Gerrit AI review for Lustre
(style) This isn't a bug, but the body is one line and only repeats the subject. It would help to explain why the change is needed: in-tree Kbuild with =m only defines CONFIG_LUSTRE_FS_SERVER_MODULE, so a plain #ifdef drops the server code. It should also say that out-of-tree builds are unchanged, since config.h defines both macros, and that lustre/ptlrpc/wiretest.c is a generated file being edited by hand.
reply Gerrit AI review for Lustre niobuf.c:295 — (defect) With CONFIG_LUSTRE_FS_SERVER=m, this block is now compiled, but ptlrpc_server_bulk_active() is a static inline that is only defined
Gerrit AI review for Lustre
(defect) With CONFIG_LUSTRE_FS_SERVER=m, this block is now compiled, but ptlrpc_server_bulk_active() is a static inline that is only defined inside `#ifdef CONFIG_LUSTRE_FS_SERVER` in lustre/include/lustre_net.h. When only CONFIG_LUSTRE_FS_SERVER_MODULE is defined, the call is an implicit declaration, and the build fails because of -Werror-implicit-function-declaration.
The same header mismatch also drops the prototypes for other functions this patch now builds: server_bulk_callback() and ptlrpc_prep_bulk_exp() (lustre_net.h), sptlrpc_svc_{prep,wrap,unwrap}_bulk() and sptlrpc_has_gssiam_rules() (lustre_sec.h), and lustre_swab_orphan_ent*() (lustre_swab.h). That gives -Wmissing-prototypes warnings. Should lustre_net.h, lustre_sec.h, lustre_swab.h and the other headers be converted to IS_ENABLED() first?
reply Gerrit AI review for Lustre wiretest.c:272 — (minor) lustre/ptlrpc/wiretest.c is generated by `make newwiretest` from the same wirecheck output as lustre/utils/wiretest.c. After the pre
Gerrit AI review for Lustre
(minor) lustre/ptlrpc/wiretest.c is generated by `make newwiretest` from the same wirecheck output as lustre/utils/wiretest.c. After the previous patch in the series, CHECK_COND_START() emits `#ifdef HAVE_SERVER_SUPPORT`. So the next regeneration will replace every IS_ENABLED() guard here with `#ifdef HAVE_SERVER_SUPPORT`, which is not defined in an in-kernel Kbuild build. It will also restore the blank line removed after the lustre_mdt_attrs guard. Could wirecheck emit a guard that is correct for both copies, so the kernel copy can stay generated instead of hand-edited?
tags: pw_shepherd
owner James Simmons · uploader James Simmons · PS1 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-18687 ptlrpc: handle CONFIG_LUSTRE_FS_SERVER tristate Convert ptlrpc to tristate CONFIG_LUSTRE_FS_SERVER Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Ie12208b585377aec3885c89a67e4197565e86ed7
70328
master
J –B ✓T ✓R 0/2
LU-18687 fid: handle CONFIG_LUSTRE_FS_SERVER tristate
mine 2 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
2 unresolved
S +8 −6
5h
LU-18687 fid: handle CONFIG_LUSTRE_FS_SERVER tristate
mine 2 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
2 unresolved
S +8 −6
5h
build #135242 SUCCESS · tests all Maloo sessions
patchsets:
PS1 11-02
PS2 11-02
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (style) The body doesn't mention the new `#include <lu_target.h>` in fid_internal.h or why fid needs it. It may also help to say that the co
Gerrit AI review for Lustre
(style) The body doesn't mention the new `#include <lu_target.h>` in fid_internal.h or why fid needs it. It may also help to say that the configure build defines both CONFIG_LUSTRE_FS_SERVER and CONFIG_LUSTRE_FS_SERVER_MODULE, so this changes nothing there and only matters for an in-tree `CONFIG_LUSTRE_FS_SERVER=m` build.
reply Gerrit AI review for Lustre fid_internal.h:20 — (minor) Nothing declared in this block uses lu_target.h. The users are elsewhere: fid_handler.c needs `struct tgt_session_info` and `struct
Gerrit AI review for Lustre
(minor) Nothing declared in this block uses lu_target.h. The users are elsewhere: fid_handler.c needs `struct tgt_session_info` and `struct tgt_handler`, and lproc_fid.c and fid_lib.c need the dt_* types, which lu_target.h pulls in through lustre_update.h and lustre_lfsck.h. Those files compile today because obd_class.h includes lu_target.h, obd_target.h and dt_object.h under `#ifdef CONFIG_LUSTRE_FS_SERVER`. That guard is false for an in-tree `=m` build, and this include works around it. This isn't a bug, but would it be cleaner to convert the guard in obd_class.h (lustre_disk.h and lustre_fid.h also still use `#ifdef`), or to include dt_object.h and lu_target.h in the .c files that need them? Otherwise the workaround will be left redundant in this shared header once obd_class.h is converted.
owner James Simmons · uploader James Simmons · PS2 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-18687 fid: handle CONFIG_LUSTRE_FS_SERVER tristate Convert fid to tristate CONFIG_LUSTRE_FS_SERVER Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Ia362acb03ed3f8b0cf5b53aee9dc4c052f1cb951
70329
master
J –B ✓T ✓R 0/2
LU-18687 mgc: handle CONFIG_LUSTRE_FS_SERVER tristate
mine 4 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
4 unresolved
S +19 −19
5h
LU-18687 mgc: handle CONFIG_LUSTRE_FS_SERVER tristate
mine 4 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
4 unresolved
S +19 −19
5h
build #135248 SUCCESS · tests all Maloo sessions
patchsets:
PS1 11-02
PS2 11-02
threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre mgc_internal.h:64 — (minor) `cld_is_barrier()` still uses `#ifdef` while `cld_is_nodemap()` just above was converted. With =m it always returns false, so `mgc_p
Gerrit AI review for Lustre
(minor) `cld_is_barrier()` still uses `#ifdef` while `cld_is_nodemap()` just above was converted. With =m it always returns false, so `mgc_process_log()` would send a barrier cld through `mgc_process_cfg_log()`. Convert it as well?
reply Gerrit AI review for Lustre mgc_internal.h:71 — (defect) This block of prototypes (`mgc_fs_clear()`, `mgc_set_info_async_server()`, `mgc_process_server_cfg_log()`, `mgc_process_nodemap_log
Gerrit AI review for Lustre
(defect) This block of prototypes (`mgc_fs_clear()`, `mgc_set_info_async_server()`, `mgc_process_server_cfg_log()`, `mgc_process_nodemap_log()`, `mgc_process_config_server()`, `mgc_fs_setup()`) is still under `#ifdef CONFIG_LUSTRE_FS_SERVER`, along with the matching `#else`/`#endif` comments. Their callers in mgc_request.c are now under `IS_ENABLED()`. With CONFIG_LUSTRE_FS_SERVER=m only CONFIG_LUSTRE_FS_SERVER_MODULE is defined. The prototypes disappear and `mgc_barrier_glimpse_ast` becomes NULL, but the calls are still compiled, so the build fails with implicit function declarations. Should this be `#if IS_ENABLED(CONFIG_LUSTRE_FS_SERVER)` too?
reply Gerrit AI review for Lustre mgc_request.c:241 — (defect) This `mgc_fs_setup()` block in `do_config_log_add()` was left as `#ifdef`, but its error label `err_env:` below was changed to `IS_
Gerrit AI review for Lustre
(defect) This `mgc_fs_setup()` block in `do_config_log_add()` was left as `#ifdef`, but its error label `err_env:` below was changed to `IS_ENABLED()`. With =m, `err_env` is defined but never used. That is a -Wunused-label warning, and an error under -Werror. Servers would also never set up `cld_los`, so they get no local config copy. Should this one be converted too?
reply Gerrit AI review for Lustre mgc_request.c:459 — (defect) Same problem in `config_log_add()`. The nodemap/barrier setup here is still `#ifdef`, while the declarations of `nodemap_cld`/`barr
Gerrit AI review for Lustre
(defect) Same problem in `config_log_add()`. The nodemap/barrier setup here is still `#ifdef`, while the declarations of `nodemap_cld`/`barrier_cld`, the `GOTO(out_barrier, rc)` and the `out_barrier:`/`out_nodemap:` labels were all converted. With =m, `out_nodemap` is defined but never used. Also, no target would ever add the nodemap log and no MDT the barrier log.
owner James Simmons · uploader James Simmons · PS2 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-18687 mgc: handle CONFIG_LUSTRE_FS_SERVER tristate Convert mgc to tristate CONFIG_LUSTRE_FS_SERVER Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I20d9475c98f3a3abbedeaf48f021f319eaef1ffa
70327
master
J –B ✓T ✓R 0/2
LU-18687 ldlm: handle CONFIG_LUSTRE_FS_SERVER tristate
mine 1 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
1 unresolved
M +40 −40
5h
LU-18687 ldlm: handle CONFIG_LUSTRE_FS_SERVER tristate
mine 1 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
1 unresolved
M +40 −40
5h
build #135246 SUCCESS · tests all Maloo sessions
patchsets:
PS1 11-02
PS2 11-02
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre ldlm_lock.c:117 — (defect) lustre/ldlm/ldlm_inodebits.c was not converted. It still has `#ifdef CONFIG_LUSTRE_FS_SERVER` at line 38, around ldlm_reprocess_ino
Gerrit AI review for Lustre
(defect) lustre/ldlm/ldlm_inodebits.c was not converted. It still has `#ifdef CONFIG_LUSTRE_FS_SERVER` at line 38, around ldlm_reprocess_inodebits_queue() and ldlm_process_inodebits_lock().
When Kconfig sets CONFIG_LUSTRE_FS_SERVER=m it defines only CONFIG_LUSTRE_FS_SERVER_MODULE. In that case these tables are built (IS_ENABLED() is true), but the two functions they point to are not:
[LDLM_IBITS] = ldlm_process_inodebits_lock,
...
[LDLM_IBITS] = ldlm_reprocess_inodebits_queue,
Wouldn't that give an undefined-symbol link error for ptlrpc? Out-of-tree builds still work only because lustre-build.m4 defines both macros. Should ldlm_inodebits.c:38 use `#if IS_ENABLED(CONFIG_LUSTRE_FS_SERVER)` as well, so that ldlm is fully converted as the commit message says?
owner James Simmons · uploader James Simmons · PS2 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-18687 ldlm: handle CONFIG_LUSTRE_FS_SERVER tristate Convert ldlm to tristate CONFIG_LUSTRE_FS_SERVER Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I04fa91c00b5dc2cacb2919e046dcf2adce866262
69027
master
J –B ✓T ✓R 0/2
LU-18687 build: handle CONFIG_LUSTRE_FS_SERVER tristate
mine 6 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
6 unresolved
M +80 −67
5h
LU-18687 build: handle CONFIG_LUSTRE_FS_SERVER tristate
mine 6 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
6 unresolved
M +80 −67
5h
build #135235 SUCCESS · tests all Maloo sessions
no vote yet: Arshad Hussain, Shaun Tancheff, Andreas Dilger, Timothy Day
patchsets:
PS6 09-29
PS7 10-07
PS8 10-21
PS9 10-29
PS10 11-02
+5 earlier
PS1 09-17 PS2 09-18 PS3 09-22 PS4 09-22 PS5 09-23threads: 6 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:17 — (minor) This patch adds no headers and converts no code to IS_ENABLED(). Those parts appear to have moved to the per-subsystem patches in th
Gerrit AI review for Lustre
(minor) This patch adds no headers and converts no code to IS_ENABLED(). Those parts appear to have moved to the per-subsystem patches in the series. What this patch does now is: add the four ifdef/ifndef checkpatch rules (dropping the old HAVE_SERVER_SUPPORT rule), switch wirecheck and the userspace wiretest.c to HAVE_SERVER_SUPPORT, add CONFIG_LUSTRE_FS_SERVER_MODULE, and add a second copy of SERVER_ONLY/SERVER_ONLY_EXPORT_SYMBOL() in include/lustre_compat/linux/module.h. Could the message describe those changes instead?
reply Gerrit AI review for Lustre COMMIT_MSG:18 — (typo) "jus" -> "just"
Gerrit AI review for Lustre
(typo) "jus" -> "just"
reply Gerrit AI review for Lustre COMMIT_MSG:22 — (suggestion) The userspace part undoes the switch of wirecheck.c and lustre/utils/wiretest.c from HAVE_SERVER_SUPPORT to CONFIG_LUSTRE_FS_SE
Gerrit AI review for Lustre
(suggestion) The userspace part undoes the switch of wirecheck.c and lustre/utils/wiretest.c from HAVE_SERVER_SUPPORT to CONFIG_LUSTRE_FS_SERVER. That switch came in with the wiretest regeneration in the commit below. CONFIG_LUSTRE_FS_SERVER is defined only when modules are enabled, so since that commit a server build of the utilities without modules silently skips the server wire checks. If that counts as a bug, consider adding:
Fixes: 39b5d59f8612 ("LU-18847 mdt: cleanup reint structs")
reply Gerrit AI review for Lustre module.h:12 — (minor) lustre/include/obd_class.h still defines SERVER_ONLY and SERVER_ONLY_EXPORT_SYMBOL() under the same condition, so after this patch t
Gerrit AI review for Lustre
(minor) lustre/include/obd_class.h still defines SERVER_ONLY and SERVER_ONLY_EXPORT_SYMBOL() under the same condition, so after this patch there are two copies. The compiler accepts them only because both have the same tokens. If one copy is later changed (for example to IS_ENABLED()) and the other is not, the build gets a macro-redefinition error. None of the patches in the LU-18687 series touches obd_class.h. Should the obd_class.h copy be removed here, or this copy be dropped until the move happens?
reply Gerrit AI review for Lustre wirecheck.c:324 — (minor) `make newwiretest` writes this same output to both lustre/utils/wiretest.c and lustre/ptlrpc/wiretest.c. With HAVE_SERVER_SUPPORT he
Gerrit AI review for Lustre
(minor) `make newwiretest` writes this same output to both lustre/utils/wiretest.c and lustre/ptlrpc/wiretest.c. With HAVE_SERVER_SUPPORT here, the next regeneration (needed by any wire change) puts `#ifdef HAVE_SERVER_SUPPORT` into lustre/ptlrpc/wiretest.c. That is a problem on the kernel side in three ways: - HAVE_SERVER_SUPPORT comes only from the autoconf config.h, so in the in-tree Kbuild build this series targets every server wire check in ptlrpc/wiretest.c would be compiled out without any warning. - The new spelling.txt rule in this patch flags `ifdef HAVE_SERVER_SUPPORT` in kernel files, so every regenerated wiretest would trip checkpatch. - It would undo the `#if IS_ENABLED(CONFIG_LUSTRE_FS_SERVER)` conversion of ptlrpc/wiretest.c in the ptlrpc patch of this series. The kernel copy needs IS_ENABLED(CONFIG_LUSTRE_FS_SERVER) and the userspace copy needs HAVE_SERVER_SUPPORT, and no single CHECK_COND_START() argument gives both. One option is to emit the CONFIG_ form here and have lustre/utils/wirehdr.c map HAVE_SERVER_SUPPORT onto it. Another is to give wirecheck a kernel/userspace switch so each copy gets its own guard.
reply Gerrit AI review for Lustre wiretest.c:2971 — (typo) This `#endif` comment still says CONFIG_LUSTRE_FS_SERVER, but the `#ifdef` above it was changed to HAVE_SERVER_SUPPORT. wirecheck wou
Gerrit AI review for Lustre
(typo) This `#endif` comment still says CONFIG_LUSTRE_FS_SERVER, but the `#ifdef` above it was changed to HAVE_SERVER_SUPPORT. wirecheck would print HAVE_SERVER_SUPPORT here, so the file looks hand-edited rather than regenerated. The same mismatch is at the LCFG_NODEMAP_* block (the `#endif` after LCFG_NODEMAP_BANLIST_DEL).
owner James Simmons · uploader James Simmons · PS10 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-18687 build: handle CONFIG_LUSTRE_FS_SERVER tristate Lustre treats CONFIG_LUSTRE_FS_SERVER as a boolean but when imported into a Linux kernel it can be a tristate value, turn off, module, or built in. To properly support building in the Linux kernel tree with Kbuild using tristate value we need to use the IS_ENABLED macro. All other lustre CONFIG_* options are boolean so no need to update them. For the IS_ENABLED macro to work we need to define CONFIG_LUSTRE_FS_SERVER_MODULE. We also add headers that are needed to actually build in the linux kernel tree. This is jus the base patch and we need many patches on top to give it a chance to land. Change user land utilities not to use Kbuild options. Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I410a9d2e95dd0edcbfa78ca901d2e904b0b3f2b4
70332
master
J –B ✓T ✗1R 0/2
LU-18687 fld: handle CONFIG_LUSTRE_FS_SERVER tristate
mine enforced failed: review-ldiskfs-dne-arm
upstream
CI@PS1
S +8 −9
5h
LU-18687 fld: handle CONFIG_LUSTRE_FS_SERVER tristate
mine enforced failed: review-ldiskfs-dne-arm
upstream
CI@PS1
S +8 −9
5h
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-dne-arm | RHEL 8.10 / x86_64, Rocky 9.8 / aarch64 | ran 5 tests. 1 tests failed: lnet-selftest. | session |
build #135245 SUCCESS · tests all Maloo sessions
patchsets:
PS1 11-02
PS2 11-02
build/test results are from PS1 — PS2…PS2 changed only the commit message (votes copied, CI not re-run)
owner James Simmons · uploader James Simmons · PS2 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-18687 fld: handle CONFIG_LUSTRE_FS_SERVER tristate Convert fld to tristate CONFIG_LUSTRE_FS_SERVER Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I749ceae35a936daad21a1a0e0078023b534634fe
70337
master
J –B ✓T ✓R 0/2
LU-18687 obdecho: handle CONFIG_LUSTRE_FS_SERVER tristate
mine 3 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
3 unresolved
M +50 −50
6h
LU-18687 obdecho: handle CONFIG_LUSTRE_FS_SERVER tristate
mine 3 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
3 unresolved
M +50 −50
6h
build #135256 SUCCESS · tests all Maloo sessions
threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (style) The subject and body say obdecho, but every hunk is under lustre/obdclass/, and lustre/obdecho/ still has about 30 `#ifdef CONFIG_LU
Gerrit AI review for Lustre
(style) The subject and body say obdecho, but every hunk is under lustre/obdclass/, and lustre/obdecho/ still has about 30 `#ifdef CONFIG_LUSTRE_FS_SERVER` lines (echo_client.c, echo_internal.h). Should this be `LU-18687 obdclass: handle CONFIG_LUSTRE_FS_SERVER tristate`?
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (style) If the patch is refreshed, the body could say why the change is needed. With CONFIG_LUSTRE_FS_SERVER=m, Kbuild defines only CONFIG_L
Gerrit AI review for Lustre
(style) If the patch is refreshed, the body could say why the change is needed. With CONFIG_LUSTRE_FS_SERVER=m, Kbuild defines only CONFIG_LUSTRE_FS_SERVER_MODULE, so a plain `#ifdef` silently compiles the server code out. It could also mention that lustre_handles.c changes from HAVE_SERVER_SUPPORT to CONFIG_LUSTRE_FS_SERVER. That one is a different macro, not just a change of form. It is equivalent in practice, because CONFIG_LUSTRE_FS_SERVER is defined whenever server modules are built.
reply Gerrit AI review for Lustre lu_tgt_descs.c:138 — (suggestion) The headers this code depends on still use plain `#ifdef CONFIG_LUSTRE_FS_SERVER`. For example, `lq_rr` in struct lu_qos (lu_ob
Gerrit AI review for Lustre
(suggestion) The headers this code depends on still use plain `#ifdef CONFIG_LUSTRE_FS_SERVER`. For example, `lq_rr` in struct lu_qos (lu_object.h), OBDF_NO_TRANSNO in obd.h, the server includes and SERVER_ONLY in obd_class.h, and lustre_log.h. In a =m in-kernel build, this block would be compiled but `qos->lq_rr` would not exist. The same applies to `OBDF_NO_TRANSNO` in class_cleanup(). Before this patch, that configuration was at least consistently client-only. There's no in-tree Kconfig yet, so nothing is broken today. Would it make sense to convert lustre/include/ before (or together with) the .c files, so that each patch in the series builds on its own in the target configuration?
owner James Simmons · uploader James Simmons · PS1 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-18687 obdecho: handle CONFIG_LUSTRE_FS_SERVER tristate Convert obdecho to tristate CONFIG_LUSTRE_FS_SERVER Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I13911144ed39a0cba72a9b9a4035569065571833
61282
master
J –B ✓T ✓R 0/2
LU-16832 lnet: add nanosecond delay latency support
carrying Sohei Koyama · 3 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
pw_shepherd
3 unresolved
L +183 −73
9h
LU-16832 lnet: add nanosecond delay latency support
carrying Sohei Koyama · 3 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
pw_shepherd
3 unresolved
L +183 −73
9h
build #135225 SUCCESS · tests all Maloo sessions
no vote yet: Serguei Smirnov, Chris Horn, Andreas Dilger
patchsets:
PS23 10-20 James Simmons
PS24 10-21 James Simmons
PS25 10-26 James Simmons
PS26 10-31 James Simmons
PS27 11-02 James Simmons
+22 earlier
PS1 09-12 PS2 09-12 PS3 09-12 PS4 09-12 PS5 09-12 Janitor Bot PS6 09-12 PS7 09-12 PS8 09-29 PS9 09-29 PS10 09-29 PS11 02-05 PS12 07-20 James Simmons PS13 09-02 James Simmons PS14 09-03 James Simmons PS15 09-04 James Simmons PS16 09-04 James Simmons PS17 09-04 James Simmons PS18 09-04 James Simmons PS19 09-06 James Simmons PS20 10-09 James Simmons PS21 10-09 James Simmons PS22 10-16 James Simmonsyour previous vote: +1 on PS18 (2026-09-05 15:29) — now at PS27
threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:19 — (minor) If the patch is refreshed: the body doesn't mention that yaml_emitter_get_output_version() is reworked to query the family version o
Gerrit AI review for Lustre
(minor) If the patch is refreshed: the body doesn't mention that yaml_emitter_get_output_version() is reworked to query the family version on its own private netlink socket, rather than the emitter's `ctrl` socket, and now sets the emitter error state on failure. This changes the behaviour of an exported liblnetconfig function, so a sentence about it, and why it was needed, would help.
reply Gerrit AI review for Lustre net_fault.c:979 — (minor) This adds to the overflow point raised on patchset 24. `tmp` is now `s64`, filled by nla_get_s64(), and `la_latency` is a signed `kt
Gerrit AI review for Lustre
(minor) This adds to the overflow point raised on patchset 24. `tmp` is now `s64`, filled by nla_get_s64(), and `la_latency` is a signed `ktime_t`. So a negative value from the netlink request gets past this check. For example, `--latency_ns` goes through strtoull(), and `-1` comes out as -1 ns. delay_rule_match() then sets `msg_delay_send` in the past and calls hrtimer_start() with a negative relative time. The rule is accepted, but messages are not actually delayed. With the old `u32` seconds field this value could not be negative. Should this reject `ktime_to_ns(attr->u.delay.la_latency) <= 0`? Values near KTIME_MAX also wrap when `ktime_get_ns()` is added to them in delay_rule_match(), so an upper bound may be worth adding too.
reply Gerrit AI review for Lustre liblnetconfig_netlink.c:1877 — (defect) `out` is still NULL here; it is only set from `request->write_handler_data` further down. So if genl_connect() fails, this derefere
Gerrit AI review for Lustre
(defect) `out` is still NULL here; it is only set from `request->write_handler_data` further down. So if genl_connect() fails, this dereferences a NULL pointer and lnetctl/lctl segfaults instead of reporting "socket failed to connect". The socket that was just allocated, `sk`, is also leaked. This path runs on every netlink delay add (`lnetctl fault delay add`, and `lctl net_delay_add` through fault_simul_rule_add()). Should this be `nl_socket_free(sk);`?
tags: pw_shepherd
owner Sohei Koyama · uploader James Simmons · PS27 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-16832 lnet: add nanosecond delay latency support Introduce nanosecond-resolution latency for LNet delay fault injection. The previous interface accepted latency only in seconds (u32). This change promotes the field to nanoseconds (ktime) and plumbs it so that sub-second delays in nanoseconds can be expressed precisely. Since this changes the Netlink output we bump the LNet netlink family version. The user land code is updated to accept and process the new latency_ns option for the non ioctl approach. All ioctl usage only accepts seconds. The internal timer is moved to hrtimer for finer level of time resolution. Test-Parameters: trivial Signed-off-by: Sohei Koyama <skoyama@ddn.com> Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I9ed1bd34cef0f0bf647f87d17dd68f05274e2b28
57877
master
J –B ✓T ✓R +2/2
LU-8066 quota: migrate quota out of procfs
mine Verified -1 veto by Oleg Drokin
Verified -1
upstream
pw_shepherd
master-next
2 unresolved
L +500 −382
11h
LU-8066 quota: migrate quota out of procfs
mine Verified -1 veto by Oleg Drokin
Verified -1
upstream
pw_shepherd
master-next
2 unresolved
L +500 −382
11h
Verified -1 veto by Oleg Drokin
2 reviewer comment(s) to address if a respin is needed — last from Gerrit AI review for Lustre
build #134181 SUCCESS · tests all Maloo sessions
reviews:
Arshad Hussain +1 · Timothy Day +1
no vote yet: Shaun Tancheff, Sergey Cheremencev, Andreas Dilger, Oleg Drokin
patchsets:
PS30 10-05
PS31 10-05
PS32 10-05
PS33 10-06
PS34 10-21
+29 earlier
PS1 01-24 PS2 02-28 PS3 07-27 PS4 07-30 PS5 08-20 PS6 01-15 PS7 04-20 PS8 08-14 PS9 08-14 PS10 08-14 PS11 08-30 PS12 08-30 PS13 08-30 PS14 09-01 PS15 09-03 PS16 09-03 PS17 09-03 PS18 09-04 PS19 09-05 PS20 09-07 PS21 09-07 PS22 09-07 PS23 09-14 PS24 09-20 PS25 09-22 PS26 09-22 PS27 09-22 PS28 09-23 PS29 09-23threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (minor) If the patch is refreshed, could the body name the parameters that moved and where they now live? That would make the change findabl
Gerrit AI review for Lustre
(minor) If the patch is refreshed, could the body name the parameters that moved and where they now live? That would make the change findable with git log, and it would help whoever has to update monitoring scripts. For example:
- sysfs: `osd-*.*.quota_slave{,_md,_dt}.{enabled,force_reint,timeout,verion_mismatch_timeout,root_prj_enable}` and `qmt.*.*.soft_least_qunit`
- debugfs: `info`, `acct_*`, `limit_*` and `glb-*`
The body could also mention two other behaviour changes:
- /proc/fs/lustre/qmt is now gone unconditionally, and /proc/fs/lustre/osd-* only exists when `symlink_brw_stats=1` is set at module load. The parameter is now 0444.
- osd_device_init0() now calls qsd_fini() on the alloc_percpu() failure path. This is needed because the qsd kobjects are children of `dd_kobj`.
reply Gerrit AI review for Lustre qsd_lib.c:55 — (typo) This isn't a bug, but this still says "procfs helpers", and the same comment in qmt_pool.c was updated. If the patch is refreshed, a
Gerrit AI review for Lustre
(typo) This isn't a bug, but this still says "procfs helpers", and the same comment in qmt_pool.c was updated. If the patch is refreshed, a few other stale mentions could be fixed at the same time: - the qmt_dev.c header comment and the qmt_device_init0() comment both still say "QMT procfs directory" and "root procfs directory" - the `out_procfs` label in osd-ldiskfs osd_device_init0() now calls osd_tunables_fini()
tags: pw_shepherd
owner James Simmons · uploader James Simmons · PS34 uploaded 13d ago · NEW · open in Gerrit ↗
commit message
LU-8066 quota: migrate quota out of procfs With the upstream kernel requirement of not using procfs move the quota proc entries over to debugfs / sysfs. The simple entries are placed into sysfs and the complex into the debugfs tree. Extend the time to support proc symlink until after the 2.18 LTS release. Now on osd module load the symlink_brw_stats will determine if procfs is setup at all. Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I003841c4e9131db9ac423763fa817097c09ed83d
66739
master
J –B ✓T ✓R 0/2
LU-19921 sec: add disable_rootsquash mount option
reviewing wangdi · PS1→PS57 since your -1 — your objection was dropped
pw_shepherd
1 unresolved
L +280 −43
17h
LU-19921 sec: add disable_rootsquash mount option
reviewing wangdi · PS1→PS57 since your -1 — your objection was dropped
pw_shepherd
1 unresolved
L +280 −43
17h
build #135121 SUCCESS · tests all Maloo sessions
no vote yet: Jinshan Xiong, Bruno Faccini, Sebastien Buisson, Andreas Dilger
patchsets:
PS53 08-26
PS54 08-27
PS55 09-07
PS56 10-23
PS57 11-01
+52 earlier
PS1 06-18 PS2 06-19 PS3 06-20 PS4 06-22 PS5 06-22 PS6 07-10 PS7 07-12 PS8 07-20 PS9 07-24 PS10 07-27 PS11 07-29 PS12 07-30 PS13 08-02 PS14 08-02 PS15 08-02 PS16 08-02 PS17 08-02 PS18 08-04 PS19 08-05 PS20 08-05 PS21 08-06 PS22 08-06 PS23 08-07 PS24 08-07 PS25 08-07 PS26 08-07 PS27 08-08 PS28 08-09 PS29 08-09 PS30 08-10 PS31 08-11 PS32 08-13 PS33 08-13 PS34 08-13 PS35 08-13 PS36 08-14 PS37 08-15 PS38 08-16 PS39 08-17 PS40 08-18 PS41 08-18 PS42 08-18 PS43 08-19 PS44 08-20 PS45 08-21 PS46 08-22 PS47 08-22 PS48 08-22 PS49 08-23 PS50 08-24 PS51 08-25 PS52 08-25your previous vote: -1 on PS1 (2026-06-18 21:52) — now at PS57
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Sebastien Buisson tgt_gssiam.c:443 — It looks like this concern is valid?
Gerrit AI review for Lustre
(defect) Is the grant meant to be limited by what the client requested? Right now nothing masks it with the entry's request options (gssiam->gd_options, which also forms part of the cache key). Any helper reply with bit 0x2 set adds GSSIAM_AUTH_DISABLE_ROOT_SQUASH, even when the mount did not pass -o disable_rootsquash.
The PS9 reply to the question about why the client needs a mount option said that a user who holds the no-rootsquash right should still be able to mount with root squash by leaving the option off. The commit message promises the same ("unless explicitly requested at mount and authorized"). With a helper that reports the principal's rights rather than echoing the request, that does not hold:
mount without disable_rootsquash -> lid_options = 0 -> argv[5] = "0"
helper writes "rw:600:2:alice"
-> perm = RW | DISABLE_ROOT_SQUASH
-> tgt_gssiam_info_alloc() keeps it
-> gssiam_get_nodemap() -> nodemap_gssiam_attrs_update(..., allow_root = true)
Only the mock l_gssiam_auth checks the request. The l_gssiam_auth.8 text ("to allow disabling root squash if requested by the client") reads as if the kernel does the check.
Would it be safer to test `val & gssiam->gd_options & GSSIAM_OPT_DISABLE_ROOT_SQUASH` here? The OST/remote-MDT callback path goes through this same parser, so that one check would cover both paths.
Sebastien Buisson
It looks like this concern is valid?
tags: pw_shepherd
owner wangdi · uploader wangdi · PS57 uploaded 2d ago · NEW · open in Gerrit ↗
commit message
LU-19921 sec: add disable_rootsquash mount option
Add the -o disable_rootsquash mount option, allowing users to
explicitly request disabling root squash on GSSIAM mounts when
authorized by the external GSSIAM authority.
Specifically, this patch implements:
- Client Mount Option:
Adds -o disable_rootsquash parsing in lustre/llite/llite_lib.c
and packs GSSIAM_OPT_DISABLE_ROOT_SQUASH in the GSSIAM init ctx
options payload.
- Server Nodemap Privilege Raising:
When authorized by the external GSSIAM server
(GSSIAM_AUTH_DISABLE_ROOT_SQUASH), gssiam_get_nodemap() passes
allow_root=true to nodemap_gssiam_attrs_update(). The per-identity
dynamic child nodemap is permitted to raise allow_root via the
parent 'gssiam' nodemap's pre-configured NODEMAP_RAISE_PRIV_ADMIN
delegation capability. Root squash remains strictly enforced
(allow_root=false) by default unless explicitly requested at mount
and authorized by the GSSIAM server.
- Extended Upcall Downcall Format:
Extends the kernel/userspace downcall contract by adding an
":options" field to the downcall string format parsed in
tgt_gssiam.c ("mount_option:expire:options:principal"), allowing
l_gssiam_auth to pass authorized permission/option flags to the
kernel upcall cache.
- Dedicated GSSIAM Option Flags:
Defines enum gssiam_mount_option_flags (GSSIAM_OPT_RDONLY and
GSSIAM_OPT_DISABLE_ROOT_SQUASH) in lustre_idl.h, cleanly separating
the GSSIAM option space from generic OBD_CONNECT_* connection flags.
Signed-off-by: Di Wang <ddiwang@google.com>
Change-Id: I35af55f4ff4193195028b157758a7b30bb2e0f9d
68021
master
J –B ✓T ✓R +1/2
LU-19921 tests: add GSSIAM security test
reviewing wangdi · PS24→PS25 since your -1 — your objection was dropped
7 unresolved
XL +1368 −22
22h
LU-19921 tests: add GSSIAM security test
reviewing wangdi · PS24→PS25 since your -1 — your objection was dropped
7 unresolved
XL +1368 −22
22h
build #135123 SUCCESS · tests all Maloo sessions
reviews:
Sebastien Buisson +1
no vote yet: Jinshan Xiong, Bruno Faccini, Andreas Dilger
patchsets:
PS21 09-07
PS22 09-09
PS23 10-23
PS24 10-27
PS25 11-01
+20 earlier
PS1 08-14 PS2 08-15 PS3 08-16 PS4 08-17 PS5 08-18 PS6 08-18 PS7 08-18 PS8 08-19 PS9 08-20 PS10 08-21 PS11 08-22 PS12 08-22 PS13 08-22 PS14 08-23 PS15 08-24 PS16 08-25 PS17 08-25 PS18 08-26 PS19 08-27 PS20 09-04your previous vote: -1 on PS24 (2026-10-28 13:57) — now at PS25
threads: 7 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (minor) The subject says "tests:", but the patch also changes server behaviour, and the body doesn't describe it:
Gerrit AI review for Lustre
(minor) The subject says "tests:", but the patch also changes server behaviour, and the body doesn't describe it: - tgt_gssiam_verify() now rejects with -EPERM any principal starting with "mock_gssiam_" unless OBD_FAIL_SEC_GSSIAM_MOCK_TEST or OBD_FAIL_SEC_GSSIAM_EXPIRED_TOKEN is set. - l_gssiam_auth used to approve every token unconditionally. It now returns "deny" for anything other than the four mock tokens. - The new lustre_gssiam_mock.h header is shared by the kernel and the utilities. Together these mean the shipped reference upcall pair no longer authenticates anything on a server without fail_loc set. Could the body say so? It may also be worth choosing a component that covers the target/ptlrpc changes (e.g. "sec:").
reply Gerrit AI review for Lustre COMMIT_MSG:11 — (minor) This patch doesn't change test_300. It was added by the previous patch in the series ("LU-19921 sec: add disable_rootsquash mount op
Gerrit AI review for Lustre
(minor) This patch doesn't change test_300. It was added by the previous patch in the series ("LU-19921 sec: add disable_rootsquash mount option"), and the sanity-sec hunks here only touch dyn_nm_helper() and add test_301-310. Is the "test_300 rootsquash check updates" text left over from an earlier patchset?
reply Gerrit AI review for Lustre COMMIT_MSG:17 — (typo) The patch defines OBD_FAIL_SEC_GSSIAM_EXPIRED_TOKEN (0x1206), not OBD_FAIL_SEC_GSSIAM_EXP_CLIENT, so a `git log` grep for the real na
Gerrit AI review for Lustre
(typo) The patch defines OBD_FAIL_SEC_GSSIAM_EXPIRED_TOKEN (0x1206), not OBD_FAIL_SEC_GSSIAM_EXP_CLIENT, so a `git log` grep for the real name won't find this commit.
reply Gerrit AI review for Lustre COMMIT_MSG:21 — (typo) The constants are named GSSIAM_MOCK_RW, GSSIAM_MOCK_RO, GSSIAM_MOCK_EXPIRED and GSSIAM_MOCK_DENY (in lustre/include/lustre_gssiam_moc
Gerrit AI review for Lustre
(typo) The constants are named GSSIAM_MOCK_RW, GSSIAM_MOCK_RO, GSSIAM_MOCK_EXPIRED and GSSIAM_MOCK_DENY (in lustre/include/lustre_gssiam_mock.h), not MOCK_GSSIAM_*.
reply Gerrit AI review for Lustre l_gssiam_upcall.8:58 — (minor) l_gssiam_upcall.c also registers the long option `--expired` for this. Should the SYNOPSIS and this entry use `.BR -e ", " --expired
Gerrit AI review for Lustre
(minor) l_gssiam_upcall.c also registers the long option `--expired` for this. Should the SYNOPSIS and this entry use `.BR -e ", " --expired`, as the other options do?
reply Gerrit AI review for Lustre lustre_gssiam_mock.h:6 — (minor) tgt_gssiam_verify() and sptlrpc_rule_set_choose() also accept OBD_FAIL_SEC_GSSIAM_EXPIRED_TOKEN as the override, not only OBD_FAIL_S
Gerrit AI review for Lustre
(minor) tgt_gssiam_verify() and sptlrpc_rule_set_choose() also accept OBD_FAIL_SEC_GSSIAM_EXPIRED_TOKEN as the override, not only OBD_FAIL_SEC_GSSIAM_MOCK_TEST. Should this comment mention both?
reply Gerrit AI review for Lustre l_gssiam_auth.c:127 — (minor) With this branch the reference helper denies every real token. The comment above still says "Validate token by external server", and
Gerrit AI review for Lustre
(minor) With this branch the reference helper denies every real token. The comment above still says "Validate token by external server", and l_gssiam_auth(8) still says the helper validates the token against the enterprise GSSIAM service and returns the mapped permissions. If the patch is refreshed, could the comment and the man page say that this helper only recognizes the mock_gssiam_* test tokens? The man page could also note that the target accepts those only with fail_loc 0x1205/0x1206 set.
owner wangdi · uploader wangdi · PS25 uploaded 2d ago · NEW · open in Gerrit ↗
commit message
LU-19921 tests: add GSSIAM security test Add 301-310 for GSSIAM security flavor in sanity-sec security test, including dyn_nm_helper() fileset cleanup and test_300 rootsquash check updates. Add 180a-e in recovery-small and 204, 205 in replay-single.sh for GSSIAM. Add OBD_FAIL_SEC_GSSIAM_MOCK_TEST and OBD_FAIL_SEC_GSSIAM_EXP_CLIENT fail_loc tunables for testing GSSIAM in local node environments. Add -e option to l_gssiam_upcall and update l_gssiam_upcall(8) man page. Add MOCK_GSSIAM_RW, MOCK_GSSIAM_RO, MOCK_GSSIAM_EXPIRED, and MOCK_GSSIAM_DENY mock principal handling in l_gssiam_auth.c. Update sptlrpc_rule_set_choose() loopback selection in sec_config.c and exclude gssiam in flvr_cnt_cli2mdt/cli2ost/mdt2mdt/mdt2ost helpers. Signed-off-by: Di Wang <ddiwang@google.com> Change-Id: Ic2d797ca7c49ac3df06773f96915b563dcd6c0d8
57671
master
J –B ✗T –R +1/2
LU-10499 pcc: add --pin option for 'lfs pcc attach'
mine build failure (#135127)
pccro
L +525 −80
2d
LU-10499 pcc: add --pin option for 'lfs pcc attach'
mine build failure (#135127)
pccro
L +525 −80
2d
build #135127 FAILURE
reviews:
Andreas Dilger +1
no vote yet: Qian Yingjin, Feng Lei
patchsets:
PS1 01-07
PS2 10-31 Andreas Dilger
PS3 11-01 Andreas Dilger
tags: pccro
owner James Simmons · uploader Andreas Dilger · PS3 uploaded 2d ago · NEW · open in Gerrit ↗
commit message
LU-10499 pcc: add --pin option for 'lfs pcc attach'
Add a --pin|-p option to "lfs pcc attach" and "lfs pcc attach_fid"
to pin each file for the PCC backend before attaching it, so that
users do not need to run "lfs pcc pin" separately. A file that
cannot be pinned is not attached. Without --id, the backend is
chosen once, so that the file is pinned for the backend it is
attached to.
Add llapi_pcc_pin_fd(), llapi_pcc_pin_fid(), llapi_pcc_unpin_fd()
and llapi_pcc_unpin_fid() to match the pool pin functions, which
use the same lustre.pin xattr. attach_fid pins the file with
llapi_pcc_pin_fid(), which also works on subdirectory mounts. The
pin functions share the pin xattr update and no longer leak the
parsed pin object.
Setting lustre.pin on the MDT took the UPDATE lock as well as the
XATTR lock. This would cancel a combined UPDATE|LAYOUT lock on the
client and detach a PCC-RO file, so "lfs pcc pin" of an attached
file would detach it. Do not take the UPDATE lock for the pin,
whether it is set as lustre.pin or as trusted.pin, and do not update
ctime, which clients cache under the UPDATE lock, as for the HSM
state.
Add llapi_pcc_pin_file.3 for the pin functions, and sanity-pcc
test_204d and test_204e.
Was-Change-Id: I35a0e399294020efdb0e4710500e8f7b846c290f
Was-Change-Id: If0120d745418836cfdf449a795b6f524c40f9c27
Test-Parameters: trivial testlist=sanity-pcc
Fixes: 84100d7f7d38 ("LU-10499 pcc: tunable GID to pin/unpin files")
Signed-off-by: Lei Feng <flei@whamcloud.com>
Signed-off-by: Qian Yingjin <qian@ddn.com>
Signed-off-by: Andreas Dilger <adilger@thelustrecollective.com>
Assisted-by: ClaudeCode:claude-opus-5-5 ltvm llm_code_and_review_tools
Change-Id: Iee873821ff5815fd6b56ed8f4c48147f5ef9321f
66791
master
J –B ✓T ✓R ✗
LU-18687 build: reimplement dist target in plain make
carrying Timothy Day · needs rebase — checkpatch: cannot be cherry-picked
needs rebaseCR -1
9 unresolved
M +92 −74
3d
LU-18687 build: reimplement dist target in plain make
carrying Timothy Day · needs rebase — checkpatch: cannot be cherry-picked
needs rebaseCR -1
9 unresolved
M +92 −74
3d
needs rebase — checkpatch: cannot be cherry-picked
Timothy Day voted -1
8 unresolved thread(s) await your reply — last from Oleg Drokin
1 thread(s) waiting on others
no vote yet from Shaun Tancheff, Andreas Dilger
build #130840 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Arshad Hussain +1 · Timothy Day -1
no vote yet: Shaun Tancheff, Andreas Dilger
patchsets:
PS2 06-22
PS3 06-22
PS4 06-22
PS5 07-10
PS6 09-02 James Simmons
+1 earlier
PS1 06-22your previous vote: +1 on PS5 (2026-07-10 19:34) — now at PS6
threads: 8 need your reply · 1 waiting on others · 0 own notes · 0 bot
reply Oleg Drokin patchset comment — I think we need the answers to the ai review as some of them sound at least somewhat scary?
Oleg Drokin
I think we need the answers to the ai review as some of them sound at least somewhat scary?
reply Gerrit AI review for Lustre Makefile:33 — (minor) This include is unconditional, but `autoMakefile` is still included for every goal outside `ALWAYS_TARGETS`, and automake keeps emit
Gerrit AI review for Lustre
(minor) This include is unconditional, but `autoMakefile` is still included for every goal outside `ALWAYS_TARGETS`, and automake keeps emitting a `dist dist-all:` rule in the top-level Makefile (lib/am/distdir.am, guarded only by `TOPDIR_P`). So `make rpms`, `make srpm` and `make install` now parse two recipes for `dist` and print
config/Makefile.dist:69: warning: overriding recipe for target 'dist'
autoMakefile:NNNN: warning: ignoring old recipe for target 'dist'
which is what the comment above the conditional include exists to prevent. Could the fragment be included only in the branch that skips autoMakefile?
Separately, being unconditional means every invocation - `make help` included - now runs LUSTRE-VERSION-GEN, `git rev-parse`, a tree-wide `find`, and one `git ls-files` fork per `*.in` file at parse time. None of the other `config/Makefile.*` fragments do shell work at parse time.
reply Gerrit AI review for Lustre Makefile.dist:21 — (minor) These three targets (no-lustre.spec, no-lustre-dkms.spec, no-LUSTRE-VERSION-FILE) are never referenced — dist: has no prerequisites
Gerrit AI review for Lustre
(minor) These three targets (no-lustre.spec, no-lustre-dkms.spec, no-LUSTRE-VERSION-FILE) are never referenced — dist: has no prerequisites and nothing else depends on them, so they're dead scaffolding. no-lustre-dkms.spec also substitutes @VERSION@ with $(LVF), which is never defined in this file and expands to empty. If they're leftovers, consider dropping them; if they were meant to generate the specs before archiving, dist: should depend on them and $(LVF) should be $(VERSION).
reply Oleg Drokin Makefile.dist:9 — this probaby deserves at least some comment to refute it if there's anything to refute?
Gerrit AI review for Lustre
(defect) `VERSION` and `PACKAGE` are also defined by `config/Makefile.exports`, which the top-level Makefile includes on the very next line, so `VERSION = @VERSION@` wins for everything downstream. `TARNAME` is `:=`, so it keeps the LUSTRE-VERSION-GEN value. That splits the tarball name in two: `dist` writes `lustre-$(LUSTRE-VERSION-GEN).tar.gz`, while `srpm` runs `rpmbuild -ts $(PACKAGE_TARNAME)-$(VERSION).tar.gz` with the configure-time `@VERSION@`. Touch any tracked file after configure and LUSTRE-VERSION-GEN appends `_dirty`, so the names diverge and `make srpm`/`make rpms` fails on a missing tarball. Committing anything after configure does the same. automake derived distdir from `@VERSION@`, so the two could not drift before. Can this reuse `$(PACKAGE_TARNAME)-$(VERSION)` from Makefile.exports, or at least use names that don't collide with it?
Oleg Drokin
this probaby deserves at least some comment to refute it if there's anything to refute?
reply Gerrit AI review for Lustre Makefile.dist:15 — (minor) This doesn't seem to hold. `Makefile` picks the fragment up with a relative `-include config/Makefile.dist`, and `./LUSTRE-VERSION-G
Gerrit AI review for Lustre
(minor) This doesn't seem to hold. `Makefile` picks the fragment up with a relative `-include config/Makefile.dist`, and `./LUSTRE-VERSION-GEN` plus the `--add-file` paths are relative to the cwd as well:
$ mkdir build && cd build && make -f ../Makefile dist
make: *** No rule to make target 'dist'. Stop.
Run from the top of the checkout, `git rev-parse --git-dir` just prints `.git`, which is what plain `git archive` would use anyway. Is the explicit `--git-dir` buying anything?
reply Gerrit AI review for Lustre Makefile.dist:70 — (defect) `.ONESHELL:` is in effect from the top-level Makefile, so the whole recipe runs in one shell and the exit status comes from the tra
Gerrit AI review for Lustre
(defect) `.ONESHELL:` is in effect from the top-level Makefile, so the whole recipe runs in one shell and the exit status comes from the trailing `echo`, not from `git archive`. A failed archive leaves a 0-byte `$(TAR_DEST)` behind and the target still succeeds:
$ make dist
fatal: File not found: nonexistent
DIST lustre-....tar.gz
$ echo $?
0
`srpm` then feeds that empty file to rpmbuild. config/Makefile.pkg-rpm ends each command with `|| exit 1` for exactly this reason. Should this do the same, and `rm -f $(TAR_DEST)` when the archive fails?
(Same reason the `@` on the echo below has no effect - under .ONESHELL only the first line's prefix counts, so the full git command is echoed.)
reply Gerrit AI review for Lustre Makefile.dist:73 — (minor) `--add-file`, and the "last `--prefix` before it wins" behaviour the ADD_FILES construction relies on, arrived in git 2.38. `lustre/
Gerrit AI review for Lustre
(minor) `--add-file`, and the "last `--prefix` before it wins" behaviour the ADD_FILES construction relies on, arrived in git 2.38. `lustre/kernel_patches/targets/` still carries 4.18-rhel8.x and 5.3/5.14-sles15sp* targets, and those distros ship git 2.31/2.35. On such a host `make dist` fails outright - silently, given the exit-status issue above. Worth a minimum-git check here, or a note in the commit message?
reply Gerrit AI review for Lustre Makefile.dist:77 — (defect) `git archive HEAD` packages the committed tree; the automake `distdir` copied from `$(srcdir)`, i.e. the working tree. Building RPM
Gerrit AI review for Lustre
(defect) `git archive HEAD` packages the committed tree; the automake `distdir` copied from `$(srcdir)`, i.e. the working tree. Building RPMs from a modified checkout is the normal edit/test loop, and the result is now labelled `_dirty` by LUSTRE-VERSION-GEN while the contents come from HEAD. Is dropping uncommitted work intended?
It also makes `dist` git-only. From an unpacked release tarball `git rev-parse --git-dir` fails, `GIT_DIR` is empty, and:
$ git --git-dir= archive --format=tar.gz --prefix=x/ HEAD
fatal: not a git repository: ''
so `make dist`/`make srpm` no longer work there. That's a supported path today - should the commit message call it out?
owner Timothy Day · uploader James Simmons · PS6 uploaded 63d ago · NEW · open in Gerrit ↗
commit message
LU-18687 build: reimplement dist target in plain make Presently, automake handles the dist and install targets. Reimplement the automake dist target in plain make using git archive (along with allowlisting files generated by autotools). Test-Parameters: trivial Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: Ifaacd294a03f9c54279d935f7cbc9b8ab926624d
39910
master
J –B ✓T ✓R 0/2
LU-13745 tests: test splice() reads with PCC-RO
mine 4 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
4 unresolved
M +84 −3
3d
LU-13745 tests: test splice() reads with PCC-RO
mine 4 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
4 unresolved
M +84 −3
3d
4 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
CI green — no vote yet from Wang Shilong, Qian Yingjin, Andreas Dilger
build #134957 SUCCESS · tests all Maloo sessions
no vote yet: Wang Shilong, Qian Yingjin, Andreas Dilger
patchsets:
PS4 02-07
PS5 10-30 Andreas Dilger
threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:19 — (minor) On newer kernels the O_DIRECT runs don't reach pcc_file_splice_read(). In 6.12 (RHEL10), vfs_splice_read() sends O_DIRECT files to c
Gerrit AI review for Lustre
(minor) On newer kernels the O_DIRECT runs don't reach pcc_file_splice_read(). In 6.12 (RHEL10), vfs_splice_read() sends O_DIRECT files to copy_splice_read() before it looks at ->splice_read:
if ((in->f_flags & O_DIRECT) || IS_DAX(...))
return copy_splice_read(in, ppos, pipe, len, flags);
That path is copy_splice_read()->ll_file_read_iter()->pcc_file_read_iter(). So -n and -nr test the PCC read_iter path there, not pcc_file_splice_read(). Should the message say that only el8-era kernels route O_DIRECT splice through pcc_file_splice_read()?
reply Gerrit AI review for Lustre COMMIT_MSG:22 — (suggestion) An earlier patchset asked whether this should use 'trivial'. The kernel difference above is a new reason to ask. The el8.10/el9
Gerrit AI review for Lustre
(suggestion) An earlier patchset asked whether this should use 'trivial'. The kernel difference above is a new reason to ask. The el8.10/el9.8 sessions that trivial now runs won't cover the 6.12 copy_splice_read() path. Would adding a RHEL10 client run, e.g. 'clientdistro=el10.2', be worthwhile here?
reply Gerrit AI review for Lustre sanity-pcc.sh:2269 — (minor) Can this check pass when splice skips PCC? `lfs pcc attach` fills the Lustre page cache:
Gerrit AI review for Lustre
(minor) Can this check pass when splice skips PCC? `lfs pcc attach` fills the Lustre page cache:
pcc_readonly_attach()->pcc_attach_data_archive() clears O_DIRECT, then pcc_copy_data() reads the whole file with kernel_read(). That happens after pcc_layout_rdonly_set(), and nothing drops those pages afterward.
For -nd and -ndr, a splice that fell back to the normal Lustre path would read from that cache. That sends no ost_read RPCs, and cmp still matches. Dropping the client's cached pages after the attach would make the check meaningful, e.g.:
do_facet $SINGLEAGT $LCTL set_param -n ldlm.namespaces.*osc*.lru_size=clear
reply Gerrit AI review for Lustre splice-test.c:169 — (minor) With -n, `size` comes from fstat() on the Lustre file, but the data comes from the PCC copy. If that copy is shorter, which is the k
Gerrit AI review for Lustre
(minor) With -n, `size` comes from fstat() on the Lustre file, but the data comes from the PCC copy. If that copy is shorter, which is the kind of bug this test looks for, splice() returns 0 at its EOF. do_splice1() and do_splice2() then loop forever on `while (size)` with spliced == 0. The test hangs until the test session times out instead of failing. The loop is pre-existing, but -n makes it reachable. Could spliced == 0 be treated as an unexpected EOF, as read_from_pipe() already does?
owner James Simmons · uploader Andreas Dilger · PS5 uploaded 4d ago · NEW · open in Gerrit ↗
commit message
LU-13745 tests: test splice() reads with PCC-RO There is no test that splice() of a PCC-RO cached file reads from the PCC copy through pcc_file_splice_read(). splice-test writes the file before splicing it, which would invalidate a PCC-RO copy. Add a -n option to splice-test to splice an existing file without writing it, and copy the spliced data to stdout, so that it can be compared with the expected data. Also count the bytes actually read from the pipe, not the requested size. Add sanity-pcc test_21k to splice a PCC-RO cached file, with and without O_DIRECT and a concurrent pipe reader, and check that no read RPCs are sent to the OSTs and the data matches the PCC copy. Test-Parameters: trivial testlist=sanity-pcc Signed-off-by: James Simmons <jsimmons@infradead.org> Signed-off-by: Andreas Dilger <adilger@thelustrecollective.com> Assisted-by: ClaudeCode:claude-opus-5-5 ltvm llm_code_and_review_tools Change-Id: Iae2517110c7332a81d0334232772ef1844d320ae
69872
master
J –B ✓T ✓R +1/2
LU-18687 build: rework Lustre headers for upstreaming
mine 8 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
8 unresolved
M +62 −23
4d
LU-18687 build: rework Lustre headers for upstreaming
mine 8 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
8 unresolved
M +62 −23
4d
8 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
no vote yet from patrick bot, Arshad Hussain, Andreas Dilger
build #134774 SUCCESS · tests all Maloo sessions
reviews:
Timothy Day +1
no vote yet: patrick bot, Arshad Hussain, Andreas Dilger
patchsets:
PS1 10-21
PS2 10-22
PS3 10-22
PS4 10-29
threads: 8 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:11 — (style) The biggest change in this patch isn't described: lustre_compat.h is no longer included by lu_object.h or lustre_mdc.h. Through lust
Gerrit AI review for Lustre
(style) The biggest change in this patch isn't described: lustre_compat.h is no longer included by lu_object.h or lustre_mdc.h. Through lustre_net.h, about 200 kernel .c files used to get lustre_compat.h, and now they don't. The fixups in obdo.c, fid_lib.c, dt_object.c and lustre_mdc.h follow from that. Could the body say so, and also name what "headers we need to build against the Linux kernel" means? That part is uapi/linux/lustre/lustre_ver.h for LUSTRE_VERSION_STRING in ec_kmod.c, ec_test.c and kinode.c.
reply Gerrit AI review for Lustre sha2.h:3 — (suggestion) lustre_compat/fs/crypto/hkdf.c and lustre_compat/fs/crypto/keysetup.c still carry the same #ifdef HAVE_CRYPTO_SHA2_HEADER / <cr
Gerrit AI review for Lustre
(suggestion) lustre_compat/fs/crypto/hkdf.c and lustre_compat/fs/crypto/keysetup.c still carry the same #ifdef HAVE_CRYPTO_SHA2_HEADER / <crypto/sha.h> block. Could they include this header instead?
reply Gerrit AI review for Lustre filelock.h:3 — (suggestion) lustre/llite/file.c and lustre/ldlm/ldlm_flock.c still open-code the same #ifdef HAVE_LINUX_FILELOCK_HEADER. Since the goal is
Gerrit AI review for Lustre
(suggestion) lustre/llite/file.c and lustre/ldlm/ldlm_flock.c still open-code the same #ifdef HAVE_LINUX_FILELOCK_HEADER. Since the goal is to remove these ifdefs, could they use this header too? Also, filelock.h, sha2.h and mm_types.h have no include guards, while prandom.h and stdarg.h added in the same patch do. This is harmless, but inconsistent.
reply Gerrit AI review for Lustre stdarg.h:10 — (minor) On kernels that have linux/stdarg.h, this header now includes nothing. Before, lu_object.h included <linux/stdarg.h> explicitly, and
Gerrit AI review for Lustre
(minor) On kernels that have linux/stdarg.h, this header now includes nothing. Before, lu_object.h included <linux/stdarg.h> explicitly, and va_list in lu_object.h now only works because some other header pulls it in. The other headers in this patch (prandom.h, filelock.h, sha2.h) include the real header in both branches. Should this one too?
#ifdef HAVE_LINUX_STDARG_HEADER
#include <linux/stdarg.h>
#else
#include <stdarg.h>
#endif
reply Gerrit AI review for Lustre fid_lib.c:21 — (nit) fid_lib.c doesn't seem to use anything from <linux/fs.h>, and obd.h already includes it. Is this include needed? <dt_object.h> makes s
Gerrit AI review for Lustre
(nit) fid_lib.c doesn't seem to use anything from <linux/fs.h>, and obd.h already includes it. Is this include needed? <dt_object.h> makes sense because of struct dt_device.
reply Gerrit AI review for Lustre lu_object.h:887 — (minor) struct lu_rdpg still declares `struct folio **rp_folios`. On kernels without folios (el8), that name only means `struct page` once l
Gerrit AI review for Lustre
(minor) struct lu_rdpg still declares `struct folio **rp_folios`. On kernels without folios (el8), that name only means `struct page` once lustre_compat/linux/folio.h has done `#define folio page`. lu_object.h used to get that header through lustre_compat.h. With that include removed, the header is no longer self-contained. Any file that includes lu_object.h before folio.h now sees this field as a pointer to an opaque `struct folio`. Its own code then uses `struct page`, which gives an incompatible-pointer-type build error on el8. dt_object.c only builds because the new mm_types.h include sits above obd_class.h. Without that line, lu_object.h is processed before folio.h in that file. Would it be more robust for lu_object.h to include lustre_compat/linux/folio.h itself, instead of relying on each user's include order?
reply Gerrit AI review for Lustre lustre_mdc.h:25 — (minor) Nothing in lustre_mdc.h uses the compat fs.h helpers. The include appears to be there so lmv_intent.c gets the compat inode_set_atim
Gerrit AI review for Lustre
(minor) Nothing in lustre_mdc.h uses the compat fs.h helpers. The include appears to be there so lmv_intent.c gets the compat inode_set_atime()/inode_set_mtime(), which lmv_revalidate_slaves() calls. obdo.c got the same fix directly in the .c file. For consistency, and to avoid another hidden transitive dependency, should lmv_intent.c include lustre_compat/linux/fs.h itself, with lustre_mdc.h keeping <linux/fs.h>?
reply Gerrit AI review for Lustre dt_object.c:22 — (style) This isn't a bug, but the new lustre_compat/linux/mm_types.h doesn't include <linux/mm_types.h>. It is only an alias for lustre_comp
Gerrit AI review for Lustre
(style) This isn't a bug, but the new lustre_compat/linux/mm_types.h doesn't include <linux/mm_types.h>. It is only an alias for lustre_compat/linux/folio.h, and what dt_object.c needs from it is ll_kmap_local_folio(). The include also only works because it sits between <linux/list.h> and <linux/module.h>, ahead of obd_class.h (see the lu_object.h comment). If lu_object.h included folio.h itself, could this file include folio.h directly, or nothing extra, and mm_types.h be dropped?
owner James Simmons · uploader James Simmons · PS4 uploaded 5d ago · NEW · open in Gerrit ↗
commit message
LU-18687 build: rework Lustre headers for upstreaming We have many ifdef HAVE_HEADER which makes upstreaming more difficult. Create compat headers to clean up the ifdefs. Also include headers we need to build against the Linux kernel Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I2e32960dc2203f03f348821ffa33f5a169add42a
68287
master
J !B ✗T –R -1/2−
LU-14291 obdclass: unwind server code out of llog
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
XL +1100 −1073
6d
LU-14291 obdclass: unwind server code out of llog
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
XL +1100 −1073
6d
needs rebase — checkpatch: cannot be cherry-picked
build failure (#130151)
janitor run: build failed — no tests ran — janitor results
build #130151 FAILURE
owner James Simmons · uploader James Simmons · PS1 uploaded 71d ago · NEW · open in Gerrit ↗
commit message
LU-14291 obdclass: unwind server code out of llog Currently server internals are being pulled into llog. Break out all the server code which limits the scope of the DT API. Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Ia11f6c26289f43260c1606fb031c4b90df10f87f
65110
master
J ✗7B ✓T ✓R -1/2−
LU-9680 utils: remove forced debugfs mounting
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
5 unresolved
S +0 −24
6d
LU-9680 utils: remove forced debugfs mounting
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
5 unresolved
S +0 −24
6d
needs rebase — checkpatch: cannot be cherry-picked
5 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
CI green, no reviews yet — add reviewers
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity1@ldiskfs+DNE:test_5g | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@ldiskfs+DNE:test_29 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@ldiskfs+DNE:test_30b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@zfs:test_5g | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@zfs:test_29 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@zfs:test_30b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-pcc@ldiskfs+DNE:test_20 | seen in 27 other reviews |
build #129044 SUCCESS · tests all Maloo sessions
patchsets:
PS1 04-06
PS2 08-10
threads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:11 — (typo) "so are current actions voliates this feature" -> "so our current actions violate this feature".
Gerrit AI review for Lustre
(typo) "so are current actions voliates this feature" -> "so our current actions violate this feature".
reply Gerrit AI review for Lustre COMMIT_MSG:14 — (defect) Is this claim accurate? The controls the test suite leans on hardest are debugfs-only and have no netlink or sysfs equivalent.
Gerrit AI review for Lustre
(defect) Is this claim accurate? The controls the test suite leans on hardest are debugfs-only and have no netlink or sysfs equivalent. fail_loc, fail_val, fail_err, debug, subsystem_debug, dump_kernel (lctl dk), daemon_file and debug_marker are all created by lnet_insert_debugfs() from lnet_table in lnet/libcfs/module.c, so they exist only under /sys/kernel/debug/lnet/. Every suite that does `$LCTL set_param fail_loc=...` or `$LCTL dk` needs those. So the suite still requires debugfs to be mounted; the patch only stops mounting it on our own.
reply Gerrit AI review for Lustre param.c:26 — (style) Not a bug, but cfs_try_mount_sys_kernel_debug() was the only user of <sys/vfs.h> (statfs), <linux/magic.h> (DEBUGFS_MAGIC), <sys/mou
Gerrit AI review for Lustre
(style) Not a bug, but cfs_try_mount_sys_kernel_debug() was the only user of <sys/vfs.h> (statfs), <linux/magic.h> (DEBUGFS_MAGIC), <sys/mount.h> (mount) and <stdbool.h> (the static bool). Worth dropping those four includes in the same patch.
reply Gerrit AI review for Lustre param.c:28 — (defect) conf-sanity test_5g "handle missing debugfs" still checks for this auto-mount and is not updated here:
Gerrit AI review for Lustre
(defect) conf-sanity test_5g "handle missing debugfs" still checks for this auto-mount and is not updated here:
umount /sys/kernel/debug
$LCTL get_param -n devices | grep -E -v "error" && error "lctl can't access debugfs data"
grep " debugfs " /etc/mtab || error "debugfs failed to remount"
With the mount gone nothing remounts it, so the last line fails.
Worse, the test now leaves /sys/kernel/debug unmounted for the remainder of the conf-sanity run, so later subtests reading debugfs parameters, the `lctl dk` log dump on error(), and the KMEMLEAK check at /sys/kernel/debug/kmemleak all break too. Should test_5g be removed in this patch?
reply Gerrit AI review for Lustre param.c:55 — (defect) The netlink alternative cited in the commit message only applies to non-root callers.
Gerrit AI review for Lustre
(defect) The netlink alternative cited in the commit message only applies to non-root callers.
lctl get_param / list_param / set_param fall back to llapi_param_display_value() / llapi_param_set_value() only under `rc == -ENOENT && getuid() != 0` (lustre/utils/lustre_param.c:1181, 1243, 1349, 1416, 1640). Root always stays on the glob path.
mount(2) needs CAP_SYS_ADMIN, so the code being deleted only ever did anything for root — non-root already got EPERM, which was silently ignored. That means the one caller class this removal changes is exactly the one with no netlink fallback: on a node where debugfs is not mounted, root now gets ENOENT for everything under /sys/kernel/debug/{lnet,lustre} and has no other route to it.
This was raised on patchset 1 (keep trying to mount for systems that can still use it, just don't print on failure) and the code is unchanged in patchset 2. Dropping only the fprintf() would keep the working case working while satisfying the secure-boot concern.
owner James Simmons · uploader James Simmons · PS2 uploaded 86d ago · NEW · open in Gerrit ↗
commit message
LU-9680 utils: remove forced debugfs mounting For older platforms debugfs wasn't always mounted but lustre had a heavy dependence on it. Today Linux secure boot enforces the lack of debugfs so are current actions voliates this feature. With the implementation of Netlink we have an alternative to using debugfs so we can remove this forced mounting. We will be able to run our test suite without debugfs after this patch. Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Iaaa2b54d8352a5b9636338b0d10191428c89adaf
▶Longstanding (signal older than a week)
(78)
66253
master
J –B ✓T ✓R +2/2
LU-19712 utils: Add only and not-pool options to lfs pool pin
reviewing Nikos Papakonstantinou · PS24→PS30 since your -1 — your objection was dropped
master-next
L +718 −154
2d
LU-19712 utils: Add only and not-pool options to lfs pool pin
reviewing Nikos Papakonstantinou · PS24→PS30 since your -1 — your objection was dropped
master-next
L +718 −154
2d
build #134249 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1 · Sebastien Buisson +1
patchsets:
PS26 09-23
PS27 10-01
PS28 10-08
PS29 10-14
PS30 10-22
+25 earlier
PS1 05-28 PS2 05-28 PS3 05-29 PS4 06-04 PS5 06-05 PS6 06-08 PS7 06-10 PS8 06-14 PS9 06-15 PS10 06-22 PS11 07-09 PS12 07-10 PS13 07-14 PS14 07-15 PS15 07-16 PS16 07-30 PS17 07-30 PS18 07-31 PS19 08-20 PS20 08-26 PS21 08-27 PS22 09-01 PS23 09-04 PS24 09-04 PS25 09-14your previous vote: -1 on PS24 (2026-09-12 15:01) — now at PS30
owner Nikos Papakonstantinou · uploader Nikos Papakonstantinou · PS30 uploaded 13d ago · NEW · open in Gerrit ↗
commit message
LU-19712 utils: Add only and not-pool options to lfs pool pin Introduce --only and --not-pool options to lfs pool pin. The --only option makes the pin exclusive to the set of pools the target is already positively pinned to (including the one this operation itself pins), while the --not-pool option prevents the file from being migrated or mirrored to the specified pool. Also add a matching --not-pool option to lfs pool unpin, via a new llapi_pool_undeny_fd(), to remove a deny rule without disturbing a same-named positive pin (a pool can never be both, since --not-pool on pin already refuses to deny an already-pinned pool). --not-pool always takes an explicit pool name; unlike --pool, it is never inferred from the target's layout, since a denied pool cannot appear there. Also rename verify_pin_xattr_object(), dump_pin_object(), read_pin_xattr_object() and read_pin_xattr_object_fd() to their llapi_-prefixed equivalents, so their generic names cannot clash with application symbols. The prefix also puts them under the llapi_* export glob in liblustreapi.map, which lfs needs once it reads lustre.pin itself later in this series. --only/--not-pool themselves go through the new llapi_pool_pin_only_fd()/llapi_pool_deny_fd()/ llapi_pool_undeny_fd() entry points. Signed-off-by: Nikos Papakonstantinou <npapakonstantinou@ddn.com> Change-Id: Icc35bf87444edd74c1fcda927cead5e3b34a0fcd
56526
master
J !B ✓T ✗2R -1/2−
LU-18076 llite: add $MOUNT/.lustre/uuid
reviewing Emoly Liu · PS1→PS10 since your -1 — your objection was dropped
needs rebase
5 unresolved
M +125 −3
6d
LU-18076 llite: add $MOUNT/.lustre/uuid
reviewing Emoly Liu · PS1→PS10 since your -1 — your objection was dropped
needs rebase
5 unresolved
M +125 −3
6d
PS1→PS10 since your -1 — your objection was dropped
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
janitor run: 2 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 | RHEL 9.7 / x86_64 | ran 11 tests. 1 tests failed: sanity-lfsck. | session |
| review-dne-zfs-part-2 | RHEL 9.7 / x86_64 | ran 11 tests. 1 tests failed: sanity-lfsck. | session |
build #128269 SUCCESS · tests all Maloo sessions
no vote yet: Qian Yingjin, Etienne AUJAMES, Andreas Dilger, Oleg Drokin
patchsets:
PS6 06-17
PS7 06-23
PS8 06-24
PS9 07-09
PS10 07-29
+5 earlier
PS1 09-28 PS2 10-12 PS3 01-16 PS4 09-22 PS5 04-21your previous vote: -1 on PS1 (2024-09-28 13:31) — now at PS10
threads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre file.c:6775 — (minor) llite.*.uuid prints the UUID with a trailing newline, this returns it without one, so cat $MOUNT/.lustre/uuid runs straight into the
Gerrit AI review for Lustre
(minor) llite.*.uuid prints the UUID with a trailing newline, this returns it without one, so cat $MOUNT/.lustre/uuid runs straight into the shell prompt. Since this is a new user-visible interface, is it worth matching the sysfs form now?
reply Gerrit AI review for Lustre llite_lib.c:3383 — (style) Extra parentheses around the argument - fid_is_uuid(&lli->lli_fid) reads better, and matches the PFID(&lli->lli_fid) a few lines up.
Gerrit AI review for Lustre
(style) Extra parentheses around the argument - fid_is_uuid(&lli->lli_fid) reads better, and matches the PFID(&lli->lli_fid) a few lines up. ll_inode2fid(inode) would work too.
reply Gerrit AI review for Lustre mdd_device.c:1033 — (style) Not a bug, but the tab alignment between type and name is back after being asked about on earlier patchsets - a single space is what
Gerrit AI review for Lustre
(style) Not a bug, but the tab alignment between type and name is back after being asked about on earlier patchsets - a single space is what new code uses:
struct md_object *mdo;
struct mdd_object *mdd_uuid;
struct lu_fid fid = LU_UUID_FID;
int rc;
reply Gerrit AI review for Lustre mdd_device.c:1051 — (suggestion) Nothing ever reads m->mdd_dot_lustre_objs.mdd_uuid. mdd_obf and mdd_lpf are kept because they carry mo_dir_ops, but this one ha
Gerrit AI review for Lustre
(suggestion) Nothing ever reads m->mdd_dot_lustre_objs.mdd_uuid. mdd_obf and mdd_lpf are kept because they carry mo_dir_ops, but this one has no ops attached, so the mdo_locate() / new field / mdd_object_put() trio only pins the object in the lu_site cache. Would mdd_local_file_create() on its own be enough here?
reply Gerrit AI review for Lustre llapi_fid_test.c:489 — (defect) .lustre/uuid only exists on an MDS that carries this patch, so against an older server llapi_open_by_fid() returns -ENOENT here and
Gerrit AI review for Lustre
(defect) .lustre/uuid only exists on an MDS that carries this patch, so against an older server llapi_open_by_fid() returns -ENOENT here and ASSERTF() -> DIE() exits the whole binary. sanity.sh test_154g, which runs llapi_fid_test, is gated only on MDS1_VERSION >= 2.6.92, so on an interop run test_154g fails and test40/test41/test42 in this binary never execute. Can this be gated on the server version - e.g. tolerate -ENOENT here, or move the check into a version-gated shell test instead?
owner Emoly Liu · uploader Emoly Liu · PS10 uploaded 98d ago · NEW · open in Gerrit ↗
commit message
LU-18076 llite: add $MOUNT/.lustre/uuid Add a virtual $MOUNT/.lustre/uuid file to print the UUID for that specific mountpoint. Also, conf-sanity.sh test_44 is modified to verify this patch. Signed-off-by: Emoly Liu <emoly@whamcloud.com> Change-Id: I74d22c012dbc623d35e4fdf8594d8e7c83e01b1a
65204
master
J –B ✗T –R 0/2
LU-19768 mdd: add MDD/changelog genetlink family
carrying Timothy Day · build failure (#134469)
5 unresolved
L +644 −1
6d
LU-19768 mdd: add MDD/changelog genetlink family
carrying Timothy Day · build failure (#134469)
5 unresolved
L +644 −1
6d
build failure (#134469)
5 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
build #134469 FAILURE
patchsets:
PS4 09-29
PS5 09-29
PS6 10-20 James Simmons
PS7 10-23 James Simmons
PS8 10-26 James Simmons
+3 earlier
PS1 04-09 PS2 07-22 PS3 07-29threads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre lustre_kernelcomm.h:550 — This isn't a bug, but the size is hard-coded with the constant only in a comment. CHANGELOG_USER_NAMELEN_FULL is available from uapi/linux/l
Gerrit AI review for Lustre
This isn't a bug, but the size is hard-coded with the constant only in a comment. CHANGELOG_USER_NAMELEN_FULL is available from uapi/linux/lustre/lustre_idl.h; using it keeps the strscpy() in changelog_collect_user_cb() from silently truncating if the constant ever grows. (lustre_user.h has the same literal, but that one can't include lustre_idl.h - this header can.)
reply Gerrit AI review for Lustre kernelcomm.c:399 — (minor) Nothing ever sends on this multicast group - there is no genlmsg_multicast()/genl_notify() call in mdd. Registering it publishes a "
Gerrit AI review for Lustre
(minor) Nothing ever sends on this multicast group - there is no genlmsg_multicast()/genl_notify() call in mdd. Registering it publishes a "changelog" group name that userspace can subscribe to and then never hear anything on. Is it meant to be wired up in a later patch, or can it be dropped until there is a notification to send?
reply Gerrit AI review for Lustre kernelcomm.c:145 — (defect) What keeps ctxt->loc_handle alive while this runs? The llog_ctxt reference from llog_get_context() pins the context, but not the ca
Gerrit AI review for Lustre
(defect) What keeps ctxt->loc_handle alive while this runs? The llog_ctxt reference from llog_get_context() pins the context, but not the catalog handle.
On umount, mdt_stack_fini() sends LCFG_CLEANUP down the stack, and mdd_process_config() -> mdd_device_shutdown() -> mdd_changelog_fini() then does:
ctxt = llog_get_context(obd, LLOG_CHANGELOG_USER_ORIG_CTXT);
llog_cat_close(env, ctxt->loc_handle); /* NULLs loc_handle, llog_close() frees it */
llog_cleanup(env, ctxt); /* only now waits for our ctxt ref */
The MDD obd still has OBDF_SET_UP and no OBDF_STOPPING at that point, and those flags are only checked once before this long, sleeping catalog walk anyway. A dump in progress keeps walking a freed cat_llh. A dump that arrives after llog_cat_close() but before llog_cleanup() finishes gets ctxt->loc_handle == NULL, and llog_cat_process_or_fork() dereferences cat_llh->lgh_hdr on its first line.
The debugfs changelog_users reader avoids this because mdd_procfs_fini() runs before mdd_device_shutdown(). Here, would it work to hold mdd->mdd_changelog_mutex around the llog_get_context()/llog_cat_process() pair and skip the device unless CLM_INIT_DONE is set under the mutex? mdd_changelog_fini() takes the same mutex and resets mc_flags to CLM_CLEANUP_DONE.
reply Gerrit AI review for Lustre kernelcomm.c:406 — (suggestion) Should this op have .flags = GENL_ADMIN_PERM? As written, any local user in init_net can dump it.
Gerrit AI review for Lustre
(suggestion) Should this op have .flags = GENL_ADMIN_PERM? As written, any local user in init_net can dump it. The same data under mdd.*.changelog_users is in debugfs, which only root can read. The LNet family's show dumps (LNET_CMD_NETS, PEERS, ROUTES, STATS, ...) are all GENL_ADMIN_PERM. Each dump also runs a synchronous llog_cat_process() over every MDT's users catalog from .start. For a family without parallel_ops, that runs under genl_mutex. So an unprivileged caller can repeatedly drive disk I/O on every MDT while blocking all other genetlink families, and can also hit the umount window noted above.
reply Gerrit AI review for Lustre mdd_netlink.c:144 — Should this check CLM_INIT_DONE before using `ctxt->loc_handle`? Every other changelog llog consumer in mdd does - mdd_changelog_users_seq_s
Gerrit AI review for Lustre
Should this check CLM_INIT_DONE before using `ctxt->loc_handle`? Every other changelog llog consumer in mdd does - mdd_changelog_users_seq_show()@lustre/mdd/mdd_lproc.c:209 and mdd_changelog_size_seq_show()@:247 both return -ENXIO when the flag is clear, and mdd_changelog_recalc_mask() takes mdd_changelog_mutex. llog_setup() for LLOG_CHANGELOG_USER_ORIG_CTXT happens at mdd_device.c:556 but loc_handle is only assigned by the llog_open_create() that follows at :567, so for the whole duration of that create (and llog_init_handle() after it) the context is registered with loc_handle still NULL. mdd_prepare() runs from server_start_targets() long after class_setup() has set OBDF_SET_UP, so the obd is already visible to this loop during that window. llog_cat_process() -> llog_cat_process_or_fork() dereferences `cat_llh->lgh_hdr` on its first line, so a dump landing in that window is a NULL dereference. The teardown side has the same exposure: mdd_changelog_fini() does llog_cat_close(env, ctxt->loc_handle) then llog_cleanup(env, ctxt) under mdd_changelog_mutex, which this path does not take.
owner Timothy Day · uploader James Simmons · PS8 uploaded 8d ago · NEW · open in Gerrit ↗
commit message
LU-19768 mdd: add MDD/changelog genetlink family Add a new MDD genetlink family that exposes per-MDT changelog consumer state via the table-driven netlink framework. The dump handler iterates MDD devices and reports per-consumer details (endrec index, idle time, event mask). Implement changelog_users and wire it in liblustreapi so the traditional tools continue to work when debugfs is not available. TLC-bug-id: TLU-56 Signed-off-by: Timothy Day <timday@thelustrecollective.com> Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I3ae11dc2a992bc5cd9911e51fec8148cfb1dcfed
68228
master
J !B ✓T ✓R 0/2
LU-11850 lov: create Netlink interface for pools
mine 2 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
3 unresolved
XL +980 −361
8d
LU-11850 lov: create Netlink interface for pools
mine 2 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
3 unresolved
XL +980 −361
8d
2 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
CI green, no reviews yet — add reviewers
1 thread(s) waiting on others
janitor run: 2 failing config(s), none unique to this patch — janitor results
build #132342 SUCCESS · tests all Maloo sessions
patchsets:
PS1 08-23
PS2 08-28
PS3 09-01
PS4 09-03
PS5 09-26
threads: 2 need your reply · 1 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:16 — Several hunks aren't accounted for by the description, and it isn't obvious which are deliberate:
Gerrit AI review for Lustre
Several hunks aren't accounted for by the description, and it isn't obvious which are deliberate: - lnet/utils/lnetconfig/liblnetconfig_netlink.c empty-flow-set handling - lov_obd.c switching class_register_type() from enable_proc=true to false - llapi_param_display_value() changing its success return from 0 to the raw yaml rc - llapi_get_poolbuf() gaining `poolname++` - lu_tgt_pool.op_array changing from __u32 to u32 - lod_pool.c setting op_obd_idx (LOD has no .o_pool_find, so nothing reads it yet) Could the message name the new symbols too - LUSTRE_CMD_POOLS, o_pool_find()/lov_pool_list(), lustre_pools_dump() - so the change is findable via git log?
reply Gerrit AI review for Lustre lproc_lov.c:287 — (defect) With pools now living only under obd_debugfs_entry, the old world-readable /proc/fs/lustre/lov/<dev>/pools/<pool> is gone and the o
Gerrit AI review for Lustre
(defect) With pools now living only under obd_debugfs_entry, the old world-readable /proc/fs/lustre/lov/<dev>/pools/<pool> is gone and the only copy is under /sys/kernel/debug, which is mode 0700. llapi_get_poollist() and llapi_get_poolmembers() grew a Netlink fallback for that, but llapi_search_ost() did not - it still does poolpath() -> fopen(), and poolpath() -> get_lustre_param_path() -> cfs_get_param_paths() globs /sys/kernel/debug/lustre/lov/<fs>-*/pools, which a normal user cannot traverse (GLOB_NOMATCH -> -ENOENT). That propagates to llapi_stripe_param_verify(), which turns it into "pool '%s fsname %s' does not exist" and -EINVAL, so `lfs setstripe -p <pool>` fails for an unprivileged user. `lfs df --pool` and llapi_layout_sanity() -> llapi_search_ost() hit the same path. This change is the top of the relation chain, so nothing later picks it up. Should llapi_search_ost() get the same Netlink fallback in this patch?
owner James Simmons · uploader James Simmons · PS5 uploaded 39d ago · NEW · open in Gerrit ↗
commit message
LU-11850 lov: create Netlink interface for pools With the need to move pools handling to debugfs this prevents non-root user land applications and libraries from accessing this information. Create a Netlink interface that provides the same needed information. Update liblustreapi to use the Netlink YAML approach to gather pools information. Pool source defines itself by the obd device source and pool name so its not the typical single collection of data to obd device. This makes pools require its own dump function. Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I769567270e45f2de074fad2fab78a2f0c3a741b4
66886
master
J !B ✓T ✓R -1/2−
LU-18687 build: iov_iter_iovec to iter_iov_len, iter_iov_addr
carrying Shaun Tancheff · needs rebase — checkpatch: cannot be cherry-picked
needs rebase
7 unresolved
M +42 −31
13d
LU-18687 build: iov_iter_iovec to iter_iov_len, iter_iov_addr
carrying Shaun Tancheff · needs rebase — checkpatch: cannot be cherry-picked
needs rebase
7 unresolved
M +42 −31
13d
needs rebase — checkpatch: cannot be cherry-picked
7 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
CI green — no vote yet from Andreas Dilger, Timothy Day
janitor run: 6 failing config(s), none unique to this patch — janitor results
build #131723 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Timothy Day
patchsets:
PS1 06-26
PS2 06-27
PS3 09-14 James Simmons
threads: 7 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (minor) Nothing in the patch makes an iter_iov_len() available: what is added is compat_iter_iov_len(), under a guard that makes it the only
Gerrit AI review for Lustre
(minor) Nothing in the patch makes an iter_iov_len() available: what is added is compat_iter_iov_len(), under a guard that makes it the only thing vvp_io.c ever calls. Could the body also say that vvp_mmap_locks() gains an iter_is_ubuf() special case, since that is a behaviour change rather than a rename?
reply Gerrit AI review for Lustre lustre-core.m4:2233 — (defect) `len` is not declared - the declaration above is `ssize_t nr`. With -Werror this test fails to compile on every kernel, so HAVE_ITE
Gerrit AI review for Lustre
(defect) `len` is not declared - the declaration above is `ssize_t nr`. With -Werror this test fails to compile on every kernel, so HAVE_ITER_IOV_LEN is never defined and the result is silently "no".
iter_iov_len() returns size_t, so this probably wants the same form as the neighbouring LC_SRC_HAVE_IOVEC_WITH_IOV_MEMBER test:
size_t len __attribute__ ((unused));
reply Gerrit AI review for Lustre uio.h:36 — (typo) `384492c48e6e` does not resolve; the commit is 384492c48e6a ("net: devmem: support single IOV with sendmsg").
Gerrit AI review for Lustre
(typo) `384492c48e6e` does not resolve; the commit is 384492c48e6a ("net: devmem: support single IOV with sendmsg").
reply Gerrit AI review for Lustre uio.h:40 — (defect) Once the autoconf test compiles, a 6.3+ kernel defines both HAVE_ITER_IOV_LEN and HAVE_USER_BACKED_ITER, so this helper is not comp
Gerrit AI review for Lustre
(defect) Once the autoconf test compiles, a 6.3+ kernel defines both HAVE_ITER_IOV_LEN and HAVE_USER_BACKED_ITER, so this helper is not compiled - but vvp_mmap_locks() calls compat_iter_iov_len() unconditionally, so vvp_io.c stops building. Right now the only thing preventing that is the broken test above; fixing either one alone breaks the build. Would it be simpler to follow the iter_iov_addr() pattern just above and supply the upstream name, `#ifndef HAVE_ITER_IOV_LEN` / `static inline size_t iter_iov_len(...)`, and call iter_iov_len() from vvp_io.c? Then the call site really does match upstream, and there is no Lustre-only name to keep in sync.
reply Gerrit AI review for Lustre vvp_io.c:462 — (defect) The advance expression now uses `bytes`, which the loop body modifies: `bytes += addr & ~PAGE_MASK` below, and `bytes -= vma->vm_en
Gerrit AI review for Lustre
(defect) The advance expression now uses `bytes`, which the loop body modifies: `bytes += addr & ~PAGE_MASK` below, and `bytes -= vma->vm_end - addr` in the inner while loop. The old code advanced by `iov.iov_len` from the iovec copy, which the body never touched (it worked on `bytes` instead). So for an unaligned multi-segment iovec the iterator is advanced by `iov_len + (addr & ~PAGE_MASK)` per segment. The following segment is then scanned from a bogus offset, and a segment shorter than the overshoot is skipped completely, so no mmap lock is taken for it. Keeping the segment length in its own variable, used only by iov_iter_advance(), would preserve the old behaviour.
reply Gerrit AI review for Lustre vvp_io.c:463 — (minor) Can this branch be reached? The early return above returns 0 unless the iter is ITER_IOVEC or ITER_KVEC, and iter_is_iovec() is fals
Gerrit AI review for Lustre
(minor) Can this branch be reached? The early return above returns 0 unless the iter is ITER_IOVEC or ITER_KVEC, and iter_is_iovec() is false for ITER_UBUF, so a ubuf iter never gets to the loop. Either the branch is dead code, or the gate above is what needs relaxing - the ubuf iter missing its mmap locks entirely looks like the pre-existing problem here.
reply Gerrit AI review for Lustre vvp_io.c:468 — (minor) compat_iter_iov_len() returns `iov_len - iov_offset`, while the iov_iter_iovec() being replaced returned `min(count, iov_len - iov_o
Gerrit AI review for Lustre
(minor) compat_iter_iov_len() returns `iov_len - iov_offset`, while the iov_iter_iovec() being replaced returned `min(count, iov_len - iov_offset)`. The clamp is reachable: vvp_io_rw_lock() calls vvp_io_update_iov() -> iov_iter_truncate(vui_iter, crw_bytes) immediately before this, and lov_io_rw_iter_init() has already clipped crw_bytes to the current stripe chunk. A 4M read into a single 4M buffer on a 1M-striped file now asks policy_from_vma() for a 4M extent instead of 1M, and that extent can run past the end of the vma. Clamping with the remaining iov_iter_count() would keep the old extent.
owner Shaun Tancheff · uploader James Simmons · PS3 uploaded 50d ago · NEW · open in Gerrit ↗
commit message
LU-18687 build: iov_iter_iovec to iter_iov_len, iter_iov_addr Add HAVE_ITER_IOV_LEN to ensure an iter_iov_len() is available. iov_iter_iovec() is dropped and the address and bytes from the segment are accessed directly. This is done to align with the upstream linux kernel. Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun@tancheff.com> Change-Id: I906b248d03f30a765f27b0916419b88ee178d6a5
55818
master
J ✗2B ✓T ✗30R -2/2−
LU-18884 osp: use UUIDs instead of NIDs for LWP setup
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
2 unique failures
IPv6
1 unresolved
S +24 −11
13d
LU-18884 osp: use UUIDs instead of NIDs for LWP setup
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
2 unique failures
IPv6
1 unresolved
S +24 −11
13d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 2 test failures unique to this patch — runtests-ssk@ldiskfs+SharedKey:test_1, runtests@zfs:test_1
enforced failed: review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-part-7, review-dne-part-8, review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-ldiskfs, review-ldiskfs-ubuntu, review-zfs
Mikhail Pershin voted -1
1 unresolved thread(s) await your reply — last from Andreas Dilger
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| runtests-ssk@ldiskfs+SharedKey:test_1 | seen in 100 other reviews |
| runtests@zfs:test_1 | seen in 5 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-1 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-1 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-2 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-2 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-3 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-3 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-4 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-4 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-5 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-5 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-6 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-6 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-7 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-7 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-8 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-8 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-1 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-2 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-3 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-4 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-5 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-6 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-7 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 9.5 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, SLES 15.5 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 2 tests failed: sanity-sec, sanity. | session |
| review-zfs | RHEL 8.10 / x86_64 | ran 10 tests. 6 tests failed: sanity-lsnapshot, insanity, replay-ost-single, replay-single, sanity-flr, sanit | session |
3 optional test failure(s) — informational
build #114072 SUCCESS · tests all Maloo sessions
reviews:
Mikhail Pershin -1
no vote yet: Chris Horn, Timothy Day
patchsets:
PS6 09-10
PS7 09-19
PS8 10-02
PS9 06-08
PS10 06-08 Janitor Bot
+5 earlier
PS1 07-20 PS2 07-20 PS3 09-06 PS4 09-06 PS5 09-06threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger lwp_dev.c:95 — (defect?) I doubt the UUID should have a linefeed at the end?
Andreas Dilger
(defect?) I doubt the UUID should have a linefeed at the end?
owner James Simmons · uploader Janitor Bot · PS10 uploaded 514d ago · NEW · open in Gerrit ↗
commit message
LU-18884 osp: use UUIDs instead of NIDs for LWP setup The osp when setting up LWP uses NIDs instead of UUIDs for LCFG_SETUP. This is wrong and NIDs can easily over flow the obd_uuid structure. A side effect of this mistake is that the ptlrpc conn to UUID mapping just ends up being a NID looking up a NID which happens to be itself. That is very wrong. Replace using an NID with a real UUID. Test-Parameters: env=FORCE_LARGE_NID=true,LOAD_MODULES_REMOTE=true Change-Id: I1e08a9475a8dddcfd7f212b6a1b37559c00bf84e Signed-off-by: James Simmons <jsimmons@infradead.org>
68164
master
J ✓B ✓T ✓R -1/2−
LU-20587 lnet: expand Netlink support for more peers
mine Alexey Lyashkov voted -1
7 unresolved
M +102 −0
19d
LU-20587 lnet: expand Netlink support for more peers
mine Alexey Lyashkov voted -1
7 unresolved
M +102 −0
19d
Alexey Lyashkov voted -1
6 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
1 thread(s) waiting on others
no vote yet from Serguei Smirnov, Chris Horn
build #132251 SUCCESS · tests all Maloo sessions
reviews:
Alexey Lyashkov -1
no vote yet: Serguei Smirnov, Chris Horn
patchsets:
PS1 08-20
PS2 08-27
PS3 08-27
PS4 08-29
PS5 09-24
threads: 6 need your reply · 1 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (style) LU-20587 is filed as "lnetctl peer show -v 2 causes kernel oops", but the body only describes a capacity limit. Could it say that th
Gerrit AI review for Lustre
(style) LU-20587 is filed as "lnetctl peer show -v 2 causes kernel oops", but the body only describes a capacity limit. Could it say that this is fixing a crash, and describe how running out of skb space in lnet_peer_ni_show_dump() leads to the oops? That makes it much easier to decide whether the change needs backporting.
reply Gerrit AI review for Lustre COMMIT_MSG:16 — (defect) This fixes a kernel oops, so it should carry a Fixes: tag. lnet_peer_ni_show_dump() and its single-skb dump came in with:
Gerrit AI review for Lustre
(defect) This fixes a kernel oops, so it should carry a Fixes: tag. lnet_peer_ni_show_dump() and its single-skb dump came in with:
Fixes: f0be00678cc8 ("LU-9680 lnet: collect data about peer_ni by using Netlink")
reply Gerrit AI review for Lustre api-ni.c:7887 — Carrying forward the unbounded-allocation point from patchset 1, which does not look addressed yet: nothing caps cb->min_dump_alloc, and the
Gerrit AI review for Lustre
Carrying forward the unbounded-allocation point from patchset 1, which does not look addressed yet: nothing caps cb->min_dump_alloc, and there is no error when the computed size is unreasonable. The sibling handlers in this file and in obdclass do bound it, e.g. lnet_route_show_start():
len += ROUTER_MSG_VALUES_SIZE * rlist->lgrl_count;
if (len > BIT(sizeof(cb->min_dump_alloc) << 3)) {
NL_SET_ERR_MSG(extack, "Netlink msg is too large");
rc = -EMSGSIZE;
} else {
cb->min_dump_alloc = len;
}
Peers are unbounded (unlike NIs, which are capped by lnet_interfaces_max), so the same guard - or a cap on how many peers one dump covers - seems needed here too.
reply Gerrit AI review for Lustre api-ni.c:7868 — (defect) Nothing caps cb->min_dump_alloc and there is no error when the computed total is unreasonable. This was raised on patchset 1 ("allo
Gerrit AI review for Lustre
(defect) Nothing caps cb->min_dump_alloc and there is no error when the computed total is unreasonable. This was raised on patchset 1 ("allocating an 4G in kernel - very very bad style") and the reply agreed peers still need overflow handling since, unlike NIs, they are not bounded by lnet_interfaces_max - but patchset 4 still accumulates straight into the field.
The sibling handler in this file bounds it, in lnet_route_show_start():
len += ROUTER_MSG_VALUES_SIZE * rlist->lgrl_count;
if (len > BIT(sizeof(cb->min_dump_alloc) << 3)) {
NL_SET_ERR_MSG(extack, "Netlink msg is too large");
rc = -EMSGSIZE;
} else {
cb->min_dump_alloc = len;
}
and lustre/obdclass/kernelcomm.c does the same. Two reasons that guard matters here:
min_dump_alloc is u16 in netlink_callback before v5.7, so on the older supported kernels the += silently wraps modulo 65536 - and can wrap to less than PEER_KEY_TABLE_MSG_SIZE.
On newer kernels the skb head is still one contiguous kmalloc, not a kvmalloc: netlink_dump() calls alloc_skb(alloc_min_size, GFP_KERNEL), and __alloc_skb() -> kmalloc_reserve() ends in kmalloc_node_track_caller(). So above KMALLOC_MAX_SIZE the dump can only fail with -ENOBUFS, and below it every dump invocation is asking for a high-order allocation.
reply Gerrit AI review for Lustre api-ni.c:8233 — (defect) None of the nla_nest_start() results in this handler are checked, and nla_nest_end() writes through the pointer without a NULL test
Gerrit AI review for Lustre
(defect) None of the nla_nest_start() results in this handler are checked, and nla_nest_end() writes through the pointer without a NULL test:
static inline int nla_nest_end(struct sk_buff *skb, struct nlattr *start)
{
unsigned long diff = skb_tail_pointer(skb) - (unsigned char *)start;
start->nla_len = diff;
So once the skb runs out of room, nla_nest_start() returns NULL and the matching nla_nest_end() at the bottom of the loop faults. The nests opened for the -v 2 stats (send/recv/drop/health) are the ones LU-20587 names in its title.
Enlarging the skb makes this less likely, but any residual under-estimate still lands here. Should the dump bail out with -EMSGSIZE when a nest cannot be opened, so a short estimate degrades into a truncated dump instead of an oops?
reply Gerrit AI review for Lustre api-ni.c:7868 — (defect) Nothing caps cb->min_dump_alloc and there is no error return when the computed total is unreasonable - it just accumulates. This is
Gerrit AI review for Lustre
(defect) Nothing caps cb->min_dump_alloc and there is no error return when the computed total is unreasonable - it just accumulates. This is the objection from patchset 1 ("allocating an 4G in kernel - very very bad style. Please use a multipart messages."), which was answered with "I do agree peer needs to still handle overflows since peers unlike NI (lnet_interfaces_max) is not bounded". Patchset 5 still has no bound.
The sibling handler in this file does bound it, lnet_route_show_start():
len += ROUTER_MSG_VALUES_SIZE * rlist->lgrl_count;
if (len > BIT(sizeof(cb->min_dump_alloc) << 3)) {
NL_SET_ERR_MSG(extack, "Netlink msg is too large");
rc = -EMSGSIZE;
} else {
cb->min_dump_alloc = len;
}
At version 4/5 this charges roughly 945 bytes for a single-NI peer, so a few thousand peers already asks for a multi-megabyte buffer on every `lnetctl peer show`. Could the same guard, or a cap on how many peers one dump covers, be applied here?
owner James Simmons · uploader James Simmons · PS5 uploaded 41d ago · NEW · open in Gerrit ↗
commit message
LU-20587 lnet: expand Netlink support for more peers Currently the LNet Netlink peer interface uses the default size of 64K for it struct sk_buf. This limits the number of peers that can be reported with the Netlink layer. We can manually calculate the cb->min_dump_alloc to allocate the struct sk_buf of the needed size. Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I900ae18d6098df0df699df6a64d1d462702c2b4a
65688
master
J –B ✓T ✗11R -2/2−
LU-18041 obd: mgc uses real uuid for its uuid to NID mapping
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
11 unresolved
M +67 −48
22d
LU-18041 obd: mgc uses real uuid for its uuid to NID mapping
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
11 unresolved
M +67 −48
22d
needs rebase — checkpatch: cannot be cherry-picked
enforced failed: review-dne-part-2, review-dne-part-3, review-dne-part-7, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-7, review-ldiskfs-arm, review-ldiskfs-ubuntu, review-zfs
Andreas Dilger voted -1
9 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
2 thread(s) waiting on others
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 | RHEL 9.7 / x86_64 | ran 11 tests. 1 tests failed: sanity-sec. | session |
| review-dne-part-3 | RHEL 9.8 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-7 | RHEL 9.8 / x86_64 | ran 6 tests. 1 tests failed: sanity-scrub. | session |
| review-dne-zfs-part-2 | RHEL 9.8 / x86_64 | ran 11 tests. 2 tests failed: sanity-pfl, sanity-sec. | session |
| review-dne-zfs-part-2 | RHEL 10.1 / x86_64 | ran 11 tests. 1 tests failed: sanity-sec. | session |
| review-dne-zfs-part-3 | RHEL 10.1 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-3 | RHEL 9.8 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-7 | RHEL 9.8 / x86_64 | ran 6 tests. 1 tests failed: sanity-scrub. | session |
| review-ldiskfs-arm | RHEL 8.10 / x86_64, Rocky 9.8 / aarch64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 24.04 / x86_64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
| review-zfs | RHEL 8.10 / x86_64 | ran 8 tests. 1 tests failed: sanity-lsnapshot. | session |
build #132962 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger -1
no vote yet: Serguei Smirnov, Mikhail Pershin
patchsets:
PS1 05-06
PS2 07-14
PS3 07-16
PS4 07-24
PS5 10-06
threads: 9 need your reply · 2 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (style) This isn't a bug, but `obd:` isn't a component tag used elsewhere in the tree. The change is mostly in obdclass (plus ldlm), so `obd
Gerrit AI review for Lustre
(style) This isn't a bug, but `obd:` isn't a component tag used elsewhere in the tree. The change is mostly in obdclass (plus ldlm), so `obdclass:` would fit better.
reply Gerrit AI review for Lustre COMMIT_MSG:10 — (typo) "This is problem" -> "This is a problem", and "is to small" -> "is too small".
Gerrit AI review for Lustre
(typo) "This is problem" -> "This is a problem", and "is to small" -> "is too small".
reply Gerrit AI review for Lustre COMMIT_MSG:17 — The message describes only the MGC uuid change. Several behavior changes in the diff aren't mentioned:
Gerrit AI review for Lustre
The message describes only the MGC uuid change. Several behavior changes in the diff aren't mentioned: - import_set_conn() now parses NID-shaped uuids directly and matches existing connections by `c_peer` NID instead of `oic_uuid`. This affects every OSC/MDC/OSP/LWP import, not just the MGC. - lustre_start_simple() now ignores `s2` for every caller. - lustre_add_mgc_failnodes() now creates one connection per failover NID instead of one per failover node, and maps every failover NID to the MGC's uuid. Were these intended? If so, could the message explain why they are safe?
reply Gerrit AI review for Lustre ldlm_lib.c:77 — (minor) ptlrpc_connection_get() returns NULL (not an ERR_PTR) when allocation fails, and only ptlrpc_uuid_to_connection() converts that to E
Gerrit AI review for Lustre
(minor) ptlrpc_connection_get() returns NULL (not an ERR_PTR) when allocation fails, and only ptlrpc_uuid_to_connection() converts that to ERR_PTR(-ENOENT). On this branch the IS_ERR() check below misses NULL, so `oic_conn` can be stored as NULL and dereferenced later in import_select_connection(). It's an ENOMEM-only path, but the same `c ? c : ERR_PTR(-ENOMEM)` conversion would keep it consistent.
reply Gerrit AI review for Lustre ldlm_lib.c:99 — (defect) Matching on the peer NID string instead of `oic_uuid` breaks lookups whose uuid isn't the peer NID string. The MGC's primary connec
Gerrit AI review for Lustre
(defect) Matching on the peer NID string instead of `oic_uuid` breaks lookups whose uuid isn't the peer NID string. The MGC's primary connection is the clearest case: its uuid is now the random MGC uuid, so it never matches here. import_set_conn_priority() then returns -ENOENT, and ptlrpc_recover_import(imp, uuid) fails, e.g. `lctl set_param mgc.*.import=connection=<uuid>`. It also fails for NID-shaped uuids when LNetPrimaryNID() replaced the peer NID with a different primary in ptlrpc_connection_get(). Repeated adds then create duplicate connections, and the IR reconnect in mgc_apply_recover_logs() -> ptlrpc_recover_import(imp, uuid.uuid, 1) can't find the connection. client_import_del_conn() and client_import_add_nids_to_conn() still key on `oic_uuid`, so these lookups are now inconsistent. Also, `strncmp(..., sizeof(uuid->uuid))` is effectively strcmp() for a NUL-terminated 40-byte uuid, so the truncated-uuid case described in the comment above won't match either.
reply Gerrit AI review for Lustre obd_mount.c:162 — (defect) `node` is now the MGC's own obd_uuid, the same key lustre_start_mgc() used for the primary MGS NIDs. So every failover MGS NID is a
Gerrit AI review for Lustre
(defect) `node` is now the MGC's own obd_uuid, the same key lustre_start_mgc() used for the primary MGS NIDs. So every failover MGS NID is added to the same uuid_nid_data entry as the primary MGS NIDs. class_add_uuid() then calls LNetAddPeer() with the whole entry, telling LNet that the primary and failover MGS nodes are one multi-rail peer. With the default lock_prim_nid=1, LNetAddPeer() can call lnet_peer_force_merge() and merge an existing failover-node peer into the primary MGS peer. The old code used a separate uuid per failover node for exactly this reason. Two other side effects: - The primary connection's ptlrpc_uuid_to_peer() can now pick a failover node's NID. - The entry is capped at MTI_NIDS_MAX (32) NIDs across all MGS nodes, and on reuse of an existing MGC, across every mount's mgsnode list. Should the failover NIDs keep a per-node key that differs from the primary's?
reply Gerrit AI review for Lustre obd_mount.c:170 — (minor) class_nid2uuid() doesn't truncate. It returns -EOVERFLOW when the NID string doesn't fit in UUID_MAX, and the `break` then skips thi
Gerrit AI review for Lustre
(minor) class_nid2uuid() doesn't truncate. It returns -EOVERFLOW when the NID string doesn't fit in UUID_MAX, and the `break` then skips this NID's connection and the rest of the current node. So a failover MGS with a long IPv6 NID still gets no connection, which is the case the commit message says is fixed. Separately, the "can't add failover peer" CWARN below prints `node` (the MGC uuid) where the failover NID was probably intended.
reply Gerrit AI review for Lustre obd_mount.c:241 — (defect) This replaces `s2` with `uuid` for every lustre_start_simple() caller, not only lustre_start_mgc(). The OSD start in tgt_mount.c pa
Gerrit AI review for Lustre
(defect) This replaces `s2` with `uuid` for every lustre_start_simple() caller, not only lustre_start_mgc(). The OSD start in tgt_mount.c passes the mount flags in `s2`:
snprintf(flagstr, sizeof(flagstr), "%lu:%u", mflags, lmd_flags);
lustre_start_simple(lsi->lsi_osd_obdname, lsi->lsi_osd_type,
lsi->lsi_osd_uuid, lmd->lmd_dev, flagstr, ...);
Now buf 2 holds the OSD uuid string instead. osd-ldiskfs osd_mount() runs `sscanf(str, "%lu:%lu", &s_flags, &lmd_flags)` on it, the parse fails, and both stay 0. So MS_RDONLY, LMD_FLG_DEV_RDONLY and LMD_FLG_NOSCRUB are silently dropped: an `-o ro` target mounts read-write, and `noscrub` is ignored. osd-zfs does `strstr(str, ":")` and loses rdonly_dev/noscrub the same way. That would explain the sanity-scrub failures seen on every patchset, since that suite mounts with `noscrub`.
It would be safer to pass the uuid as `s2` from lustre_start_mgc() only (and keep the kernel-doc for `s2` accurate).
reply Gerrit AI review for Lustre obd_mount.c:329 — (defect) Every new MGC now registers its NIDs under a fresh random uuid, but nothing calls class_del_uuid() for that key when the MGC is sto
Gerrit AI review for Lustre
(defect) Every new MGC now registers its NIDs under a fresh random uuid, but nothing calls class_del_uuid() for that key when the MGC is stopped (lustre_stop_mgc() doesn't touch the uuid table). Before this patch the key was the NID string, so repeated mounts reused one entry. Now each mount/umount cycle (autofs, for example) leaves another uuid_nid_data (~700 bytes) on g_uuid_list until module unload. lustre_uuid_to_peer() and class_add_uuid() scan that list linearly, so they get slower as it grows. Should the MGC remove its entry on cleanup?
owner James Simmons · uploader James Simmons · PS5 uploaded 28d ago · NEW · open in Gerrit ↗
commit message
LU-18041 obd: mgc uses real uuid for its uuid to NID mapping Lustre creates a mapping, struct uuid_nid_data, using an 'uuid' to many NIDs. That 'uuid' happens to be the primary NID. This is problem for two reasons. First reason is that struct obd_uuid is to small for full length IPv6 based NID addresses so it ends up truncated. Second reason is for some systems the IP addresses expire for the network interfaces during the file system run time. This means the primary NID is not permanent. What is a better node identifier for the mgc is the UUID generated for it. Use that for the mappings. Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Ib00ac7c3e282be924f2a64245cfcc4fc4e5744a7
45608
master
J !B ✓T ✓R -2/2−
LU-10824 llite: remove may_umount() loop
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
upstream
5 unresolved
S +27 −18
22d
LU-10824 llite: remove may_umount() loop
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
upstream
5 unresolved
S +27 −18
22d
needs rebase — checkpatch: cannot be cherry-picked
Arshad Hussain voted -1
5 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
no vote yet from Shaun Tancheff, Andreas Dilger, Neil Brown, Feng Lei
janitor run: 15 failing config(s), none unique to this patch — janitor results
build #132335 SUCCESS · tests all Maloo sessions
reviews:
Arshad Hussain -1
no vote yet: Shaun Tancheff, Andreas Dilger, Neil Brown, Feng Lei, Timothy Day
patchsets:
PS18 08-20
PS19 09-21 Arshad Hussain
PS20 09-22
PS21 09-23
PS22 09-25
+17 earlier
PS1 11-18 PS2 11-18 PS3 11-18 PS4 11-18 Charlie Olmstead PS5 01-07 PS6 03-02 PS7 03-03 Andreas Dilger PS8 03-03 PS9 03-03 PS10 03-03 Andreas Dilger PS11 06-11 PS12 06-11 PS13 06-11 PS14 06-11 PS15 08-09 PS16 08-09 PS17 08-19threads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (minor) If the patch is refreshed, consider saying concretely what was wrong with the old code. ll_mnt.mnt was set to current->fs->root.mnt,
Gerrit AI review for Lustre
(minor) If the patch is refreshed, consider saying concretely what was wrong with the old code. ll_mnt.mnt was set to current->fs->root.mnt, which is the mounting process's root vfsmount, not the Lustre mount, and no reference was held on it. So may_umount() was testing the wrong mount (in practice always busy, so every umount -f slept the full 10s), and it could touch a freed vfsmount if that root went away, e.g. when a container exits. The body also doesn't mention the test-framework.sh change that bind-mounts the helper for build-tree testing.
reply Arshad Hussain umount.lustre:12 — (trivial) (( .... ))
Gerrit AI review for Lustre
(minor) This line can never fire. A successful umount already leaves via "&& exit 0" on line 10, so by this point rc is always non-zero. If the patch is refreshed, it can be dropped.
Arshad Hussain
(trivial) (( .... ))
reply Arshad Hussain test-framework.sh:1237 — (defect) This is not your code. But worth fixing. 'continue' is wrong here.
Arshad Hussain
(defect) This is not your code. But worth fixing. 'continue' is wrong here. ``` [[ -f "$sbin_mount" ]] || touch "$sbin_mount" || true [[ -f "$sbin_umount" ]] || touch "$sbin_umount" || true ``` -1 only for this.
reply Arshad Hussain test-framework.sh:1253 — (trivial) can be fixed.
Gerrit AI review for Lustre
(defect) A bind mount needs its target to exist, but nothing creates $sbin_umount first. The mount.lustre bind just above writes a "STUB MARK" file for exactly this reason. On a build-tree node that does not have the lustre RPM installed, /sbin/umount.lustre is missing, so the mount fails with "mount point does not exist" and error() aborts load_modules_local(). That means llmount.sh and every suite fail at setup. Autotest runs from installed RPMs, where $LUSTRE/utils/mount.lustre does not exist, so it never takes this branch and won't catch it. Could this create a stub the same way sbin_mount does, or only bind when [[ -e $sbin_umount ]]? (typo) "bund" -> "bind".
Arshad Hussain
(trivial) can be fixed.
reply Gerrit AI review for Lustre test-framework.sh:1373 — (minor) This does not undo what load_modules_local() set up. When the bind succeeded, /sbin/umount.lustre is still a mount point here, so rm
Gerrit AI review for Lustre
(minor) This does not undo what load_modules_local() set up. When the bind succeeded, /sbin/umount.lustre is still a mount point here, so rm fails with EBUSY and the bind stays in place. The next load_modules_local() call then finds mount.lustre unbound and stacks a second bind on top of it. Should this follow the sbin_mount pattern just above? That is: umount $sbin_umount if it appears in /proc/mounts, then remove it only if it is a stub.
owner James Simmons · uploader James Simmons · PS22 uploaded 39d ago · NEW · open in Gerrit ↗
commit message
LU-10824 llite: remove may_umount() loop
Al Viro pointed out the work around for LU-1882 is incorrect. It
can even lead to kernel panics under the right conditions. The
reason for this work around is that PtlRPC messages can still be
received after unmounting. With today's util-linux you can provide
umount helper scripts. Create one for Lustre that does nearly the
same thing that the kernel tried to accomplish. The difference is
umount.lustre is run always instead of the umount -f condition.
Test-Parameters: trivial testlist=conf-sanity env=ONLY=45,ONLY_REPEAT=100
Fixes: 205a57df2787 ("LU-1882 llite: Adding timed wait in ll_umount_begin")
Signed-off-by: Rick Mohr <rmohr@ornl.gov>
Signed-off-by: James Simmons <jsimmons@infradead.org>
Change-Id: I1498c6348022bdd6a74db887ffc8836a7a03bab6
36612
master
J ✗1B ✓T ✗2R -1/2−
LU-8585 tests: re-enable fid2path sanity test for subdir mount
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
1 unique failure
M +125 −10
22d
LU-8585 tests: re-enable fid2path sanity test for subdir mount
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
1 unique failure
M +125 −10
22d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 1 test failure unique to this patch — sanity-quota@ldiskfs+DNE:test_48
enforced failed: custom-1001, review-ldiskfs-dne-arm
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-quota@ldiskfs+DNE:test_48 | seen in 25 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
| review-ldiskfs-dne-arm | RHEL 8.10 / x86_64, Rocky 9.5 / aarch64 | ran 5 tests. 1 tests failed: sanity. | session |
build #124513 SUCCESS · tests all Maloo sessions
no vote yet: Guillaume Courrier, Etienne AUJAMES, Andreas Dilger, Timothy Day
patchsets:
PS15 04-23
PS16 12-12
PS17 12-20
PS18 12-22
PS19 04-30
+13 earlier
PS2 12-08 PS3 03-12 PS4 03-14 PS5 03-16 PS6 03-18 PS7 03-22 PS8 10-16 PS9 11-03 PS10 12-18 PS11 01-18 PS12 01-22 PS13 03-08 PS14 03-08owner James Simmons · uploader James Simmons · PS19 uploaded 187d ago · NEW · open in Gerrit ↗
commit message
LU-8585 tests: re-enable fid2path sanity test for subdir mount
When a subdirectory is mounted, the .lustre directory cannot be
seen. With the move of llapi_fid2path() from using .lustre/fid to
name_to_handle_at() previous sanity test that failed due to
file sets being enabled should now pass since name_to_handle_at()
should be file set aware. We update a few test applications to
work with llapi_open_by_fid() if we can't access .lustre. Same
is done with liblustreapi.so as well.
Fixes: f71554200 ("LU-11208 tests: add version check to sanity tests")
Fixes: e2ac6e1ea ("LU-9341 lod: Add special O_APPEND striping")
Fixes: 9bd3e64b8 ("LU-28 fileset: add fileset mount support")
Test-Parameters: trivial envdefinitions="FILESET=/subdir" testlist=sanity
Change-Id: Iddbcea298613e1dcc0af5c6f3cab4f0de01dbb5c
Signed-off-by: James Simmons <jsimmons@infradead.org>
57454
master
J !B ✓T ✗1R 0/2
LU-18461 layout: allow to be started from zero offset.
reviewing Alexey Lyashkov · PS11→PS38 since your -1 — your objection was dropped
70 unresolved
XL +1309 −65
30d
LU-18461 layout: allow to be started from zero offset.
reviewing Alexey Lyashkov · PS11→PS38 since your -1 — your objection was dropped
70 unresolved
XL +1309 −65
30d
PS11→PS38 since your -1 — your objection was dropped
blocked on the owner: enforced tests failed
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-5 | RHEL 9.7 / x86_64 | ran 7 tests. 1 tests failed: lustre-rsync-test. | session |
build #132562 SUCCESS · tests all Maloo sessions
no vote yet: Alexander Boyko, Andreas Dilger, Mikhail Pershin, Zhenyu Xu
patchsets:
PS34 08-20
PS35 08-25
PS36 09-14
PS37 09-23
PS38 09-29
+33 earlier
PS1 12-16 PS2 12-17 PS3 12-27 PS4 01-10 PS5 02-18 PS6 02-19 PS7 02-21 PS8 02-27 PS9 02-28 PS10 03-18 PS11 05-23 PS12 08-22 PS13 09-09 PS14 09-22 PS15 10-15 PS16 10-17 PS17 10-22 PS18 11-03 PS19 12-18 PS20 12-18 PS21 12-25 PS22 01-13 PS23 01-27 PS24 02-20 PS25 02-28 PS26 03-02 PS27 03-02 PS28 04-24 PS29 04-27 PS30 05-19 PS31 05-21 PS32 05-26 PS33 06-02your previous vote: -1 on PS11 (2025-07-17 17:15) — now at PS38
threads: 70 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger COMMIT_MSG:10 — (typo) "Do object"?
Andreas Dilger
(typo) "Do object"?
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (style) The subject has no grammatical subject - "allow to be started" leaves out what is being started. Something like "allow components to
Gerrit AI review for Lustre
(style) The subject has no grammatical subject - "allow to be started" leaves out what is being started. Something like "allow components to start at offset zero" reads better, and the trailing period is not usual for Lustre subjects. More importantly, neither the subject nor the body names anything that this patch actually adds: `LOV_PATTERN_ZEROSTART`, `LLAPI_LAYOUT_ZEROSTART`, the `zerostart` layout type, or `lfs setstripe --zerostart`. That makes the change hard to find later with `git log --grep`.
reply Gerrit AI review for Lustre COMMIT_MSG:10 — (typo) "Do object" - DoM?
Gerrit AI review for Lustre
(typo) "Do object" - DoM? This was raised on an earlier patchset and still reads the same way here.
reply Gerrit AI review for Lustre COMMIT_MSG:19 — Several hunks are not accounted for by the description; could they be explained, or split out?
Gerrit AI review for Lustre
Several hunks are not accounted for by the description; could they be explained, or split out? - osc_cache.c: the LASSERTF message gains `io %px`, which looks like debug instrumentation for this work rather than part of the feature. - lfs.c `case 'C'`: the guard changes from `lsa_pattern == LLAPI_LAYOUT_MDT` to `(lsa_pattern & LLAPI_LAYOUT_RAID0) == 0`, a behaviour change to `-C|--overstripe-count` validation. - lov_io.c `lov_io_layout_at()` and lov_offset.c `lov_stripe_offset()`: `return` converted to `RETURN()`. - lov_offset.c: blank line after the SPDX tag removed. - sanity-pfl.sh test_16b: two blank lines removed. - lov_cl_internal.h: `lov_foreach_io_layout()` split into two macros. It would also help to state the interop story here: `LOV_PATTERN_ZEROSTART` is a new on-disk/on-wire pattern bit, so a client older than this patch fails `lov_pattern_supported()` on such a layout and cannot open the file, and an older MDS rejects the setstripe. Is a version/feature gate expected, or is "both ends must be new" the intended contract?
reply Gerrit AI review for Lustre COMMIT_MSG:10 — (typo) "Do object" -> "DoM object". This was raised on patchset 30 and is still here.
Gerrit AI review for Lustre
(typo) "Do object" -> "DoM object". This was raised on patchset 30 and is still here.
reply Gerrit AI review for Lustre COMMIT_MSG:19 — The body describes the motivation well but never names anything the patch adds, so this won't be findable later with `git log --grep`. Could
Gerrit AI review for Lustre
The body describes the motivation well but never names anything the patch adds, so this won't be findable later with `git log --grep`. Could it mention `--zerostart`, `LOV_PATTERN_ZEROSTART`/`LLAPI_LAYOUT_ZEROSTART` and `lsme_is_zerostart()` explicitly? It also doesn't cover the largest kernel-side piece: the rework of `lov_io_iter_init()` that pulls the last stripe of the preceding component into a truncate so the KMS survives when a ZEROSTART component is truncated to its own start. That deserves a paragraph. A few hunks are not explained at all and read as leftovers - should they be split out, or described? - `lustre/osc/osc_cache.c`: the `osc_extent_find()` LASSERTF() gains the `io %px` argument; it looks like a debugging aid rather than part of the feature. - `lustre/utils/lfs.c`: the `-C|--overstripe-count` check changes from `== LLAPI_LAYOUT_MDT` to `& LLAPI_LAYOUT_RAID0` and the message text changes. That is a user-visible behaviour change and isn't needed for `--zerostart` to work. - `lustre/tests/sanity-dom.sh`: dropping the explicit `mkdir -p $MOUNT2` / `mount_client $MOUNT2` is unrelated to this feature (it is redundant with `MOUNT_2=yes` + `check_and_setup_lustre`, so it looks correct, just out of scope).
reply Gerrit AI review for Lustre COMMIT_MSG:10 — (typo) "Do object" was pointed out on patch set 30 and is still here. Should it be "DoM object"?
Gerrit AI review for Lustre
(typo) "Do object" was pointed out on patch set 30 and is still here. Should it be "DoM object"?
reply Gerrit AI review for Lustre COMMIT_MSG:13 — (style) The body explains the motivation but not what the patch actually changes, so it is hard to find later with git log. If the patch is
Gerrit AI review for Lustre
(style) The body explains the motivation but not what the patch actually changes, so it is hard to find later with git log. If the patch is refreshed, could it name: - the new `LOV_PATTERN_ZEROSTART` / `LLAPI_LAYOUT_ZEROSTART` pattern bit - the `lfs setstripe --zerostart` and `-L raid0,zerostart` options - the truncate change in lov_io_iter_init(), which pulls the last stripe of the preceding component into a truncate landing on a ZEROSTART component start - the new sanity-zero.sh suite Also, the subject should not end with a period.
reply Gerrit AI review for Lustre lfs-setstripe.1:189 — (minor) There is no `lfs join` command or `lfs-join.1` man page in the tree - the join-file feature was removed, as the commit message itsel
Gerrit AI review for Lustre
(minor) There is no `lfs join` command or `lfs-join.1` man page in the tree - the join-file feature was removed, as the commit message itself notes. This cross-reference will be a dangling link; could the sentence just describe the property directly?
reply Gerrit AI review for Lustre lfs-setstripe.1:219 — (typo) "below" - the `--zerostart` description is above this one in the page.
Gerrit AI review for Lustre
(typo) "below" - the `--zerostart` description is above this one in the page.
reply Gerrit AI review for Lustre lfs-setstripe.1:599 — (minor) EXAMPLES doesn't gain a `--zerostart` case. A short composite example, e.g. a DoM or plain first component followed by a zerostart o
Gerrit AI review for Lustre
(minor) EXAMPLES doesn't gain a `--zerostart` case. A short composite example, e.g. a DoM or plain first component followed by a zerostart one, would show how the option is meant to be combined - the option description alone leaves that to the reader.
reply Gerrit AI review for Lustre lfs-setstripe.1:217 — (typo) "see --zerostart below": the --zerostart option is described above this point in the page.
Gerrit AI review for Lustre
(typo) "see --zerostart below": the --zerostart option is described above this point in the page.
owner Alexey Lyashkov · uploader Alexey Lyashkov · PS38 uploaded 35d ago · NEW · open in Gerrit ↗
commit message
LU-18461 layout: allow to be started from zero offset. Traditional PFL objects have a hole at the start to accommodate the Do object if it needs to be migrated. This is not always necessary, however, as the hole can prevent the use of large files with a small number of OST objects in the ldiskfs backend. Introducing the ability to eliminate this hole at the beginning could provide an opportunity for OST objects to be moved across components and offsets, and allow for a greater number of OST objects to be stored in larger files. Additionally, multiple files could be combined into one, similar to the join file feature of the past, once components are able to be relocated. Test-Parameters: testlist=sanity-zero Signed-off-by: Alexey Lyashkov <alexey.lyashkov@hpe.com> Change-Id: I730c66c695a3ff718c78cb82dab878b4f720bf55
63767
master
J ✗1B ✓T ✗4R -1/2−
LU-20108 sec: support fscrypt natively for Linux 5.15
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
1 unique failure
upstream
18 unresolved
L +474 −208
36d
LU-20108 sec: support fscrypt natively for Linux 5.15
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
1 unique failure
upstream
18 unresolved
L +474 −208
36d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 1 test failure unique to this patch — runtests@ldiskfs+DNE:test_1
enforced failed: custom-1001, review-ldiskfs-dne, review-ldiskfs-dne-arm
18 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| runtests@ldiskfs+DNE:test_1 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 crashed | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: sanity-sec. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs-dne | RHEL 8.10 / x86_64 | ran 7 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-dne | RHEL 9.8 / x86_64 | ran 7 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-dne-arm | RHEL 8.10 / x86_64, Rocky 9.5 / aarch64 | ran 7 tests. 1 tests failed: sanity. | session |
build #131457 SUCCESS · tests all Maloo sessions
no vote yet: Shaun Tancheff, Sebastien Buisson, Timothy Day
patchsets:
PS1 02-03
PS2 07-14
PS3 08-10
PS4 09-09
PS5 09-09
threads: 18 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:10 — The body says this handles the replacement of fscrypt_inherit_context(), but all three call sites are still there and unguarded:
Gerrit AI review for Lustre
The body says this handles the replacement of fscrypt_inherit_context(), but all three call sites are still there and unguarded:
lustre/llite/namei.c:1230
lustre/llite/namei.c:1851
lustre/llite/dir.c:537
llcrypt_set_context() is only wired up in one place (ll_new_node_finish() for symlinks); everywhere else the new call is commented out. Should the message say the conversion is partial?
reply Gerrit AI review for Lustre COMMIT_MSG:12 — A few hunks aren't accounted for by the description - can they be explained, or split out?
Gerrit AI review for Lustre
A few hunks aren't accounted for by the description - can they be explained, or split out?
- config/Makefile.exports.in + lnet/libcfs/Makefile + lustre_compat/fs/crypto/Makefile: switching the llcrypt build gate from a config.h grep to an exported make variable
- lustre/llite/statahead.c: ll_xattr_cache_insert() -> ll_set_encflags()
- lustre/llite/namei.c: dropping the -ERANGE retry loop around get_context()
- lustre/llite/namei.c: dropping the `encrypt && (open_flags & O_CREAT) && d_inode(dentry)` branch that used to call ll_set_encflags() with preload=true
- the CDEBUG text changes ("it_finish server returned ...", "statahead server returned ...")
reply Gerrit AI review for Lustre COMMIT_MSG:16 — (defect) Two hunks aren't accounted for by the description:
Gerrit AI review for Lustre
(defect) Two hunks aren't accounted for by the description: - a new UAPI ioctl, LL_IOC_GET_ENCRYPTION_NONCE / llcrypt_ioctl_get_nonce() - the folio signature change of llcrypt_encrypt_pagecache_blocks(), llcrypt_decrypt_pagecache_blocks() and llcrypt_finalize_bounce_page(), plus the new lustre_compat/linux/folio.h include Both are independently landable. Should they be split out, or at least named in the body?
reply Gerrit AI review for Lustre lustre_crypto.h:50 — (defect) These now hand a folio to the in-kernel helpers, but on 5.15 - the kernel this patch is targeting - fscrypt_encrypt_pagecache_block
Gerrit AI review for Lustre
(defect) These now hand a folio to the in-kernel helpers, but on 5.15 - the kernel this patch is targeting - fscrypt_encrypt_pagecache_blocks() and fscrypt_decrypt_pagecache_blocks() take a `struct page *`, and fscrypt_finalize_bounce_page() at line 77 takes a `struct page **` (osc_request.c passes `foliop`). The folio conversions are much more recent. There is no HAVE_* guard or compat shim here, so the in-kernel build looks like it would still fail on 5.15 with incompatible-pointer errors. Should a config/*.m4 test cover the page-vs-folio variants?
reply Gerrit AI review for Lustre lustre_crypto.h:138 — (defect) FS_IOC_GET_ENCRYPTION_NONCE and fscrypt_ioctl_get_nonce() only appeared in v5.7, and the mapping at line 96 is unguarded. Since the
Gerrit AI review for Lustre
(defect) FS_IOC_GET_ENCRYPTION_NONCE and fscrypt_ioctl_get_nonce() only appeared in v5.7, and the mapping at line 96 is unguarded. Since the commit message says in-kernel fscrypt is supported down to 5.8-era kernels today, is a HAVE_FSCRYPT_IOCTL_GET_NONCE test needed before this can be mapped unconditionally?
reply Gerrit AI review for Lustre lustre_crypto.h:138 — (defect) This `#else` arm also covers the `--disable-crypto` build (no HAVE_LUSTRE_CRYPTO, no CONFIG_LL_ENCRYPTION), and llcrypt_context_for
Gerrit AI review for Lustre
(defect) This `#else` arm also covers the `--disable-crypto` build (no HAVE_LUSTRE_CRYPTO, no CONFIG_LL_ENCRYPTION), and llcrypt_context_for_new_inode() has no declaration there -- it is declared only at line 67 for the native branch, and in include/lustre_compat/linux/llcrypt.h only inside `#ifdef CONFIG_LL_ENCRYPTION`. dir.c and namei.c call it unguarded, so the build stops on an implicit declaration. llcrypt_prepare_new_inode() has the matching problem on the link side: it is declared here, but keysetup.c only defines it under `#if !defined(HAVE_FSCRYPT_SET_CONTEXT) || defined(CONFIG_LL_ENCRYPTION)`. On a kernel where HAVE_FSCRYPT_SET_CONTEXT is set (the autoconf test at config/lustre-core.m4:787 runs regardless of --enable-crypto), neither condition holds and nothing defines it. Should the no-crypto section of llcrypt.h grow stubs for both?
reply Gerrit AI review for Lustre dir.c:514 — (style) Not a bug, but this `len` shadows the `size_t len` parameter that is handed to md_create() further down, which makes the block harde
Gerrit AI review for Lustre
(style) Not a bug, but this `len` shadows the `size_t len` parameter that is handed to md_create() further down, which makes the block harder to follow. If the patch is refreshed, something like `ctxsize` would read better.
reply Gerrit AI review for Lustre namei.c:1668 — Since `encrypt` is forced to true a few lines up whenever IS_ENCRYPTED(dir) and open_flags is non-zero, the value passed in by ll_lookup_it_
Gerrit AI review for Lustre
Since `encrypt` is forced to true a few lines up whenever IS_ENCRYPTED(dir) and open_flags is non-zero, the value passed in by ll_lookup_it_finish() is now only meaningful for the open_flags == 0 case. Was the parameter meant to stay?
reply Gerrit AI review for Lustre namei.c:685 — (defect) This runs on every lookup, not just creates - ll_lookup_it_finish() is reached from plain ll_lookup_nd() too.
Gerrit AI review for Lustre
(defect) This runs on every lookup, not just creates - ll_lookup_it_finish() is reached from plain ll_lookup_nd() too.
Two consequences for an encrypted parent:
- llcrypt_prepare_new_inode() returns -ENOKEY when the master key isn't loaded, so `ls` / `stat` of anything inside an encrypted directory without the key now fails instead of showing no-key names.
- with the key loaded it ends in llcrypt_get_encryption_info(inode), i.e. a getxattr RPC for the child's context, issued *before* the server-supplied context is stored. That is exactly what the comment three lines below says this code is arranged to avoid ("save an extra getxattr and avoid deadlock").
Was this meant to be gated on the create disposition?
reply Gerrit AI review for Lustre namei.c:1197 — (defect) GOTO(free_fake_inode, ...) lands on a label that is still inside this `if` block, and nothing after the label rechecks the error -
Gerrit AI review for Lustre
(defect) GOTO(free_fake_inode, ...) lands on a label that is still inside this `if` block, and nothing after the label rechecks the error - control just falls through to the security-context setup, ll_intent_lock() and ll_lookup_it_finish(), and `retval` is overwritten by the success assignment at the end. So a failure from llcrypt_prepare_new_inode() or llcrypt_context_for_new_inode() is silently discarded, and the OBD_ALLOC failure at the -ENOMEM goto continues with op_file_encctx == NULL, creating the file in the encrypted directory with no encryption context at all. ll_dir_setdirstripe() and ll_new_node_prepare() both put an `if (err) GOTO(out..., err)` after the label; that seems to be missing here.
reply Gerrit AI review for Lustre namei.c:1210 — (defect) The volatile branch above takes a reference via volatile_ref_file() and the old code released it with fput() once the context had b
Gerrit AI review for Lustre
(defect) The volatile branch above takes a reference via volatile_ref_file() and the old code released it with fput() once the context had been fetched. Now the only fput() left is on the !ref_inode error path, so the reference leaks on every volatile-file create in an encrypted directory. The fake-inode branch also skips llcrypt_put_encryption_info(ref_inode) before destroy_inode(), so the llcrypt_info that llcrypt_prepare_new_inode() attached leaks too - dir.c:539 and namei.c:1843 both call it.
reply Gerrit AI review for Lustre namei.c:705 — (defect) Swapping ll_xattr_cache_insert() for llcrypt_set_context() ties caching the server-supplied context to the *parent's* policy, which
Gerrit AI review for Lustre
(defect) Swapping ll_xattr_cache_insert() for llcrypt_set_context() ties caching the server-supplied context to the *parent's* policy, which it did not depend on before.
For a directory that has its own policy but sits under an unencrypted parent, mdt_pack_encctx_in_reply() still sets OBD_MD_ENCCTX because the child carries LUSTRE_ENCRYPT_FL. Here `parent` is not encrypted, so llcrypt_prepare_new_inode() above returns 0 and leaves `encrypt` false, and then:
llcrypt_set_context() -> llcrypt_inherit_context(parent, ...)
-> llcrypt_get_encryption_info(parent) -> get_context() -> -ENODATA
(native path: fscrypt_set_context() hits WARN_ON_ONCE(!ci) and returns -ENOKEY).
The CWARN reads as non-fatal, but `rc` is no longer cleared on the way out -- the old `GOTO(out, rc = 0)` before the `out:` label is gone and `if (encrypt)` does not run to overwrite it, so ll_lookup_it_finish() returns the error and ll_lookup_it() turns it into ERR_PTR(). Does that make `ls`/`stat` of such a directory fail?
owner James Simmons · uploader James Simmons · PS5 uploaded 55d ago · NEW · open in Gerrit ↗
commit message
LU-20108 sec: support fscrypt natively for Linux 5.15 Currently Lustre only supports up to 5.8 kernels. This work handles the replacement of fscrypt_inherit_context() with fscrypt_prepare_new_inode() and fscrypt_set_context(). So the encrypt context is done in a two step process. Test-Parameters: trivial testlist=sanity-sec Change-Id: Ie8defa6e71fecddfd773e01f93d7ae3cb8d6e18e Signed-off-by: James Simmons <jsimmons@infradead.org>
45882
master
J ✗1B ✓T ✗5R -1/2−
LU-8130 ldlm: convert ldlm_resource hash to rhashtable
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
1 unique failure
upstream
19 unresolved
L +441 −347
36d
LU-8130 ldlm: convert ldlm_resource hash to rhashtable
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
1 unique failure
upstream
19 unresolved
L +441 −347
36d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 1 test failure unique to this patch — sanity-pcc@ldiskfs+DNE:test_22
enforced failed: review-dne-part-1, review-dne-part-5, review-dne-selinux-ssk-part-2, review-dne-zfs-part-3
18 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
1 thread(s) waiting on others
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-pcc@ldiskfs+DNE:test_22 | seen in 13 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 crashed | RHEL 10.1 / x86_64 | ran 3 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-5 crashed | RHEL 9.7 / x86_64 | ran 5 tests. 1 tests failed: sanityn. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 7 tests. 1 tests failed: sanity-sec. | session |
| review-dne-zfs-part-3 crashed | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-3 crashed | RHEL 10.1 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. %% THIS TEST SESSION CRASHED %% | session |
build #129749 SUCCESS · tests all Maloo sessions
no vote yet: Qian Yingjin, Shaun Tancheff, Alexey Lyashkov, Neil Brown, Vitaly Fertman, Timothy Day, Sergey Cheremencev, Andreas Dilger, Oleg Drokin, Patrick Farrell
patchsets:
PS81 08-07
PS82 08-09
PS83 08-12
PS84 08-14
PS85 08-19
+80 earlier
PS1 12-17 PS2 12-17 PS3 12-18 PS4 12-21 PS5 12-08 PS6 12-12 Neil Brown PS7 10-15 PS8 10-18 PS9 10-19 PS10 10-28 PS11 12-13 PS12 02-08 PS13 02-08 PS14 02-08 PS15 02-10 PS16 02-15 PS17 02-22 PS18 02-23 PS19 03-23 PS20 03-29 PS21 03-30 PS22 03-31 PS23 03-31 PS24 04-01 PS25 04-02 PS26 04-02 PS27 04-02 PS28 04-02 PS29 04-02 PS30 04-08 PS31 04-12 PS32 04-17 PS33 04-23 PS34 06-04 PS35 06-05 PS36 06-24 PS37 06-30 PS38 06-30 PS39 09-07 Shaun Tancheff PS40 09-08 Shaun Tancheff PS41 09-08 Shaun Tancheff PS42 09-08 PS43 10-15 Shaun Tancheff PS44 11-25 Shaun Tancheff PS45 12-21 Shaun Tancheff PS46 04-23 Shaun Tancheff PS47 05-02 PS48 05-03 PS49 07-25 PS50 12-12 PS51 12-15 PS52 12-19 PS53 01-26 PS54 02-05 PS55 02-09 PS56 02-13 PS57 02-14 PS58 02-14 PS59 02-19 PS60 03-06 PS61 04-13 PS62 04-16 PS63 04-30 PS64 05-11 Shaun Tancheff PS65 05-12 Shaun Tancheff PS66 05-13 Shaun Tancheff PS67 05-26 Shaun Tancheff PS68 05-28 Shaun Tancheff PS69 05-28 Janitor Bot PS70 05-28 Shaun Tancheff PS71 05-28 Shaun Tancheff PS72 05-28 PS73 05-29 Shaun Tancheff PS74 05-29 Shaun Tancheff PS75 05-29 Shaun Tancheff PS76 06-04 Shaun Tancheff PS77 06-06 Shaun Tancheff PS78 06-19 Shaun Tancheff PS79 06-20 PS80 08-05your previous vote: -1 on PS71 (2026-05-28 16:40) — now at PS85
threads: 18 need your reply · 1 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:41 — cl2osc() is container_of_safe() on oo_cl, which sits at offset 0, so IS_ERR_OR_NULL(cl2osc(obj)) is the same test as IS_ERR_OR_NULL(obj). It
Gerrit AI review for Lustre
cl2osc() is container_of_safe() on oo_cl, which sits at offset 0, so IS_ERR_OR_NULL(cl2osc(obj)) is the same test as IS_ERR_OR_NULL(obj). It checks the cl_object pointer that was passed in, not whether the osc_object still exists; an object that was freed while still referenced is an ordinary pointer, not NULL or an ERR_PTR. Could the message name the pointer that actually becomes NULL or an error, and where it is set that way?
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — ldlm/ldlm_resource.c:
Misc Code Checks Robot (Gatekeeper helper)
ldlm/ldlm_resource.c: warn: ldlm_resource_get():inconsistent indenting
reply Gerrit AI review for Lustre COMMIT_MSG:27 — This paragraph explains the bucket-array sizing change, but not that the bucket selection function changed shape as well. ldlm_res_hop_hash(
Gerrit AI review for Lustre
This paragraph explains the bucket-array sizing change, but not that the bucket selection function changed shape as well. ldlm_res_hop_hash() summed all four words of the res_id; ldlm_res_hop_fid_hash() hashes only the FID in name[0] and name[1]. Worth a sentence, since it changes which resources share an ldlm_ns_bucket. The new LDLM_FL_KUNIT_TESTING flag in lustre_dlm_flags.h isn't mentioned anywhere in the body either - is that meant to be part of this patch, or a separate cleanup of the bare BIT(63) uses?
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — ldlm/ldlm_resource.c:
Misc Code Checks Robot (Gatekeeper helper)
ldlm/ldlm_resource.c: warn: ldlm_resource_get():inconsistent indenting
reply Gerrit AI review for Lustre COMMIT_MSG:42 — (suggestion) No Test-Parameters: line for a change of this reach - it rewrites the resource lookup path for MDC/MDT/OSC/OST/MGC/MGT namespac
Gerrit AI review for Lustre
(suggestion) No Test-Parameters: line for a change of this reach - it rewrites the resource lookup path for MDC/MDT/OSC/OST/MGC/MGT namespaces and touches recovery, eviction and quota. Something like
Test-Parameters: testlist=recovery-small,replay-single,replay-dual,conf-sanity,sanity-quota
would get the paths this rewrites covered by the test run.
reply Gerrit AI review for Lustre lustre_dlm.h:1204 — lr_hash and lr_rcu share storage, so call_rcu(&res->lr_rcu, ...) writes over lr_hash.next. That was safe with cfs_hash because every chain w
Gerrit AI review for Lustre
lr_hash and lr_rcu share storage, so call_rcu(&res->lr_rcu, ...) writes over lr_hash.next. That was safe with cfs_hash because every chain walk held the bucket lock; rhashtable readers walk the chain under rcu_read_lock() alone. ldlm_resource_putref() -> __ldlm_resource_putref_final() does rhashtable_remove_fast(), then ldlm_resource_free(res, true) -> call_rcu(), and call_rcu() sets head->next = NULL right away. RCU removal requires the removed node's next pointer to stay intact for a grace period, because a reader can already be sitting on that node when it is unlinked. A concurrent ldlm_resource_get() walking that bucket then loads NULL as the next pointer. rht_is_a_nulls() only tests bit 0, so NULL is not recognised as end-of-chain: the loop body runs with pos == NULL, rht_obj() subtracts head_offset, and rs_cmp() dereferences the result. struct lu_object_header keeps loh_hash and loh_rcu as separate fields, with a comment about exactly this requirement. Should lr_rcu be split out of the union the same way?
reply Gerrit AI review for Lustre lustre_dlm_flags.h:387 — This isn't a bug, but BIT() is unsigned long while l_flags is __u64, so BIT(63) is out of range on a 32-bit build. Every other flag in this
Gerrit AI review for Lustre
This isn't a bug, but BIT() is unsigned long while l_flags is __u64, so BIT(63) is out of range on a 32-bit build. Every other flag in this file spells the value out as 0x...ULL with a /* bit N */ comment and provides ldlm_is_/ldlm_set_ helpers - consider matching that:
#define LDLM_FL_KUNIT_TESTING 0x8000000000000000ULL /* bit 63 */
#define ldlm_is_kunit_testing(_l) LDLM_TEST_FLAG((_l), 1ULL << 63)
#define ldlm_set_kunit_testing(_l) LDLM_SET_FLAG((_l), 1ULL << 63)
which would also let the two ldlm_lock.c users read like the surrounding flag tests.
reply Gerrit AI review for Lustre l_lock.c:34 — This gives lock_res_and_lock() a new failure return, but only 8 of the 111 call sites look at the result; the rest go straight on to unlock_
Gerrit AI review for Lustre
This gives lock_res_and_lock() a new failure return, but only 8 of the 111 call sites look at the result; the rest go straight on to unlock_res_and_lock(), which is unlock_res(lock->l_resource) on the very pointer that produced the error. As far as I can tell the error can't fire today: l_resource is only cleared by the rcu_assign_pointer(lock->l_resource, NULL) in ldlm_lock_put(), which runs after h_ref has already reached zero, so no caller that holds a lock reference can observe it, and nothing assigns an ERR_PTR to l_resource at all. So either it is unreachable, and the error plumbing added through ldlm_lock_enqueue(), ldlm_callback_handler(), osc_ldlm_glimpse_ast() and osc_extent_release() could go, or it is reachable and the other 103 callers need converting in the same patch. Which is it?
reply Gerrit AI review for Lustre ldlm_lock.c:196 — (minor) This critical section only spans the two pointer loads - res is dereferenced at the lr_type test below and handed to ldlm_resource_p
Gerrit AI review for Lustre
(minor) This critical section only spans the two pointer loads - res is dereferenced at the lr_type test below and handed to ldlm_resource_putref(), and ns is used by lprocfs_counter_decr(), all after rcu_read_unlock(). If l_resource really needed RCU protection here the section would have to reach as far as the putref; as written it protects nothing that the lock's own resource reference doesn't already cover. The LASSERT(lock->l_resource != LP_POISON) a few lines up reads the same field bare, which suggests the plain read was fine. Could this just go back to a direct load?
reply Gerrit AI review for Lustre ldlm_reclaim.c:176 — ns_reclaim_start is now only ever assigned 0 in ldlm_namespace_new(); the ldlm_res_to_ns(res)->ns_reclaim_start++ that used to advance it we
Gerrit AI review for Lustre
ns_reclaim_start is now only ever assigned 0 in ldlm_namespace_new(); the ldlm_res_to_ns(res)->ns_reclaim_start++ that used to advance it went away with the per-bucket bookkeeping in ldlm_reclaim_lock_cb(). rcd_start is therefore always 0, the rcd_skip/rcd_cursor fast-forward below can never trigger, and every reclaim pass restarts on the same resources. nsb_reclaim_start is incremented but no longer read either. That drops the round-robin scan the ldlm_reclaim_res() comment still describes, and it is not mentioned in the commit message. Is the intent to keep the round-robin, or to remove it and the now-dead rcd_skip/rcd_cursor/rcd_start fields with it? Also worth noting the units no longer match: rcd_cursor counts resources while tbl->size is a bucket count.
reply Gerrit AI review for Lustre ldlm_resource.c:1166 — (minor) This comment doesn't match the new scheme. With the rhashtable the table holds no reference of its own: an entry is removed exactly
Gerrit AI review for Lustre
(minor) This comment doesn't match the new scheme. With the rhashtable the table holds no reference of its own: an entry is removed exactly when `lr_refcount` hits zero in `__ldlm_resource_putref_final()`, and `rs_cmp()` hides zero-refcount entries from lookups. During the walk the only extra reference is the `refcount_inc_not_zero()` in `ldlm_resource_for_each()`. So the count printed below is one lower than the number of stray references, and a resource holding exactly one leaked reference no longer produces the message at all.
reply Gerrit AI review for Lustre ldlm_resource.c:1174 — (style) This is a new exported API and it has no kerneldoc, unlike `ldlm_resource_get()` right below. Worth documenting the callback contrac
Gerrit AI review for Lustre
(style) This is a new exported API and it has no kerneldoc, unlike `ldlm_resource_get()` right below. Worth documenting the callback contract, in particular that the callback owns no reference (it must not putref), that a non-zero return stops the walk, and that a callback can be invoked more than once for the same resource - `rhashtable_walk_start()` here is the void variant, so the `-EAGAIN` a resize produces is discarded and the walk restarts from slot 0. That last property is what forced the `l_pending_chain` check in `ldlm_chain_lock_for_replay()`, and every future callback author needs to know about it.
owner James Simmons · uploader James Simmons · PS85 uploaded 76d ago · NEW · open in Gerrit ↗
commit message
LU-8130 ldlm: convert ldlm_resource hash to rhashtable Using an rhashtable allows lockless lookup at the cost of rcu freeing of entries. When we find an entry, we need to atomically check the reference hasn't dropped to zero. When adding an entry, we might find an existing entry which is in the process of being removed - with a zero refcount. In that case we loop around and repeat the lookup. To ensure this doesn't spin, the 'cmp' function will fail any comparison with a resource which has a zero refcount. Now that we are using resizing hash tables, we don't need to preconfig suitable sizes for each namespace. We can just use the default and let it grow as needed. We keep the pre-configured sizes for the bucket array. Previously the size of the bucket array was the difference between nsd_all_bits and nsd_bkt_bits. As we don't need nsd_all_bits any more, nsd_bkt_bits is changed to the number of bits used to choose a bucket. Walking an rhashtable requires that we manage refcounts ourself, so a new function, ldlm_resource_for_each() is added to do that. Note that with this patch we now update a per-table counter on every insert/remove, which might cause more contention between CPUs on a busy system. Hopefully rhashtable will be enhanced in the near future to support a per-CPU counter for nelems. Only use call_rcu() to free slab resources that have been removed from the rhashtable, other cases can be free immediately. This change exposes new race conditions in the osc layer so we add code to check if osc_objects still exist. Signed-off-by: NeilBrown <neil@brown.name> Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Ie65f6c5f6e246ed6684ade05ddab8740ac8137dd
37246
master
J ✗14B ✗T –R 0/2
LU-13139 obdclass: collect stats for OSD methods
carrying Alex Zhuravlev · build failure (#131784)
14 unique failures
1 unresolved
L +447 −114
49d
LU-13139 obdclass: collect stats for OSD methods
carrying Alex Zhuravlev · build failure (#131784)
14 unique failures
1 unresolved
L +447 −114
49d
build failure (#131784)
janitor: 14 test failures unique to this patch — ost-pools@ldiskfs+DNE:test_25, ost-pools@zfs:test_25, recovery-small@ldiskfs+DNE:test_29a +11 more
1 unresolved thread(s) await your reply — last from Andreas Dilger
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| ost-pools@ldiskfs+DNE:test_25 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_25 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| recovery-small@ldiskfs+DNE:test_29a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| recovery-small@zfs:test_29a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@ldiskfs+DNE:test_56od | seen in 6 other reviews |
| sanity2@ldiskfs+DNE:test_65k | seen in 2 other reviews |
| sanity2@zfs:test_65k | seen in 2 other reviews |
| sanity-slow@zfs:test_255c | seen in 3 other reviews |
| sanity-lfsck@ldiskfs+DNE:test_43 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-lfsck@ldiskfs+DNE:test_45 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-lfsck@zfs:test_45 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_16c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_80 | seen in 81 other reviews |
| sanity-quota@zfs:test_16c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
build #131784 FAILURE
no vote yet: Andreas Dilger, Timothy Day
patchsets:
PS57 05-30 James Simmons
PS58 06-03 James Simmons
PS59 06-16 James Simmons
PS60 07-13 James Simmons
PS61 09-15 James Simmons
+55 earlier
PS2 01-19 PS3 01-19 PS4 01-30 PS5 02-09 PS6 02-14 PS7 02-17 PS8 02-21 PS9 03-04 PS10 03-27 PS11 04-10 PS12 04-12 PS13 04-24 PS14 05-04 PS15 07-03 PS16 07-05 PS17 08-01 PS18 01-27 PS19 02-12 Andreas Dilger PS20 02-13 PS21 02-14 PS22 02-16 PS23 02-27 PS24 02-29 PS25 04-30 PS26 06-01 PS27 06-21 PS28 07-09 PS29 08-06 PS30 08-11 PS31 08-22 PS32 09-04 PS33 09-09 PS34 10-09 PS35 10-30 PS36 11-24 PS37 12-10 PS38 12-10 PS39 12-23 PS40 01-23 PS41 02-14 PS42 03-27 PS43 04-10 PS44 04-18 PS45 04-28 PS46 05-19 PS47 05-22 PS48 06-05 PS49 06-16 PS50 06-23 PS51 07-08 PS52 07-09 James Simmons PS53 07-24 James Simmons PS54 05-14 PS55 05-19 PS56 05-28your previous vote: +1 on PS53 (2025-07-24 16:49) — now at PS61
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger dt_object.c:1980 — It would be better to have a table declaring the stats, then have a loop iterating over all entries in the table to call lpricfs_counter_ini
Andreas Dilger
It would be better to have a table declaring the stats, then have a loop iterating over all entries in the table to call lpricfs_counter_init() for each entry.
owner Alex Zhuravlev · uploader James Simmons · PS61 uploaded 50d ago · NEW · open in Gerrit ↗
commit message
LU-13139 obdclass: collect stats for OSD methods frequency and time spent in each method is collected, then can be found in os[dp].*.osd_stats and lod.*.osd_stats: osd-ldiskfs.lustre-MDT0000.osd_stats= snapshot_time 1674142976.044241006 secs.nsecs start_time 1674142916.072747822 secs.nsecs elapsed_time 59.971493184 secs.nsecs trans_create 259 samples [usecs] 2 18 2000 18560 trans_start 259 samples [usecs] 0 249 505 64715 trans_stop 259 samples [usecs] 0 1906 11820 10291894 read_lock 332 samples [usecs] 0 1 3 3 write_lock 284 samples [usecs] 0 0 0 0 decl_create 100 samples [usecs] 0 12 57 491 create 94 samples [usecs] 11 96 4060 198414 decl_destroy 2 samples [usecs] 4 12 16 160 attr_get 493 samples [usecs] 0 23 24 530 decl_ref_add 36 samples [usecs] 0 0 0 0 ref_add 24 samples [usecs] 0 1 1 1 decl_ref_del 2 samples [usecs] 0 0 0 0 decl_xattr_set 102 samples [usecs] 0 0 0 0 xattr_set 15 samples [usecs] 0 5 10 32 xattr_get 35 samples [usecs] 0 7 17 91 decl_insert 116 samples [usecs] 0 0 0 0 insert 116 samples [usecs] 0 31 441 5607 ... osp.lustre-MDT0000-osp-MDT0001.osd_stats= snapshot_time 1734959321.493552049 secs.nsecs start_time 1734959257.142508748 secs.nsecs elapsed_time 64.351043301 secs.nsecs trans_create 5 samples [usecs] 0 0 0 0 trans_start 5 samples [usecs] 0 0 0 0 trans_stop 5 samples [usecs] 0 306 324 93870 read_lock 4 samples [usecs] 0 0 0 0 write_lock 13 samples [usecs] 0 0 0 0 decl_create 3 samples [usecs] 0 1 1 1 create 3 samples [usecs] 0 2 2 4 attr_get 16 samples [usecs] 0 34 68 2312 Change-Id: I1efe3eb5e646cd638a5fe558886468faa528a9d1 Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com>
58592
master
J !B ✓T ✗46R 0/2
LU-8130 obd: replace gen hash with Xarray
mine enforced failed: review-dne-ipv6, review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-part-7, review-dne-part-8, review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-ldiskfs, review-ldiskfs-arm, review-ldiskfs-ubuntu, review-zfs
upstream
10 unresolved
M +30 −155
57d
LU-8130 obd: replace gen hash with Xarray
mine enforced failed: review-dne-ipv6, review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-part-7, review-dne-part-8, review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-ldiskfs, review-ldiskfs-arm, review-ldiskfs-ubuntu, review-zfs
upstream
10 unresolved
M +30 −155
57d
enforced failed: review-dne-ipv6, review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-part-7, review-dne-part-8, review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-ldiskfs, review-ldiskfs-arm, review-ldiskfs-ubuntu, review-zfs
10 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-ipv6 crashed | RHEL 9.7 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-ipv6 crashed | RHEL 9.8 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-1 crashed | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-1 crashed | RHEL 9.8 / x86_64 | ran 3 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-1 crashed | RHEL 10.1 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-2 crashed | RHEL 9.7 / x86_64 | ran 20 tests. 8 tests failed: sanity-pfl, sanity-lnet, lnet-selftest, pjdfstest, sanity-sec, sanity-lfsck, ru | session |
| review-dne-part-3 crashed | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-3 crashed | RHEL 9.8 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-4 crashed | RHEL 10.1 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-4 crashed | RHEL 9.7 / x86_64 | ran 15 tests. 7 tests failed: sanity-quota, sanity-hsm, sanity-flr, sanity-dom, replay-ost-single, mmp, insan | session |
| review-dne-part-5 crashed | RHEL 9.7 / x86_64 | ran 8 tests. 2 tests failed: sanityn, recovery-small. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-6 crashed | RHEL 9.7 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-6 crashed | RHEL 9.8 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-6 crashed | RHEL 10.1 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-7 crashed | RHEL 9.8 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-7 crashed | RHEL 9.7 / x86_64 | ran 10 tests. 4 tests failed: sanity-ec, sanity-scrub, sanity-pcc, large-scale. %% THIS TEST SESSION CRASHED | session |
| review-dne-part-8 crashed | RHEL 9.7 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-8 crashed | RHEL 10.1 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-8 crashed | RHEL 9.8 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-selinux-ssk-part-1 crashed | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-selinux-ssk-part-2 crashed | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-1 crashed | RHEL 9.7 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-1 crashed | RHEL 9.8 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-1 crashed | RHEL 10.1 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-2 crashed | RHEL 9.7 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-2 crashed | RHEL 10.1 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-2 crashed | RHEL 9.8 / x86_64 | ran 19 tests. 9 tests failed: sanity-pfl, sanity-lnet, lnet-selftest, pjdfstest, sanity-sec, sanity-lfsck, ru | session |
| review-dne-zfs-part-3 crashed | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-3 crashed | RHEL 10.1 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-3 crashed | RHEL 9.8 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-4 crashed | RHEL 10.1 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-4 crashed | RHEL 9.8 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-4 crashed | RHEL 9.7 / x86_64 | ran 13 tests. 7 tests failed: sanity-quota, sanity-hsm, sanity-flr, sanity-dom, replay-ost-single, mmp, insan | session |
| review-dne-zfs-part-5 crashed | RHEL 9.7 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-6 crashed | RHEL 9.7 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-6 crashed | RHEL 10.1 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-6 crashed | RHEL 9.8 / x86_64 | ran 4 tests. 2 tests failed: ost-pools, replay-single. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-7 crashed | RHEL 9.8 / x86_64 | ran 6 tests. 3 tests failed: sanity-ec, sanity-pcc, large-scale. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-7 crashed | RHEL 9.7 / x86_64 | ran 10 tests. 4 tests failed: sanity-ec, sanity-scrub, sanity-pcc, large-scale. %% THIS TEST SESSION CRASHED | session |
| review-ldiskfs crashed | RHEL 8.10 / x86_64 | ran 7 tests. 3 tests failed: sanity-lnet, sanity, lnet-selftest. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs crashed | RHEL 8.10 / x86_64, SLES 15.7 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs crashed | RHEL 8.10 / x86_64, RHEL 9.8 / x86_64 | ran 7 tests. 3 tests failed: sanity-lnet, sanity, lnet-selftest. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs crashed | RHEL 8.10 / x86_64, RHEL 10.1 / x86_64 | ran 9 tests. 3 tests failed: sanity-lnet, sanity, lnet-selftest. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs-arm crashed | RHEL 8.10 / x86_64, Rocky 9.5 / aarch64 | ran 8 tests. 4 tests failed: sanity-sec, sanity-lnet, sanity, lnet-selftest. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs-ubuntu crashed | RHEL 8.10 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-zfs crashed | RHEL 8.10 / x86_64 | ran 14 tests. 6 tests failed: sanity-lsnapshot, insanity, replay-ost-single, replay-single, sanity-flr, sanit | session |
build #131254 SUCCESS · tests all Maloo sessions
no vote yet: Mikhail Pershin
patchsets:
PS1 03-30
PS2 03-30
PS3 04-10
PS4 01-10
PS5 09-07
threads: 10 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:11 — The body explains the data-structure swap but not the reference-counting changes that come with it. class_export_put() is added in class_unl
Gerrit AI review for Lustre
The body explains the data-structure swap but not the reference-counting changes that come with it. class_export_put() is added in class_unlink_export() and tgt_client_free(), and removed in tgt_reply_data_init() and update_recovery_update_ses(). Those are behavior changes, not a mechanical hash->xarray conversion, and it would help to say what the intended ownership rule for obd_gen_ids is. The old gen_kepcmp() also filtered on !exp->exp_failed, so lookups could never return a failed export; xa_load() has no such filter. That change deserves a line in the message too.
reply Gerrit AI review for Lustre COMMIT_MSG:13 — (style) Signed-off-by: normally comes before Change-Id:; the reversed order usually means the Lustre commit hook is not installed locally.
Gerrit AI review for Lustre
(style) Signed-off-by: normally comes before Change-Id:; the reversed order usually means the Lustre commit hook is not installed locally.
reply Gerrit AI review for Lustre obd.h:722 — (style) The comment above still calls this a hash body. While renaming the field, `obd_gen_ids` reads as if it stores ids rather than export
Gerrit AI review for Lustre
(style) The comment above still calls this a hash body. While renaming the field, `obd_gen_ids` reads as if it stores ids rather than exports keyed by generation - something like obd_gen_exports would say what it holds.
reply Gerrit AI review for Lustre genops.c:1152 — (defect) Two problems with this put.
Gerrit AI review for Lustre
(defect) Two problems with this put. First, ted_lcd is non-NULL for every target export (tgt_client_alloc() allocates it for all non-self exports), while an obd_gen_ids entry only exists for exports inserted by tgt_clients_data_init() when tgt_is_multimodrpcs_record() is true. So a regular client that connected after mount was never in the xarray, yet still gets a put here. The old code was guarded by hlist_unhashed(&exp->exp_gen_hash), which was exactly the "is it in the table" test; xa_erase()'s return value can serve the same purpose. Second, nothing takes a matching reference on insert any more, so even for exports that are in the xarray this put has no counterpart. Worth noting too: this runs with obd_dev_lock held, and if it ever is the final reference, class_export_put() -> obd_zombie_export_add() takes obd_dev_lock again.
reply Gerrit AI review for Lustre obd_config.c:963 — (minor) xa_destroy() on the next line already erases every entry and frees the nodes, so this loop looks like a no-op. If the intent was to
Gerrit AI review for Lustre
(minor) xa_destroy() on the next line already erases every entry and frees the nodes, so this loop looks like a no-op. If the intent was to release the export references held by the xarray, the loop needs a class_export_put() on each entry (and a reference has to be taken on insert first). Reusing `flag`, the char * used above for parsing the lcfg flag string, as the xa_for_each() entry variable is also confusing to read.
reply Gerrit AI review for Lustre tgt_lastrcvd.c:467 — (defect) This drops a reference the xarray never took, and it does so from a context where the refcount is already zero.
Gerrit AI review for Lustre
(defect) This drops a reference the xarray never took, and it does so from a context where the refcount is already zero.
The main caller chain is class_export_put() -> obd_zombie_exp_cull() -> class_export_destroy() -> obd_destroy_export() -> mdt_destroy_export()/ofd_destroy_export() -> tgt_client_free(). class_export_destroy() opens with
LASSERT(refcount_read(&exp->exp_handle.h_ref) == 0);
so the class_export_put() here hits its own LASSERT(refcount_read(...) > 0) and LBUGs. That is on the teardown path of every regular server export, not just the ones recovered from last_rcvd.
mdt_init_export()'s err_free: path also calls tgt_client_free() directly, where the export is still live, so there it silently loses a reference instead.
The old code only removed the export when it was actually hashed (hlist_unhashed()); the xarray entry only exists for exports added by tgt_clients_data_init() with a non-zero lcd_generation, so an unconditional put cannot be right either way. xa_erase() returning the old entry could be used to tell the two cases apart.
reply Gerrit AI review for Lustre tgt_lastrcvd.c:1773 — (defect) The old cfs_hash_add_unique() took a reference on the export through gen_hash_ops.hs_get()->class_export_get(). ll_xa_insert() does
Gerrit AI review for Lustre
(defect) The old cfs_hash_add_unique() took a reference on the export through gen_hash_ops.hs_get()->class_export_get(). ll_xa_insert() does not, so after the class_export_put() two lines below the xarray holds a bare pointer with no reference at all. Every surviving class_export_put() that was paired with that reference is now unbalanced - see class_unlink_export(), tgt_client_free(), the error path below at tgt_set_reply_slot(), and distribute_txn_replay_handle(). Should this be class_export_get(exp) before the insert?
reply Gerrit AI review for Lustre tgt_lastrcvd.c:1775 — (minor) GFP_KERNEL here; Lustre server allocations in this path normally use GFP_NOFS (OBD_ALLOC_PTR() a few lines up does). This runs durin
Gerrit AI review for Lustre
(minor) GFP_KERNEL here; Lustre server allocations in this path normally use GFP_NOFS (OBD_ALLOC_PTR() a few lines up does). This runs during target mount while reading last_rcvd, so reclaim recursing back into the same device seems worth avoiding.
reply Gerrit AI review for Lustre tgt_lastrcvd.c:2252 — (defect) The success-path class_export_put() below was removed with the switch to xa_load(), but this one on the tgt_set_reply_slot() error
Gerrit AI review for Lustre
(defect) The success-path class_export_put() below was removed with the switch to xa_load(), but this one on the tgt_set_reply_slot() error path was left behind. xa_load() returns no reference, so this drops one that belongs to someone else.
reply Gerrit AI review for Lustre update_recovery.c:1091 — (defect) cfs_hash_lookup() returned a referenced export, and that reference was handed to tsi->tsi_exp and released later by distribute_txn_
Gerrit AI review for Lustre
(defect) cfs_hash_lookup() returned a referenced export, and that reference was handed to tsi->tsi_exp and released later by distribute_txn_replay_handle():
if (tgt_ses_info(env)->tsi_exp != NULL) {
class_export_put(tgt_ses_info(env)->tsi_exp);
xa_load() returns an unreferenced pointer, so that put now drops a reference this path never acquired, and tsi_exp can be freed under the replay while it is still in use.
Separately, gen_kepcmp() used to reject exports with exp_failed set, so an evicted export could never end up in tsi_exp. xa_load() has no such filter - is update replay expected to cope with a failed export here?
owner James Simmons · uploader James Simmons · PS5 uploaded 57d ago · NEW · open in Gerrit ↗
commit message
LU-8130 obd: replace gen hash with Xarray Using a hash table for sequential values doesn't make sense in this case. Instead track the recovery generation values for exports using a Xarray. Change-Id: Iccff86b7473c61a25caf336b30342ce2dc12e148 Signed-off-by: James Simmons <jsimmons@infradead.org>
65273
master
J –B ✓T ✗1R -1/2−
LU-14291 utils: don't build gss server utilies for clients
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
5 unresolved
S +11 −6
58d
LU-14291 utils: don't build gss server utilies for clients
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
5 unresolved
S +11 −6
58d
needs rebase — checkpatch: cannot be cherry-picked
enforced failed: custom-1001
5 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
build #127068 SUCCESS · tests all Maloo sessions
patchsets:
PS3 04-14
PS4 04-14
PS5 04-18
PS6 04-30
PS7 06-29
+2 earlier
PS1 04-13 PS2 04-14threads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (typo) "utilies" -> "utilities" in the subject, and "utilites" -> "utilities" on the body line below.
Gerrit AI review for Lustre
(typo) "utilies" -> "utilities" in the subject, and "utilites" -> "utilities" on the body line below.
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (minor) The body only covers the lsvcgssd/l_getauth split, but the diff also appends $(UTILS_CFLAGS) to AM_CFLAGS. Is that intended to ride
Gerrit AI review for Lustre
(minor) The body only covers the lsvcgssd/l_getauth split, but the diff also appends $(UTILS_CFLAGS) to AM_CFLAGS. Is that intended to ride along here, or should it be a separate change? Either way it should be mentioned so the hunk isn't a surprise.
reply Gerrit AI review for Lustre Makefile.am:4 — (minor) This hunk isn't part of the client/server split. If the intent is to pick up the distro build flags the way lustre/utils/Makefile.am
Gerrit AI review for Lustre
(minor) This hunk isn't part of the client/server split. If the intent is to pick up the distro build flags the way lustre/utils/Makefile.am does, note that file also sets
AM_LDFLAGS := $(UTILS_LDFLAGS)
and UTILS_LDFLAGS is exported alongside UTILS_CFLAGS in lustre.spec.in. Here the link flags are still unset, and each program overrides them with its own lsvcgssd_LDFLAGS/l_getauth_LDFLAGS/lgss_keyring_LDFLAGS/lgss_sk_LDFLAGS = $(KRBLDFLAGS), so an AM_LDFLAGS alone wouldn't take effect either - $(UTILS_LDFLAGS) would have to be added to each of those lines. Should the hardening flags be applied consistently, in a patch of their own?
reply Gerrit AI review for Lustre Makefile.am:15 — (suggestion) While completing the client/server split: lustre/scripts/systemd/Makefile.am still installs lsvcgss.service unconditionally und
Gerrit AI review for Lustre
(suggestion) While completing the client/server split: lustre/scripts/systemd/Makefile.am still installs lsvcgss.service unconditionally under HAVE_SYSTEMD, and the spec adds it to lustre.files the same way, even though lsvcgss_sysd and the init script are already SERVER-only. So a client package keeps shipping a unit for a daemon it no longer builds. Worth wrapping in SERVER here too?
reply Gerrit AI review for Lustre Makefile.am:15 — With these two now server-only, a client-only install has no l_getauth and no lsvcgssd, but test-framework.sh still resolves both on the loc
Gerrit AI review for Lustre
With these two now server-only, a client-only install has no l_getauth and no lsvcgssd, but test-framework.sh still resolves both on the local (client) node and has no /usr/sbin fallback:
export L_GETAUTH=${L_GETAUTH:-"$LUSTRE/utils/gss/l_getauth"}
[ ! -f "$L_GETAUTH" ] && export L_GETAUTH=$(which l_getauth 2> /dev/null)
export LSVCGSSD=${LSVCGSSD:-"$LUSTRE/utils/gss/lsvcgssd"}
[ ! -f "$LSVCGSSD" ] && export LSVCGSSD=$(which lsvcgssd 2> /dev/null)
When the test node runs a client build both expand to the empty string, and the values are then used on the server nodes:
do_nodes $nodes "$LSVCGSSD -vvv -s -m -o -z $options" || return 1
do_nodesv $node "$L_GETAUTH -d"
do_nodesv $servers "$LCTL set_param sptlrpc.gss.rsi_upcall=$L_GETAUTH"
start_gss_daemons() then runs "-vvv -s -m -o -z" remotely and returns 1, and init_gss() does start_gss_daemons() || error_exit, so setup aborts for any SHARED_KEY/krb5 run on a mixed client/server install. Should this patch also give L_GETAUTH/LSVCGSSD a "/usr/sbin/..." fallback (the way LR_READER and LSOM_SYNC do a few lines above), or resolve them on a server facet instead?
owner James Simmons · uploader James Simmons · PS7 uploaded 127d ago · NEW · open in Gerrit ↗
commit message
LU-14291 utils: don't build gss server utilies for clients Both lsvcgssd and l_getauth are server only utilites. Test-Parameters: trivial env=SHARED_KEY=true testlist=sanity,sanity-sec Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Iba4830ea74cad3b6c615663bd7ebe135cf39515f
57948
master
J !B ✓T ✗2R +0/2−
LU-18689 ptlrpc: ensure import exist for sec debugfs files
carrying Oleg Drokin · needs rebase — checkpatch: cannot be cherry-picked
needs rebase
M +63 −55
61d
LU-18689 ptlrpc: ensure import exist for sec debugfs files
carrying Oleg Drokin · needs rebase — checkpatch: cannot be cherry-picked
needs rebase
M +63 −55
61d
needs rebase — checkpatch: cannot be cherry-picked
enforced failed: review-dne-part-1, review-dne-selinux-ssk-part-2
janitor run: 2 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 9.5 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanity-selinux. | session |
3 optional test failure(s) — informational
build #114988 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1
no vote yet: Andreas Dilger, Alex Zhuravlev, Timothy Day
patchsets:
PS5 02-18 James Simmons
PS6 03-28 James Simmons
PS7 04-25 James Simmons
PS8 05-24
PS9 07-11 James Simmons
+4 earlier
PS1 02-03 PS2 02-05 James Simmons PS3 02-08 James Simmons PS4 02-10 James Simmonsowner Oleg Drokin · uploader James Simmons · PS9 uploaded 481d ago · NEW · open in Gerrit ↗
commit message
LU-18689 ptlrpc: ensure import exist for sec debugfs files Access sec imports safely under with_imp_locked. This fixes crashes in recovery-small test 57 that look like this: BUG: unable to handle kernel NULL pointer dereference at 00000000000000d0 IP: [<ffffffff81411a45>] do_raw_read_lock+0x5/0x30 RIP: 0010:[<ffffffff81411a45>] [<ffffffff81411a45>] do_raw_read_lock+0x5/0x30 Call Trace: [<ffffffff817e333e>] _raw_read_lock+0x1e/0x20 [<ffffffffa0666f0e>] sptlrpc_import_sec_ref+0x1e/0x40 [ptlrpc] [<ffffffffa06742f0>] srpc_sptlrpc_sepol_seq_show+0x30/0x130 [ptlrpc] [<ffffffff8126f0b5>] seq_read+0x135/0x470 [<ffffffff81245839>] vfs_read+0xb9/0x1c0 [<ffffffff817edf49>] ? system_call_after_swapgs+0x96/0x13a [<ffffffff8124676f>] SyS_read+0x7f/0xf0 [<ffffffff817edf55>] ? system_call_after_swapgs+0xa2/0x13a [<ffffffff817ee00c>] system_call_fastpath+0x1f/0x24 [<ffffffff817edf55>] ? system_call_after_swapgs+0xa2/0x13a Signed-off-by: Oleg Drokin <green@whamcloud.com> Change-Id: Id84c8803317b621cb80a21977eafe5b9cf96a9be
49732
master
J ✓B ✓T ✗1R 0/2
LU-12661 tests: re-enable sanity 817
mine enforced failed: review-ldiskfs-dne-arm
8 unresolved
XS +0 −4
82d
LU-12661 tests: re-enable sanity 817
mine enforced failed: review-ldiskfs-dne-arm
8 unresolved
XS +0 −4
82d
enforced failed: review-ldiskfs-dne-arm
8 unresolved thread(s) await your reply — last from Andreas Dilger
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-dne-arm | RHEL 8.10 / x86_64, Rocky 9.5 / aarch64 | ran 5 tests. 1 tests failed: sanity. | session |
build #129258 SUCCESS · tests all Maloo sessions
no vote yet: Neil Brown
patchsets:
PS1 01-23
PS2 05-13
PS3 08-13
threads: 8 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger COMMIT_MSG:13 — (style) presumably should have a `Fixes:` line?
Andreas Dilger
(style) presumably should have a `Fixes:` line?
reply Andreas Dilger COMMIT_MSG:14 — (style) prefer `Change-Id:` after `Signed-off-by:`
Andreas Dilger
(style) prefer `Change-Id:` after `Signed-off-by:`
reply Gerrit AI review for Lustre COMMIT_MSG:9 — Could the message name the fixes it is relying on, and the minimum kernel version they are in? As written "newer kernels and fixes landed fo
Gerrit AI review for Lustre
Could the message name the fixes it is relying on, and the minimum kernel version they are in? As written "newer kernels and fixes landed for better NFS support" is not verifiable, and LU-12661 is still Open with summary "sanity test_817: FAIL: failed to execute 'true' command". The exclusion 3e2c28437404 removed here was widened from 4.14 to 4.12 specifically because SLES 4.12.14 hit it, and 4fed33473ca2 recorded that the failure happens "regardless of whether the nfs export is backed by a lustre mount or not" - i.e. it is nfsd holding the file open, not something llite can fix. That makes it worth spelling out which change is expected to have altered this.
reply Gerrit AI review for Lustre COMMIT_MSG:10 — (typo) "sanity tets 817" -> "tests".
Gerrit AI review for Lustre
(typo) "sanity tets 817" -> "tests".
reply Gerrit AI review for Lustre COMMIT_MSG:13 — (style) carried over from the previous revision, which was rebased without changes: a `Fixes:` line still seems appropriate here since this
Gerrit AI review for Lustre
(style) carried over from the previous revision, which was rebased without changes: a `Fixes:` line still seems appropriate here since this undoes the exclusion added by
Fixes: 3e2c28437404 ("LU-12661 tests: skip sanity 817 for kernel 4.12+")
reply Gerrit AI review for Lustre COMMIT_MSG:14 — (style) also carried over from the previous revision: `Change-Id:` is still before `Signed-off-by:`.
Gerrit AI review for Lustre
(style) also carried over from the previous revision: `Change-Id:` is still before `Signed-off-by:`.
reply Gerrit AI review for Lustre sanity.sh:52 — Dropping the block entirely re-enables 817 on every kernel, not just new ones. All currently supported clients in lustre/ChangeLog are above
Gerrit AI review for Lustre
Dropping the block entirely re-enables 817 on every kernel, not just new ones. All currently supported clients in lustre/ChangeLog are above the 4.12 threshold - RHEL 8.10 (4.18.0-553), RHEL 9.7/9.8 (5.14.0), SLES15 SP5 (5.14.21), Ubuntu 22.04 (5.15) - so the test now runs on exactly the kernels the exclusion was added for, with nothing gating it on the "newer kernels" the commit message refers to.
If the fix really is version dependent, would a bounded guard be safer, e.g.
if (( $LINUX_VERSION_CODE < $(version_code X.Y.0) )); then
always_except LU-12661 817
fi
with X.Y.0 being the first kernel where nfsd releases the file?
reply Gerrit AI review for Lustre sanity.sh:36565 — With the exclusion gone this line runs again, and it execs immediately after the copy with no wait. exec() returns ETXTBSY while any writer
Gerrit AI review for Lustre
With the exclusion gone this line runs again, and it execs immediately after the copy with no wait. exec() returns ETXTBSY while any writer holds the inode, and nfsd drops its write reference asynchronously (filecache / NFSv4 open state), not at the point `cp` returns - which is what 4fed33473ca2 described as "nfsd is not releasing the file after write".
Even on a kernel where nfsd does eventually release it, checking once immediately after the copy looks racy. Could this either unmount $tmpdir first to force the client CLOSE, or retry, e.g.
wait_update $HOSTNAME "$DIR/nfsexp/true && echo ok" "ok" 30 ||
error "failed to execute 'true' command"
owner James Simmons · uploader James Simmons · PS3 uploaded 83d ago · NEW · open in Gerrit ↗
commit message
LU-12661 tests: re-enable sanity 817 With newer kernels and fixes landed for better NFS support lets re-enable sanity tets 817. Test-Parameters: trivial Test-Parameters: testlist=sanity env=ONLY=817 Change-Id: I993165efdf5a7472676c5af20e079d6fbee5a098 Signed-off-by: James Simmons <jsimmons@infradead.org>
66820
master
J !B ✓T ✓R ✗
LU-20422 lod: fix lockdep bug
carrying Timothy Day · Timothy Day voted -1
CR -1
2 unresolved
S +24 −8
92d
LU-20422 lod: fix lockdep bug
carrying Timothy Day · Timothy Day voted -1
CR -1
2 unresolved
S +24 −8
92d
Timothy Day voted -1
2 unresolved thread(s) await your reply — last from Timothy Day
no vote yet from Andreas Dilger, Alex Zhuravlev
janitor run: 3 failing config(s), none unique to this patch — janitor results
1 optional test failure(s) — informational
build #127623 SUCCESS · tests all Maloo sessions
reviews:
Arshad Hussain +1 · Timothy Day -1
no vote yet: Andreas Dilger, Alex Zhuravlev
patchsets:
PS1 06-23
PS2 07-10 James Simmons
PS3 07-15 James Simmons
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Timothy Day COMMIT_MSG:8 — Sure, I can do that when I refresh.
Arshad Hussain
(comment) Fix lockdep bug by splitting function lod_obj_for_each_stripe() into lock/unlocked version
James Simmons
Could we change this to LU-18658 LU ticket number
Timothy Day
Sure, I can do that when I refresh.
reply Timothy Day lod_qos.c:515 — Nesting the mutexes is fine, as long as they're consistently nested in the same order. I can see if I can rework this - might require a larg
Alex Zhuravlev
what if the layout is changing in another thread at the moment?
James Simmons
Sadly this function is called by both the qos and lod object code using two different mutex. Normally we do nested but I don't think nesting the mutexs in this case would be the right fit. Maybe we can use wait_on_bit() which would tell us when the layout_mutex is in use?
Timothy Day
Nesting the mutexes is fine, as long as they're consistently nested in the same order. I can see if I can rework this - might require a larger refactor.
owner Timothy Day · uploader James Simmons · PS3 uploaded 112d ago · NEW · open in Gerrit ↗
commit message
LU-20422 lod: fix lockdep bug
WARNING: possible circular locking dependency detected
...
mdt_io00_000/394 is trying to acquire lock:
ffff8881b1c26740 (<d->ltd_rw_sem){++++}-{4:4}, at: lod_initialize_objects+0x503/0xba0
but task is already holding lock:
ffff888260077538 (&lod_obj->ldo_layout_mutex){+.+.}-{4:4}, at: lod_striping_load+0x147/0x530
...
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(&lod_obj->ldo_layout_mutex);
lock(<d->ltd_qos.lq_rw_sem);
lock(&lod_obj->ldo_layout_mutex);
rlock(<d->ltd_rw_sem);
*** DEADLOCK ***
...
dump_stack_lvl+0x54/0x70
print_circular_bug+0x2e8/0x300
check_noncircular+0x12e/0x150
__lock_acquire+0x1447/0x2830
? __lock_acquire+0x5d3/0x2830
? __kmalloc_noprof+0x1a1/0x640
? lock_acquire+0xd5/0x290
? lod_initialize_objects+0x503/0xba0
lock_acquire+0xd5/0x290
? lod_initialize_objects+0x503/0xba0
? lock_is_held_type+0xc7/0x120
down_read+0x42/0x160
? lod_initialize_objects+0x503/0xba0
lod_initialize_objects+0x503/0xba0
lod_parse_striping+0x8e5/0x10a0
? lod_get_ea+0x17a/0x350
lod_striping_load+0x20a/0x530
lod_declare_destroy+0xd8/0x670
? lod_declare_attr_set+0xca/0x660
? lod_declare_attr_set+0xca/0x660
mdd_declare_finish_unlink+0x62/0x160
mdd_declare_rename+0x49f/0x4f0
mdd_rename+0x98e/0x1a40
? __mutex_lock+0x283/0xd80
mdt_reint_rename+0x1fda/0x2f60
mdt_reint_rec+0xa2/0x200
mdt_reint_internal+0x605/0x880
mdt_reint+0xaf/0x110
tgt_request_handle+0x1297/0x1990
? obd_export_timed_fini+0xa2/0xb0
ptlrpc_main+0x2b7d/0x3ac0
? lockdep_hardirqs_on+0x7a/0x110
? __pfx_ptlrpc_main+0x10/0x10
kthread+0x11b/0x140
? __pfx_kthread+0x10/0x10
ret_from_fork+0x1a5/0x370
? __pfx_kthread+0x10/0x10
ret_from_fork_asm+0x1a/0x30
Change-Id: I21e38a0b6fe7cda0c0c0566178d3137c792a5fc7
Signed-off-by: Timothy Day <timday@thelustrecollective.com>
58003
master
J !B ✓T ✗1R -1/2−
LU-18652 tests: no compression with zfs create / zpool setup
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
rocky8
S +9 −11
94d
LU-18652 tests: no compression with zfs create / zpool setup
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
rocky8
S +9 −11
94d
needs rebase — checkpatch: cannot be cherry-picked
enforced failed: custom-1001
janitor run: 1 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
build #112064 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Brian Behlendorf
patchsets:
PS1 02-07
PS2 02-07
PS3 02-24
PS4 03-20
PS5 03-28
owner James Simmons · uploader James Simmons · PS5 uploaded 585d ago · NEW · open in Gerrit ↗
commit message
LU-18652 tests: no compression with zfs create / zpool setup Several of the conf-sanity test are disabled due to ZFS by default using compression. Update all the zpool and zcreate calls to turn off compression by default. With this change we can re-enable several test. Test-Parameters: trivial fstype=zfs testlist=conf-sanity Change-Id: I00751a6a3e7c925e8d89c8697fb8e8705d46c8bf Signed-off-by: James Simmons <jsimmons@infradead.org>
65426
master
J ✓B ✓T ✓R -1/2−
LU-20154 ldiskfs: fix credit calculation for xattr
reviewing Alexey Lyashkov · PS9→PS12 since your -1 — your objection was dropped
18 unresolved
XL +1330 −87
99d
LU-20154 ldiskfs: fix credit calculation for xattr
reviewing Alexey Lyashkov · PS9→PS12 since your -1 — your objection was dropped
18 unresolved
XL +1330 −87
99d
9 optional test failure(s) — informational
build #127257 SUCCESS · tests all Maloo sessions
reviews:
Alex Zhuravlev -1
no vote yet: Qian Yingjin, Alexander Zarochentsev, Andrew Perepechko, Oleg Drokin
patchsets:
PS8 04-22
PS9 04-24
PS10 05-31
PS11 07-07 Jian Yu
PS12 07-07 Jian Yu
+7 earlier
PS1 04-20 PS2 04-20 Janitor Bot PS3 04-21 PS4 04-21 Janitor Bot PS5 04-21 PS6 04-21 Janitor Bot PS7 04-22your previous vote: -1 on PS9 (2026-05-29 01:06) — now at PS12
threads: 18 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — ldiskfs/xattr.c:
Misc Code Checks Robot (Gatekeeper helper)
ldiskfs/xattr.c: warning: sparse:no newline at end of file
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — ldiskfs/xattr.c:
Misc Code Checks Robot (Gatekeeper helper)
ldiskfs/xattr.c: warning: sparse:no newline at end of file
reply Gerrit AI review for Lustre COMMIT_MSG:9 — The body only describes the ldiskfs credit reuse. Several hunks aren't accounted for:
Gerrit AI review for Lustre
The body only describes the ldiskfs credit reuse. Several hunks aren't accounted for: - `lnet/libcfs/tracefile.c` drops `static` from `cfs_trace_data` - nothing else in the patch touches libcfs. Is this a debugging leftover that should be dropped? - `osd_trans_dump_creds()` changes from `struct thandle *` to `struct osd_thandle *`, touching four call sites. That's a standalone cleanup. - The ldiskfs patches add `EXPORT_SYMBOL(ext4_xattr_ibody_get)` alongside the one that is actually needed. - `osd_declare_attr_set()` stops declaring `OSD_OT_XATTR_SET` unconditionally and gates it on the LMA flags. That is a behaviour change worth a sentence of its own. Also a few wording slips: "old code don't able to account" -> "the old code cannot account", "lets reuse" -> "let's reuse".
reply Gerrit AI review for Lustre COMMIT_MSG:12 — (typo) The quoted subject doesn't match the referenced commit. `git log -1 --format=%s 278fa1fb23` gives:
Gerrit AI review for Lustre
(typo) The quoted subject doesn't match the referenced commit. `git log -1 --format=%s 278fa1fb23` gives:
LU-12652 ldiskfs: disable credits check in 4.18
The leading `35750: ` is the Gerrit change number, not part of the subject.
reply Alexey Lyashkov patchset comment — I checked again with 5.14.0-570.62.1.el9_6.x86_64 and 5.14.0-611.35.1.el9_7.x86_64.
Oleg Drokin
I manually reverted rhel9.6/9.7 series so it points back at 5.14 patch again and the build is restored so I believe this patch is just broken.
Alexey Lyashkov
It looks like RHEL9.6/9.7 kernel have a changes in ext4 version. sometimes it have ext4/crypto.c - sometimes not. I have tested with lastes 9.6/9.7 version but our code it looks not a last.
Alexey Lyashkov
I checked again with 5.14.0-570.62.1.el9_6.x86_64 and 5.14.0-611.35.1.el9_7.x86_64. It looks you needs to update a kernel versions.
reply Alex Zhuravlev ext4-xattr-disable-credits-check.patch:36 — this is
Alex Zhuravlev
ext4 never sets few EAs in a single transaction AFAIU. so it's unlikely this kind of change can make into vanilla kernel.
Alexey Lyashkov
sure. it's sets. example of this in the patch. You lost it ?
Alex Zhuravlev
sorry? how many EAs an user can set using clean ext4 in a single transaction?
Alex Zhuravlev
this is
reply Gerrit AI review for Lustre ext4-xattr-disable-credits-check.patch:233 — (defect) This `Index:` header has no `---`/`+++` lines and no hunks - the crypto.c change is missing from this file (the linux-6.12 copy has
Gerrit AI review for Lustre
(defect) This `Index:` header has no `---`/`+++` lines and no hunks - the crypto.c change is missing from this file (the linux-6.12 copy has it). This file also never patches `fs/ext4/super.c`.
`ext4_set_context()` lives in `fs/ext4/crypto.c` on 5.16+ and in `fs/ext4/super.c` before that, and in both it calls
ext4_xattr_set_credits(inode, len, false, &credits)
while the xattr.h hunk above changes the prototype to 6 arguments. `ldiskfs/Makefile.in` copies every `@EXT4_SRC_DIR@/*.c` for patching and only filters `crypto.c` out of the object list when `CONFIG_FS_ENCRYPTION` is unset, so with encryption enabled this is `error: too few arguments to function 'ldiskfs_xattr_set_credits'`.
That breaks every series still pointing at this file - rhel9.1 through 9.5, sles15sp4/sp5, oe2203, the 5.15/5.19 ubuntu20 series, ubuntu24 -45/-100/-106, ubuntu26, and all of 6.1/6.6/6.7/6.10/6.11/6.12/6.18/7.0-ml.
This is the same breakage that was reported earlier on rhel9.6/9.7; switching those two series to the linux-6.12 copy moved the failure rather than fixing it.
reply Gerrit AI review for Lustre ext4-xattr-disable-credits-check.patch:134 — (minor) `ext4_xattr_ibody_get` doesn't seem to have any caller outside ldiskfs - grepping the tree for `ldiskfs_xattr_ibody_get` finds nothi
Gerrit AI review for Lustre
(minor) `ext4_xattr_ibody_get` doesn't seem to have any caller outside ldiskfs - grepping the tree for `ldiskfs_xattr_ibody_get` finds nothing. Is this export needed, or left over from an earlier version?
reply Oleg Drokin ldiskfs-5.14-rhel9.6.series:34 — does not look like it actually applies to rhel9.6?
Oleg Drokin
does not look like it actually applies to rhel9.6?
reply Oleg Drokin ldiskfs-5.14-rhel9.7.series:34 — I wonder if this also works?
Oleg Drokin
I wonder if this also works?
reply Gerrit AI review for Lustre ldiskfs-6.8.0-90-ubuntu24.series:32 — (defect) Only `6.8.0-90` was moved to the linux-6.12 copy. `ldiskfs-6.8.0-45-ubuntu24.series`, `ldiskfs-6.8.0-100-ubuntu24.series` and `ldis
Gerrit AI review for Lustre
(defect) Only `6.8.0-90` was moved to the linux-6.12 copy. `ldiskfs-6.8.0-45-ubuntu24.series`, `ldiskfs-6.8.0-100-ubuntu24.series` and `ldiskfs-6.8.0-106-ubuntu24.series` still reference `linux-5.14/ext4-xattr-disable-credits-check.patch`, and those kernels have `fs/ext4/crypto.c`. Same for the mainline series (6.6/6.12/6.18/7.0-ml) and 7.0.0-14-ubuntu26. Should the remaining series be switched too, or should the linux-5.14 copy be completed instead?
reply Misc Code Checks Robot (Gatekeeper helper) tracefile.c:36 — warning: sparse:symbol 'cfs_trace_data' was not declared. Should it be static?
Misc Code Checks Robot (Gatekeeper helper)
warning: sparse:symbol 'cfs_trace_data' was not declared. Should it be static?
owner Alexey Lyashkov · uploader Jian Yu · PS12 uploaded 120d ago · NEW · open in Gerrit ↗
commit message
LU-20154 ldiskfs: fix credit calculation for xattr
old code don't able to account an EA inode credits,
lets reuse an ldiskfs code to avoid this.
Fixes: 278fa1fb23 ("35750: LU-12652 ldiskfs: disable credits check in 4.18")
HPe-bug-id: LUS-12937
Signed-off-by: Alexey Lyashkov <alexey.lyashkov@hpe.com>
Change-Id: Id7eca1783dd4f6848f8d235b6159b8d34eb398db
66875
master
J –B ✓T ✓R +1/2
LU-20418 build: Move lnet common checks to ksym
carrying Shaun Tancheff · 4 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
4 unresolved
L +96 −179
99d
LU-20418 build: Move lnet common checks to ksym
carrying Shaun Tancheff · 4 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
4 unresolved
L +96 −179
99d
4 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
no vote yet from Andreas Dilger, Timothy Day
reviews:
James Simmons +1
no vote yet: Andreas Dilger, Timothy Day
patchsets:
PS1 06-26
PS2 06-26
PS3 07-09 James Simmons
PS4 07-09 James Simmons
your previous vote: +1 on PS2 (2026-06-28 14:03) — now at PS4
threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre HAVE_IBDEV_TO_NODE.ksym:9 — (minor) This one is not a pure move. The old check sat inside the `--enable-efa` block and ran with EXTRA_CHECK_INCLUDE set, so with `--with
Gerrit AI review for Lustre
(minor) This one is not a pure move. The old check sat inside the `--enable-efa` block and ran with EXTRA_CHECK_INCLUDE set, so with `--with-o2ib=<MOFED>` it resolved `<rdma/ib_verbs.h>` out of the external OFED tree; the ksym always reads the in-kernel header, and it now runs unconditionally. The new answer looks like the correct one for efalnd, since lnet/klnds/efalnd/Makefile only adds `-I $(EFA_INCLUDE_PATH)` and not the OFED includes. Since it changes what gets detected on MOFED builds, worth a line in the commit message rather than listing it as a plain move.
reply Gerrit AI review for Lustre HAVE_IN_DEV_FOR_EACH_IFA_RTNL.ksym:7 — (minor) The comment being dropped recorded two things this file doesn't: that 4.18.0-193.el8 carries the backport, and why the _rtnl variant
Gerrit AI review for Lustre
(minor) The comment being dropped recorded two things this file doesn't: that 4.18.0-193.el8 carries the backport, and why the _rtnl variant is used instead of _rcu (the current locking is rtnl). ksymfind() has an `extra` field for exactly this kind of note, so the rationale could be carried over.
reply Gerrit AI review for Lustre HAVE_STRUCT_SOCKADDR_UNSIZED.ksym:11 — (suggestion) The test being replaced compiled `kernel_bind(NULL, (struct sockaddr_unsized *)0, 0)` under -Werror, so it proved the prototype
Gerrit AI review for Lustre
(suggestion) The test being replaced compiled `kernel_bind(NULL, (struct sockaddr_unsized *)0, 0)` under -Werror, so it proved the prototype that lnet_sock_bind()/lnet_sock_connect() and gss_svc_upcall.c actually depend on. Grepping for the struct definition only proves the type exists. Upstream split those apart: bf33247a90d3e adds the struct to linux/socket.h, and the `kernel_bind()`/`kernel_connect()` conversions land in later commits (0e50474fa514, 85cb0757d7e1). On a tree carrying only the struct, HAVE_STRUCT_SOCKADDR_UNSIZED is defined, the `sockaddr_unsized` -> `sockaddr` fallback is skipped, and the casts in lnet/lnet/lib-socket.c hit an incompatible pointer type. Would matching the converted prototype in include/linux/net.h be a closer equivalent?
reply Gerrit AI review for Lustre lustre-lnet.m4:946 — (style) Not a bug, but collapsing the double space before `=` in the GNILND/KFILND conditionals has nothing to do with moving the lnet check
Gerrit AI review for Lustre
(style) Not a bug, but collapsing the double space before `=` in the GNILND/KFILND conditionals has nothing to do with moving the lnet checks to ksym, and the commit message doesn't mention it. Drop it or split it out?
owner Shaun Tancheff · uploader James Simmons · PS4 uploaded 117d ago · NEW · open in Gerrit ↗
commit message
LU-20418 build: Move lnet common checks to ksym Move checks for: HAVE_IBDEV_TO_NODE HAVE_IN_DEV_FOR_EACH_IFA_RTNL HAVE_SOCK_INUSE_ADD HAVE_SOCK_NOT_OWNED_BY_ME HAVE_NETDEV_LOCK_OPS HAVE_SENDPAGE_OK HAVE_STRUCT_SOCKADDR_UNSIZED sockaddr_unsized Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: Iaf1759e7d88480254983b2d79c41f12d43974ef6
65397
master
J !B ✗T –R -1/2−
LU-0000 obdclass: rollback testing
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 116d
S +2 −17
116d
LU-0000 obdclass: rollback testing
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 116d
S +2 −17
116d
needs rebase — checkpatch: cannot be cherry-picked
build failure (#124346)
janitor run: 16 failing config(s), none unique to this patch — janitor results
build #124346 FAILURE
patchsets:
PS1 04-17
PS2 04-18
PS3 04-19
PS4 04-20
PS5 04-24
owner James Simmons · uploader James Simmons · PS5 uploaded 193d ago · NEW · open in Gerrit ↗
commit message
LU-0000 obdclass: rollback testing find breakage Test-Parameters: trivial Change-Id: I93c1ca71984efd3b66e56d549141c78883abebc6 Signed-off-by: James Simmons <jsimmons@infradead.org>
55821
master
J !B ✓T ✗8R 0/2
LU-12607 osd-zfs: use proper locking for dnodes
mine enforced failed: review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-zfs
stalled 123d
S +13 −15
123d
LU-12607 osd-zfs: use proper locking for dnodes
mine enforced failed: review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-zfs
stalled 123d
S +13 −15
123d
janitor run: 2 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-zfs-part-1 failed 2× | RHEL 8.9/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
| review-dne-zfs-part-2 failed 2× | RHEL 8.9/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
| review-dne-zfs-part-3 failed 2× | RHEL 8.9/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
| review-dne-zfs-part-4 failed 2× | RHEL 8.9/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
| review-dne-zfs-part-5 failed 2× | RHEL 8.9/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
| review-dne-zfs-part-6 failed 2× | RHEL 8.9/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
| review-dne-zfs-part-7 failed 2× | RHEL 8.9/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
| review-zfs failed 2× | RHEL 8.9/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
20 optional test failure(s) — informational
build #106283 SUCCESS · tests all Maloo sessions
no vote yet: Brian Behlendorf, Timothy Day
owner James Simmons · uploader James Simmons · PS1 uploaded 836d ago · NEW · open in Gerrit ↗
commit message
LU-12607 osd-zfs: use proper locking for dnodes Currently lustre uses the DB_DNODE_[ENTER|EXIT] macros which is incorrect as pointed out by the ZFS developers. OpenZFS ticket https://github.com/openzfs/zfs/pull/9027 exported the proper dnode management functions so move Lustre to these new functions. Change-Id: If1165c4db149a1eb46bf00df9b48589d90acb7c6 Signed-off-by: James Simmons <jsimmons@infradead.org>
63209
master
J –B ✓T ✓R -1/2−
LU-13903 build: allow building for a kernel with native client
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 134d
1 unresolved
S +21 −11
134d
LU-13903 build: allow building for a kernel with native client
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 134d
1 unresolved
S +21 −11
134d
needs rebase — checkpatch: cannot be cherry-picked
Timothy Day voted -1
1 unresolved thread(s) await your reply — last from Shaun Tancheff
no vote yet from Shaun Tancheff
build #120080 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1 · Timothy Day -1
no vote yet: Shaun Tancheff
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Shaun Tancheff patchset comment — Maybe you are asking about user space utilities? Those do now know anything about the kernel headers, they should build just like any other
Timothy Day
``` checking for /tmp/ktest-out/kernel_build.x86_64/.config... noconfigure: error: Kernel config could not be found. ``` The userland build shouldn't depend on the kernel config. I think we'd need to skip this check somehow.
Timothy Day
I think I know what's wrong: --disable-modules isn't propagated when we try to make the debian packages. There's a couple other tweaks we need as well. I can push an updated patch.
Timothy Day
The kernel really doesn't like it if you attempt to build userspace components against the Linux source tree. They recommend (https://kernelnewbies.org/KernelHeaders) either building against the installed headers (i.e. what you already have implemented) or building against a version of the headers copied from Linux. This would be equivalent to building against the openSFS headers. I think this should be supported somehow. Perhaps --disable-modules could have an argument to decided whether to use the installed headers or openSFS headers?
James Simmons
The question is which UAPI headers to test against? Some of the autoconf test for the utilities look at the UAPI headers to decided what is supported.
James Simmons
Oops. I added Shaun so we can verify. Do the autoconf test use the kernel UAPI pointed to by --with-kernel. I do agree we don't need to look at the .config for the kernel. The only complex case is the dummy fscrypt kernel option that changed.
Shaun Tancheff
> Do the autoconf test use the kernel UAPI pointed to by --with-kernel Yes. The test builds work the same as any kernel module build. You can see generated examples with: $ export PARALLEL_BUILD_OPT=debug $ ./configure ...
Shaun Tancheff
Maybe you are asking about user space utilities? Those do now know anything about the kernel headers, they should build just like any other user space utility looking under /usr/include and /usr/lib
owner James Simmons · uploader James Simmons · PS1 uploaded 307d ago · NEW · open in Gerrit ↗
commit message
LU-13903 build: allow building for a kernel with native client Currently we can build just the Lustre utilites on a system with a installed kernel with native Lustre client support. This doesn't work for building against a kernel tree with the native lustre client i.e ./configure --disable-modules --disable-server --with-linux=~/lustre-upstream This patch adds takes the kernel header location and adds it to the CPPFLAGS. The tools then can be built against that set of headers. Test-Parameters: trivial Change-Id: I3348f90474d0dd87da5fc8e779b71c9d6a2953df Signed-off-by: James Simmons <jsimmons@infradead.org>
24554
master
J –B ✓T ✓R +1/2−
LU-8980 libcfs: add tracepoint support for libcfs
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 141d
XL +3118 −254
141d
LU-8980 libcfs: add tracepoint support for libcfs
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 141d
XL +3118 −254
141d
needs rebase — checkpatch: cannot be cherry-picked
John Hammond voted -1
reviews:
Dmitry Eremin +1 · Gu Zheng +1 · Olaf Weber +1 · John Hammond -1
no vote yet: Jinshan Xiong, Timothy Day, Jesse Hanley, Andreas Dilger, Brian Behlendorf, Matt Ezell, Lustre Buildbot
owner James Simmons · uploader James Simmons · PS18 uploaded 3375d ago · NEW · open in Gerrit ↗
commit message
LU-8980 libcfs: add tracepoint support for libcfs Add initial trace events to the libcfs module. With this we can now collect data using the perf utility. Each traditonal lustre debug macro is turned into an unique tracepoint event. Any debugging macros moved over to trace point will now handling printing message to the console. Change-Id: I0fc6efc24fd9495fae2829990f74b1a72491baf8 Signed-off-by: James Simmons <uja.ornl@yahoo.com>
64565
master
J ✗1B ✓T ✗2R -1/2−
LU-14291 gss: seperate out the client from server code.
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
1 unique failure
stalled 159d
M +86 −44
159d
LU-14291 gss: seperate out the client from server code.
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
1 unique failure
stalled 159d
M +86 −44
159d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 1 test failure unique to this patch — sanity-flr@ldiskfs+DNE:test_70a
enforced failed: review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-flr@ldiskfs+DNE:test_70a | seen in 92 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-selinux-ssk-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-selinux-ssk-part-2 failed 4× | RHEL 8.10 / x86_64 | ran 8 tests. 3 tests failed: lustre-initialization, sanity-sec, recovery-small. | session |
5 optional test failure(s) — informational
build #124507 SUCCESS · tests all Maloo sessions
no vote yet: Sebastien Buisson
patchsets:
PS1 03-13
PS2 03-13 Janitor Bot
PS3 03-31 Janitor Bot
PS4 04-13
PS5 04-30
owner James Simmons · uploader James Simmons · PS5 uploaded 187d ago · NEW · open in Gerrit ↗
commit message
LU-14291 gss: seperate out the client from server code. The gss code is all lumped together. Lets separate the code out. Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: If249e56e27054aa8accd4754e9bddec010ff0e7a
63361
master
J ✗1B ✓T ✗0R -1/2−
LU-19323 lnet: add IPv6 support to lnet_selftest
reviewing Serguei Smirnov · PS4→PS6 since your -1 — your objection was dropped
needs rebase
1 unique failure
stalled 177d
12 unresolved
XL +2239 −574
177d
LU-19323 lnet: add IPv6 support to lnet_selftest
reviewing Serguei Smirnov · PS4→PS6 since your -1 — your objection was dropped
needs rebase
1 unique failure
stalled 177d
12 unresolved
XL +2239 −574
177d
PS4→PS6 since your -1 — your objection was dropped
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; janitor: test failures unique to this patch; enforced tests failed
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| replay-dual@zfs+DNE:test_26 | seen in 17 other reviews |
build #122607 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Timothy Day
patchsets:
PS2 01-13 Janitor Bot
PS3 01-13
PS4 02-25
PS5 03-04
PS6 03-16
+1 earlier
PS1 01-13your previous vote: -1 on PS4 (2026-02-25 20:06) — now at PS6
threads: 8 need your reply · 3 waiting on others · 1 own notes · 0 bot
reply Andreas Dilger COMMIT_MSG:11 — (minor) this looks like an `sptlrpc` parameter. Also, version numbers never really explain what they are for. It would be better to name t
Andreas Dilger
(minor) this looks like an `sptlrpc` parameter. Also, version numbers never really explain what they are for. It would be better to name this something more clear like `lst_force_large_nid`.
reply Serguei Smirnov COMMIT_MSG:11 — srpc_force_v2 is for disabling v1 on v2 hosts. If it is not used, there's "handshaking": v2 is able to initiate a session with v1 (ipv4) or
James Simmons
Yucky. Can't we do version handshaking instead. My next patch in this area will try the hand shaking approach.
Serguei Smirnov
srpc_force_v2 is for disabling v1 on v2 hosts. If it is not used, there's "handshaking": v2 is able to initiate a session with v1 (ipv4) or v2 (both ipv6 and ipv4), v1 is able to initiate an ipv4 session to v2 and v1.
reply Andreas Dilger COMMIT_MSG:12 — Is there no mechanism that LNet (and LST) can use to automatically negotiate protocol feature support? If not, then this should be added as
Andreas Dilger
Is there no mechanism that LNet (and LST) can use to automatically negotiate protocol feature support? If not, then this should be added as part of this compatibility-breaking change. Or do I misread this, and the `srpc_force_v2` is only used to force the new large-NID functionality on systems that don't need it?
reply Andreas Dilger COMMIT_MSG:15 — (defect) this should have `env=FORCE_LARGE_NID=true` to run IPv6 sessions?
Andreas Dilger
(defect) this should have `env=FORCE_LARGE_NID=true` to run IPv6 sessions?
reply Andreas Dilger lnetst.h:72 — (minor) variable-sized `lnet_processid` should go after `nde_state`
Andreas Dilger
(minor) variable-sized `lnet_processid` should go after `nde_state`
reply Andreas Dilger lnetst.h:123 — (minor) These should all be replaced with fixed-size types (e.g. `__u32`)
Andreas Dilger
(minor) These should all be replaced with fixed-size types (e.g. `__u32`)
reply Andreas Dilger lnetst.h:301 — (minor) should remove pointers from UAPI structs, especially in the middle
Andreas Dilger
(minor) should remove pointers from UAPI structs, especially in the middle
note James Simmons conrpc.c:39 — I thought I ported the SID handling to Netlink.
James Simmons
I thought I ported the SID handling to Netlink.
reply Andreas Dilger module.c:73 — ??
Andreas Dilger
??
owner Serguei Smirnov · uploader Serguei Smirnov · PS6 uploaded 232d ago · NEW · open in Gerrit ↗
commit message
LU-19323 lnet: add IPv6 support to lnet_selftest Adds IPv6 support to lnet_selftest. Is backwardly-compatible to earlier versions of selftest. Adds module parameter srpc_force_v2 which can optionally force large-NID (v2) protocol on wire (breaks v1-compatibility) Test-Parameters: fortestonly Test-Parameters: trivial testlist=sanity-lnet Signed-off-by: Serguei Smirnov <ssmirnov@whamcloud.com> Change-Id: I3879dc88f0c89ebbaa21adb9faca6782a855ee3a
53005
master
J !B ✓T ✗3R -1/2−
LU-17266 mdt: purge objects via procfs
reviewing Alex Zhuravlev · PS57→PS62 since your -1 — your objection was dropped
needs rebase
stalled 199d
3 unresolved
M +124 −3
199d
LU-17266 mdt: purge objects via procfs
reviewing Alex Zhuravlev · PS57→PS62 since your -1 — your objection was dropped
needs rebase
stalled 199d
3 unresolved
M +124 −3
199d
PS57→PS62 since your -1 — your objection was dropped
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
janitor run: 1 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-5 | RHEL 8.10 / x86_64 | ran 7 tests. 1 tests failed: lustre-rsync-test. | session |
| review-dne-zfs-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 2 tests failed: sanity-sec, sanity-lnet. | session |
5 optional test failure(s) — informational
build #117204 SUCCESS · tests all Maloo sessions
no vote yet: Qian Yingjin, Andreas Dilger
patchsets:
PS58 09-05
PS59 09-10
PS60 09-15
PS61 09-19
PS62 10-07
+57 earlier
PS1 11-06 PS2 11-07 PS3 11-07 PS4 11-07 PS5 11-07 PS6 11-07 PS7 11-07 PS8 11-08 PS9 11-08 PS10 11-14 PS11 11-17 PS12 01-06 PS13 01-10 PS14 01-19 PS15 01-22 PS16 01-24 PS17 01-24 PS18 02-27 PS19 02-27 PS20 02-27 PS21 03-11 PS22 03-12 PS23 03-22 PS24 04-09 PS25 04-12 PS26 04-15 PS27 04-25 PS28 04-30 PS29 06-21 PS30 07-27 PS31 08-11 PS32 08-22 PS33 09-09 PS34 09-09 PS35 10-09 PS36 10-20 PS37 10-30 PS38 11-20 PS39 11-29 PS40 12-04 PS41 12-11 PS42 12-19 PS43 12-24 PS44 12-25 PS45 01-23 PS46 02-14 PS47 03-03 PS48 03-13 PS49 04-11 PS50 04-18 PS51 04-28 PS52 05-11 PS53 05-22 PS54 05-22 PS55 05-22 PS56 06-12 PS57 06-16your previous vote: -1 on PS57 (2025-06-16 14:25) — now at PS62
threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger lproc_llite.c:408 — (minor) Most parameters allow other values to be written to clear it, like "0", and not just "clear".
Andreas Dilger
(minor) Most parameters allow other values to be written to clear it, like "0", and not just "clear".
reply Andreas Dilger mdt_lproc.c:491 — same
Andreas Dilger
same
reply Andreas Dilger lproc_ofd.c:897 — ...
Andreas Dilger
...
owner Alex Zhuravlev · uploader Alex Zhuravlev · PS62 uploaded 393d ago · NEW · open in Gerrit ↗
commit message
LU-17266 mdt: purge objects via procfs sometimes it can be useful for testing to drop/reload lu objects. lctl set_param mdt.*.site_stats=clear lctl set_param ofd.*.site_stats=clear it should be possible to replace total system cache drop (echo 3 > /proc/sys/vm/drop_caches) with this lustre-only version. Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com> Change-Id: I9055be3b53d0af22758eac0acac8771e40c371f7
33259
master
J !B ✓T ✗1R 0/2
LU-9868 llite: remove directory-specific code from ll_find_alias()
mine enforced failed: review-dne-part-5
upstream
stalled 207d
S +9 −18
207d
LU-9868 llite: remove directory-specific code from ll_find_alias()
mine enforced failed: review-dne-part-5
upstream
stalled 207d
S +9 −18
207d
janitor run: 4 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-5 | RHEL 9.5 / x86_64 | ran 5 tests. 1 tests failed: sanityn. | session |
build #123698 SUCCESS · tests all Maloo sessions
no vote yet: Neil Brown, Andreas Dilger
patchsets:
PS4 02-27
PS5 02-27
PS6 10-14
PS7 04-09
PS8 04-10
+2 earlier
PS2 04-01 PS3 06-20owner James Simmons · uploader James Simmons · PS8 uploaded 208d ago · NEW · open in Gerrit ↗
commit message
LU-9868 llite: remove directory-specific code from ll_find_alias() Now that ll_find_alias() is never called for directories, we can remove code that only applies to directories. Linux-commit: ac63774689265d50bc1d83ac9b7889ac7e645b5a Signed-off-by: Mr. NeilBrown <neil@brown.name> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I54f726eac648374cd631319095cfdab8b1f5dfff
44846
master
J ✗4B ✓T ✗6R -1/2−
LU-11501 llite: use d_real for directories in fid cache.
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
4 unique failures
stalled 208d
1 unresolved
M +105 −28
208d
LU-11501 llite: use d_real for directories in fid cache.
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
4 unique failures
stalled 208d
1 unresolved
M +105 −28
208d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 4 test failures unique to this patch — runtests-ssk@ldiskfs+SharedKey:test_1, runtests-ssk@ldiskfs+SharedKey:test_cleanup, runtests@zfs:test_1 +1 more
enforced failed: review-dne-part-4, review-dne-selinux-ssk-part-1, review-dne-zfs-part-4, review-ldiskfs, review-ldiskfs-arm
Neil Brown voted -1
1 thread(s) waiting on others
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| runtests-ssk@ldiskfs+SharedKey:test_1 | seen in 3 other reviews |
| runtests-ssk@ldiskfs+SharedKey:test_cleanup | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| runtests@zfs:test_1 | seen in 3 other reviews |
| runtests@zfs:test_cleanup | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-4 | RHEL 8.8/x86_64 | ran 9 tests. 1 tests failed: sanity-hsm. | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.8/x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-4 | RHEL 8.8/x86_64 | ran 9 tests. 1 tests failed: sanity-hsm. | session |
| review-ldiskfs crashed | RHEL 8.8/x86_64, RHEL 9.2/x86_64 | ran 7 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs crashed | RHEL 8.8/x86_64 | ran 7 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs-arm crashed | RHEL 8.7/aarch64, RHEL 8.8/x86_64 | ran 8 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
4 optional test failure(s) — informational
build #96374 SUCCESS · tests all Maloo sessions
reviews:
Neil Brown -1 · Andreas Dilger +1
no vote yet: Qian Yingjin
patchsets:
PS14 11-14
PS15 04-01
PS16 04-21
PS17 06-20
PS18 07-20
+13 earlier
PS1 09-05 PS2 09-06 PS3 09-07 PS4 09-07 PS5 09-07 PS6 09-07 PS7 09-08 PS8 09-10 PS9 09-22 PS10 09-27 PS11 10-07 PS12 10-17 PS13 10-19threads: 0 need your reply · 1 waiting on others · 0 own notes · 0 bot
owner James Simmons · uploader James Simmons · PS18 uploaded 1203d ago · NEW · open in Gerrit ↗
commit message
LU-11501 llite: use d_real for directories in fid cache. Lustre has a special directory called .lustre which contains a collection of directories whose name matches a fid. This is used in a similar way as open by fhandle but we use this functionality since it allows opens by normal users. For opening a file by proxy with the .lustre/fid/"FID" directory we use a dcache alias. While this is valid Lustre does the same thing for open a directory with this .lustre FID which means we have multiple hard links to directories which is forbidden. More modern kernels report this as an error and we risk a future kernel pruning such dentry entries. The solution is to look at how overlayfs does this since .lustre is sort of a pseudo file system. We can use d_real() to lookup the real dentry that maps to the special .lustre/fid/"FID". Change-Id: I02d8a54465d685430d9290c24faf1ef6bfd6a876 Signed-off-by: James Simmons <jsimmons@infradead.org>
33261
master
J ✗2B ✓T ✗9R 0/2
LU-9868 llite: refine ll_find_alias based on d_exact_alias
mine janitor: 2 test failures unique to this patch — sanity3@zfs:test_233a, sanityn@zfs:test_108a
2 unique failures
upstream
stalled 208d
S +20 −10
208d
LU-9868 llite: refine ll_find_alias based on d_exact_alias
mine janitor: 2 test failures unique to this patch — sanity3@zfs:test_233a, sanityn@zfs:test_108a
2 unique failures
upstream
stalled 208d
S +20 −10
208d
janitor: 2 test failures unique to this patch — sanity3@zfs:test_233a, sanityn@zfs:test_108a
enforced failed: review-dne-part-1, review-dne-part-2, review-dne-selinux-ssk-part-1, review-dne-zfs-part-1, review-ldiskfs, review-ldiskfs-ubuntu
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity3@zfs:test_233a | seen in 3 other reviews |
| sanityn@zfs:test_108a | seen in 11 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-part-1 | RHEL 9.5 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-part-2 | RHEL 9.5 / x86_64 | ran 11 tests. 1 tests failed: sanity-lfsck. | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 9.5 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, SLES 15.5 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 24.04 / x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
build #123622 SUCCESS · tests all Maloo sessions
no vote yet: Neil Brown
patchsets:
PS3 06-20
PS4 02-27
PS5 02-27
PS6 10-14
PS7 04-09
+1 earlier
PS2 04-01owner James Simmons · uploader James Simmons · PS7 uploaded 208d ago · NEW · open in Gerrit ↗
commit message
LU-9868 llite: refine ll_find_alias based on d_exact_alias The task of ll_find_alias() is now very similar to d_exact_alias(). We cannot use that function directly, but we can copy much of the structure so that the similarities and differences are more obvious. Examining d_exact_alias() shows that the d_lock spinlock does not need to be held in ll_find_alias as much as it currently is. Linux-commit: 8016ab9ebbda3dee637ac66b9e0f7a74ef6fe9e6 Signed-off-by: Mr. NeilBrown <neilb@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I52ba4bc35cb84f523551816df7df2d4d0b1573b7
33260
master
J !B ✓T ✗8R 0/2
LU-9868 llite: simplify ll_find_alias()
mine enforced failed: review-dne-part-1, review-dne-selinux-ssk-part-1, review-dne-zfs-part-1, review-ldiskfs, review-ldiskfs-ubuntu
upstream
stalled 208d
S +8 −15
208d
LU-9868 llite: simplify ll_find_alias()
mine enforced failed: review-dne-part-1, review-dne-selinux-ssk-part-1, review-dne-zfs-part-1, review-ldiskfs, review-ldiskfs-ubuntu
upstream
stalled 208d
S +8 −15
208d
janitor run: 23 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-part-1 | RHEL 9.5 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 9.5 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, SLES 15.5 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 24.04 / x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
build #123621 SUCCESS · tests all Maloo sessions
no vote yet: Neil Brown
patchsets:
PS3 06-20
PS4 02-27
PS5 02-27
PS6 10-14
PS7 04-09
+1 earlier
PS2 04-01owner James Simmons · uploader James Simmons · PS7 uploaded 208d ago · NEW · open in Gerrit ↗
commit message
LU-9868 llite: simplify ll_find_alias() Now that ll_find_alias is only searching for one type of dentry, we can return as soon as we find it. This allows substantial simplification, and brings the bonus that we don't need to take the d_lock again just to increment the ref-count. We can increment it immediately that the dentry is found. Linux-commit: 7e08e9a8942dfc38693edf2e389cde620e918356 Signed-off-by: Mr. NeilBrown <neilb@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I18d6130c27186e1a7c9254e50b4d1242b7ada383
18012
master
J –B ✓T ✗0R 0/2
LU-7672 tests: Update Kerberos set up script
carrying James Nunez · Maloo voted -1 — tests failed (details on the change)
stalled 211d
L +154 −115
211d
LU-7672 tests: Update Kerberos set up script
carrying James Nunez · Maloo voted -1 — tests failed (details on the change)
stalled 211d
L +154 −115
211d
no vote yet: Sebastien Buisson, Nathan Lavender, Chris Hanna
owner James Nunez · uploader James Simmons · PS4 uploaded 3442d ago · NEW · open in Gerrit ↗
commit message
LU-7672 tests: Update Kerberos set up script Update and clean up the Kerberos set up script setup_kerberos.sh. Test-Parameter: forbuildonly Signed-off-by: James Nunez <james.a.nunez@intel.com> Change-Id: Iae7b1a7a524759c524bc0a69f4755a8c6eed3f9a
62479
master
J !B ✓T ✗10R -1/2−
LU-19298 lod: use Xarray instead of static arrays for comp entires
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 217d
1 unresolved
L +442 −423
217d
LU-19298 lod: use Xarray instead of static arrays for comp entires
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 217d
1 unresolved
L +442 −423
217d
needs rebase — checkpatch: cannot be cherry-picked
enforced failed: review-dne-part-2, review-dne-part-4, review-dne-part-7, review-dne-zfs-part-2, review-dne-zfs-part-4, review-dne-zfs-part-7, review-zfs
1 unresolved thread(s) await your reply — last from Andreas Dilger
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 crashed | RHEL 9.5 / x86_64 | ran 13 tests. 2 tests failed: sanity-pfl, sanity-lfsck. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-2 crashed | RHEL 8.10 / x86_64 | ran 13 tests. 2 tests failed: sanity-pfl, sanity-lfsck. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-4 crashed | RHEL 8.10 / x86_64 | ran 11 tests. 2 tests failed: sanity-quota, sanity-flr. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-4 crashed | RHEL 9.5 / x86_64 | ran 11 tests. 2 tests failed: sanity-quota, sanity-flr. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-7 crashed | RHEL 8.10 / x86_64 | ran 7 tests. 1 tests failed: sanity-pcc. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-7 crashed | RHEL 9.5 / x86_64 | ran 7 tests. 1 tests failed: sanity-pcc. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-2 crashed | RHEL 8.10 / x86_64 | ran 13 tests. 2 tests failed: sanity-pfl, sanity-lfsck. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-4 | RHEL 8.10 / x86_64 | ran 11 tests. 1 tests failed: sanity-flr. | session |
| review-dne-zfs-part-7 crashed | RHEL 8.10 / x86_64 | ran 7 tests. 1 tests failed: sanity-pcc. %% THIS TEST SESSION CRASHED %% | session |
| review-zfs | RHEL 8.10 / x86_64 | ran 10 tests. 1 tests failed: sanity-flr. | session |
build #119712 SUCCESS · tests all Maloo sessions
no vote yet: Ronnie Sahlberg, Qian Yingjin, Alexey Lyashkov, Andreas Dilger, Zhenyu Xu, Patrick Farrell
patchsets:
PS1 11-10
PS2 11-16
PS3 12-12
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger patchset comment — James, file layout join/migrate/mirror happen _maybe_ only once or twice in the lifetime of a file, so it doesn't make sense to add a comple
Patrick Farrell
James, the lack of ability to remove other components than the last one is a deliberate choice to prevent the creation of incomplete layouts. There is nothing about the current approach that can’t support removing other components, it’s just a sanity restriction.
James Simmons
Think about file join work with 2 mirrors each with 3 components and another file with also 2 mirrors also with 3 components. Its going to be merged right. The current approach would require allocating a new larger array. Then copying items from file 1 static array and then copying items from file 2 static array. Then deleting the old array. Some slicing is needed due the 2 mirrors. Compared to Xarray its erasing the reference to pointers in file 2 xarray and adding a reference of that same pointer into file 1 Xarray. Do you feel the former approach is way better? Honestly the biggest impact is for the file join project so the really important opinion I need is from Alexey. Alexey what do you think?
Patrick Farrell
Yes, I do - it's very simple. You allocate a larger array and write the layout to it. Very simple. It requires no complex data structures and no locking. The idea that we should have references across two xarrays is very concerning - that means the layout components need reference counting then, I guess? They do not today. There is no particular impact on file join - it is just as easy to do file join via layout copy as any other operation.
Andreas Dilger
James, file layout join/migrate/mirror happen _maybe_ only once or twice in the lifetime of a file, so it doesn't make sense to add a complex data structure and overhead to optimize a 0.00001% usage case. That is doubly a problem if it means many small allocations and/or additional locking needs to be added to handle this extremely rare use case.
owner James Simmons · uploader James Simmons · PS3 uploaded 326d ago · NEW · open in Gerrit ↗
commit message
LU-19298 lod: use Xarray instead of static arrays for comp entires The LOD layer implements very large static arrays to manage the component entries for each layout. This works well for the case that all the components are for block I/O that are expected to be aligned to each other in a specific order. In such cases the API works to add or delete components at the end of such layouts. With the upcoming introducting of parity and foreign components the rules change in that you can delete or add a component located in the middle of the layout. This would be very complicated when using static arrays. To make life easier for upcoming projects we move away from static arrays to using Xarrays. We no longer requires creating a whole new array and copying components over. Instead we just insert or delete components into the Xarray. This current implementation just does the change from static arrary to Xarray without truly introducing gaps in the Xarray. This can be done in follow on patches and can be used to greatly simplify the code. For example since "gaps" are allowed in the Xarray we can place components in the Xarray using the mirror id as apart of the index which mirrors the component ID. This removes the need to manage the new mirror ranges in the Xarray. Change-Id: I67020f899ad89bfa6095c4b22f7f1b07b6de3e86 Signed-off-by: James Simmons <jsimmons@infradead.org>
60897
master
J ✗2B ✓T ✗4R -1/2−
LU-19298 lod: merge different lmm handling togther.
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
2 unique failures
stalled 218d
L +225 −300
218d
LU-19298 lod: merge different lmm handling togther.
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
2 unique failures
stalled 218d
L +225 −300
218d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 2 test failures unique to this patch — sanity-pfl@ldiskfs+DNE:test_1c, sanity-pfl@zfs:test_1c
enforced failed: review-dne-part-2, review-dne-zfs-part-2, review-ldiskfs-ubuntu
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-pfl@ldiskfs+DNE:test_1c | NEW unique failure for this branch in the last 30 days, and was seen 2 times across 1 other branches 1 reviews |
| sanity-pfl@zfs:test_1c | NEW unique failure for this branch in the last 30 days, and was seen 2 times across 1 other branches 1 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 | RHEL 8.10 / x86_64 | ran 11 tests. 1 tests failed: sanity-pfl. | session |
| review-dne-part-2 | RHEL 9.5 / x86_64 | ran 11 tests. 1 tests failed: sanity-pfl. | session |
| review-dne-zfs-part-2 | RHEL 8.10 / x86_64 | ran 11 tests. 1 tests failed: sanity-pfl. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
4 optional test failure(s) — informational
build #116154 SUCCESS · tests all Maloo sessions
no vote yet: Alexey Lyashkov, Andreas Dilger, Patrick Farrell
patchsets:
PS2 08-27
PS3 08-28
PS4 08-31
PS5 08-31 Janitor Bot
PS6 08-31
+1 earlier
PS1 08-25owner James Simmons · uploader James Simmons · PS6 uploaded 429d ago · NEW · open in Gerrit ↗
commit message
LU-19298 lod: merge different lmm handling togther. For PFL handling the LOD has developed very similar code independently. Besides code duplication we end up not having consistent PFL handling. For example lod_layout_add() handling doesn't support specific OST indexes being requested by the user for the new component. We merge all the code into lod_comp_for_each_lcm(). In the future any change here will impact many code paths at the same time. For EC developement we don't need to touch any many places in the code. Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Ic2392dd84eb397e87e384d6916ccb2de04b6d083
52875
master
J ✗30B ✓T ✗11R 0/2
LU-8980 debug: redefine CDEBUG to use tracing
reviewing Timothy Day · PS1→PS7 since your -1 — your objection was dropped
30 unique failures
stalled 243d
8 unresolved
XL +643 −2491
243d
LU-8980 debug: redefine CDEBUG to use tracing
reviewing Timothy Day · PS1→PS7 since your -1 — your objection was dropped
30 unique failures
stalled 243d
8 unresolved
XL +643 −2491
243d
PS1→PS7 since your -1 — your objection was dropped
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity2@ldiskfs+DNE:test_35a | seen in 4 other reviews |
| conf-sanity2@ldiskfs+DNE:test_35b | seen in 18 other reviews |
| conf-sanity2@ldiskfs+DNE:test_37 | seen in 18 other reviews |
| conf-sanity2@ldiskfs+DNE:test_38 | seen in 16 other reviews |
| conf-sanity2@ldiskfs+DNE:test_39 | seen in 28 other reviews |
| conf-sanity2@ldiskfs+DNE:test_40 | seen in 30 other reviews |
| conf-sanity2@ldiskfs+DNE:test_41a | seen in 27 other reviews |
| conf-sanity2@zfs:test_35a | seen in 4 other reviews |
| conf-sanity2@zfs:test_35b | seen in 8 other reviews |
| conf-sanity2@zfs:test_38 | seen in 11 other reviews |
| conf-sanity2@zfs:test_39 | seen in 25 other reviews |
| conf-sanity2@zfs:test_40 | seen in 25 other reviews |
| conf-sanity2@zfs:test_41a | seen in 12 other reviews |
| recovery-small@ldiskfs+DNE:test_10a | NEW unique failure for this branch in the last 30 days, and was seen 1 times across 1 other branches 1 reviews |
| recovery-small@ldiskfs+DNE:test_24b | seen in 4 other reviews |
| recovery-small@ldiskfs+DNE:test_106 | seen in 4 other reviews |
| recovery-small@ldiskfs+DNE:test_108 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| recovery-small@zfs:test_10a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| recovery-small@zfs:test_24b | seen in 2 other reviews |
| recovery-small@zfs:test_106 | seen in 4 other reviews |
| replay-single@ldiskfs+DNE:test_65b | seen in 6 other reviews |
| replay-single@zfs:test_65b | seen in 6 other reviews |
| sanity2@ldiskfs+DNE:test_60f | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_170 | NEW unique failure for this branch in the last 30 days, and was seen 1 times across 1 other branches 1 reviews |
| sanity2@ldiskfs+DNE:test_360 | NEW unique failure for this branch in the last 30 days, and was seen 1 times across 1 other branches 1 reviews |
| sanity2@ldiskfs+DNE:test_401a | NEW unique failure for this branch in the last 30 days, and was seen 1 times across 1 other branches 1 reviews |
| sanity2@ldiskfs+DNE:test_818 | seen in 7 other reviews |
| sanity2@zfs:test_60f | seen in 1 other review |
| sanity2@zfs:test_170 | seen in 1 other review |
| sanity2@zfs:test_401a | NEW unique failure for this branch in the last 30 days, and was seen 1 times across 1 other branches 1 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 9.3/x86_64 | ran 4 tests. 1 tests failed: sanity. | session |
| review-dne-part-3 | RHEL 9.3/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. This build will be scored -1 since fortestonly was specified. | session |
| review-dne-part-5 | RHEL 9.3/x86_64 | ran 6 tests. 1 tests failed: recovery-small. | session |
| review-dne-part-6 | RHEL 9.3/x86_64 | ran 4 tests. 1 tests failed: replay-single. | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.9/x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.9/x86_64 | ran 5 tests. 1 tests failed: recovery-small. | session |
| review-ldiskfs | RHEL 8.9/x86_64, RHEL 9.3/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 9.3/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.9/x86_64, SLES 15.5/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.9/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-zfs | RHEL 8.9/x86_64 | ran 8 tests. 1 tests failed: replay-single. | session |
3 optional test failure(s) — informational
build #105198 SUCCESS · tests all Maloo sessions
no vote yet: Yang Sheng, Alexey Lyashkov, Andreas Dilger, Neil Brown
patchsets:
PS3 06-03
PS4 06-03
PS5 06-04
PS6 06-04
PS7 06-05
+2 earlier
PS1 10-28 PS2 11-01your previous vote: -1 on PS1 (2023-10-28 20:53) — now at PS7
threads: 8 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Timothy Day libcfs_debug.h:143 — I'm hoping to use the tracepoints to enable/disable subsystem logging. There's a tracepoint enabled macro I could use to restore this check.
Alexey Lyashkov
never kill a subsystem check. I will make developers work harder.
Timothy Day
I'm hoping to use the tracepoints to enable/disable subsystem logging. There's a tracepoint enabled macro I could use to restore this check.
reply Timothy Day libcfs_debug.h:179 — Yes. This is super hack-y. There's definitely a better way to do this.
Andreas Dilger
Does this add 256 bytes of stack usage to every function that calls CDEBUG()? That could be pretty bad in some call chains.
Timothy Day
Yes. This is super hack-y. There's definitely a better way to do this.
reply Timothy Day libcfs_debug.h:182 — This entire __ltrace_printk() macro sucks. I need to rewrite it entirely. I have an idea that should make this macro much better.
Alexey Lyashkov
you are really want to kill a performance? I think yes.
Timothy Day
This entire __ltrace_printk() macro sucks. I need to rewrite it entirely. I have an idea that should make this macro much better.
reply Timothy Day libcfs_debug.h:196 — I'll probably have to, since old kernels don't like '#include <linux/ratelimit_types.h>'. I was hoping that these macro would be simpler.
Andreas Dilger
There are tunable parameters for the CDEBUG rate limiting, why not use them here?
Timothy Day
I'll probably have to, since old kernels don't like '#include <linux/ratelimit_types.h>'. I was hoping that these macro would be simpler.
reply Andreas Dilger libcfs_debug.h:220 — Sorry, I was thinking this was the no-op version of the actual libcfs_debug_msg() which had been removed. Carry on.
Andreas Dilger
This will also need to be fixed.
Timothy Day
I think this is fine? This is just redefining this function to be always false is debugging is disabled.
Andreas Dilger
Sorry, I was thinking this was the no-op version of the actual libcfs_debug_msg() which had been removed. Carry on.
reply Timothy Day libcfs_debug.h:136 — Doesn't build on aarch64 and ppc. Needs to go in debug.c probably. These are pretty huge functions anyway.
Timothy Day
Doesn't build on aarch64 and ppc. Needs to go in debug.c probably. These are pretty huge functions anyway.
reply Timothy Day libcfs_debug.h:167 — Same.
Timothy Day
Same.
reply Timothy Day libcfs_debug.h:196 — Same.
Timothy Day
Same.
owner Timothy Day · uploader Timothy Day · PS7 uploaded 882d ago · NEW · open in Gerrit ↗
commit message
LU-8980 debug: redefine CDEBUG to use tracing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TODO: 1) Look at debug upcalls 2) Test/verify/update userspace helpers 3) Clean up more code 4) Validate LBUG, LASSERT 5) Write kernel doc comments for everything 6) Make sure various userspace settings actually work 7) Fix CDEBUG_LIMIT/CDEBUG_LIMIT_LOC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The custom Lustre debugging infrastruction should be refactored to use existing kernel debugging infrastructure. We should aim to: 1) Improve the current developer experience: Writing code for Lustre shouldn't be made harder. Existing userspace debugging tools should still work and should be improved. 2) Maintain or improve performance: Lustre is a high performance filesystem, not a low performance one. 3) Significantly reduce divergence with upstream: The custom Lustre debugging must go. The code in libcfs and various Lustre subsystem must be refactored. The first step towards that is pushing all debug message into the trace log. This will allow use to retain the features of current Lustre debugging while significantly reducing the need for custom code. This patch removes old Lustre debugging code at the same time. Also, it implements the minimum userspace code needed to make Lustre debugging tools still function. Test-Parameters: fortestonly Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: I8004049eb97a3fdc9a5725aa8402355107494950
57348
master
J !B ✓T ✗11R -1/2−
LU-18175 ldlm: replace namespace lock with RCU
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
rocky8
stalled 280d
M +62 −75
280d
LU-18175 ldlm: replace namespace lock with RCU
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
rocky8
stalled 280d
M +62 −75
280d
needs rebase — checkpatch: cannot be cherry-picked
enforced failed: review-dne-part-1, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-selinux-ssk-part-1, review-dne-zfs-part-2, review-dne-zfs-part-4, review-dne-zfs-part-6, review-ldiskfs
janitor run: 4 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 crashed | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-4 crashed | RHEL 8.10 / x86_64 | ran 9 tests. 1 tests failed: sanity-quota. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-5 crashed | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanityn. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-5 crashed | RHEL 9.5 / x86_64 | ran 5 tests. 1 tests failed: sanityn. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-6 crashed | RHEL 8.10 / x86_64 | ran 4 tests. 1 tests failed: ost-pools. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-6 crashed | RHEL 9.5 / x86_64 | ran 4 tests. 1 tests failed: ost-pools. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-selinux-ssk-part-1 crashed | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-2 crashed | RHEL 8.10 / x86_64 | ran 11 tests. 1 tests failed: sanity-pfl. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-4 crashed | RHEL 8.10 / x86_64 | ran 9 tests. 1 tests failed: sanity-quota. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-6 crashed | RHEL 8.10 / x86_64 | ran 4 tests. 1 tests failed: ost-pools. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs crashed | RHEL 8.10 / x86_64, SLES 15.5 / x86_64 | ran 7 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
3 optional test failure(s) — informational
build #115080 SUCCESS · tests all Maloo sessions
no vote yet: Qian Yingjin, Neil Brown, Timothy Day
patchsets:
PS5 02-23
PS6 03-06
PS7 04-02
PS8 06-03
PS9 07-16
+4 earlier
PS1 12-09 PS2 01-16 PS3 01-22 PS4 01-22owner James Simmons · uploader James Simmons · PS9 uploaded 475d ago · NEW · open in Gerrit ↗
commit message
LU-18175 ldlm: replace namespace lock with RCU With newer kernels you can enable a debugfs interface to flush out the shrinkers. When enabled in testing the below was discovered: BUG: sleeping function called from invalid context at kernel/mutex.c:104 in_atomic(): 1, irqs_disabled(): 0, pid: 18286, name: lctl CPU: 3 PID: 18286 Comm: lctl Kdump: loaded Tainted: G OE ------------ 3.10.0-7.9-debug #1 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-1.fc38 04/01/2014 Call Trace: [<ffffffff817ded29>] dump_stack+0x19/0x1b [<ffffffff810c8ec9>] __might_sleep+0xd9/0x100 [<ffffffff817e5540>] mutex_lock+0x20/0x40 [<ffffffffa08ae00c>] ldlm_pools_shrink+0x6c/0x330 [ptlrpc] [<ffffffffa08ae2eb>] ldlm_pools_cli_shrink+0x1b/0x20 [ptlrpc] [<ffffffffa022be76>] shrinker_debugfs_count_show+0x106/0x200 [libcfs] [<ffffffff8126e115>] seq_read+0x135/0x470 [<ffffffff81244899>] vfs_read+0xb9/0x1c0 [<ffffffff812457cf>] SyS_read+0x7f/0xf0 [<ffffffff817f400c>] system_call_fastpath+0x1f/0x24 This is due to the debugfs interface taking its own mutex lock and our own ldlm pools using a mutex lock as well. Replace our mutex lock with RCU list handling. Special note is that their is no list_empty_rcu(). We have to use list_first_or_null_rcu() instead. This is due to list_empty() and the next list operation performing separate READ_ACCESS which can give different results. Change-Id: I175f345b5a8cf7d29e32c7e192620f9c896e6a9d Signed-off-by: James Simmons <jsimmons@infradead.org>
27028
master
J ✗1B ✓T ✗1R 0/2
LU-8875 lnet: Change to new RDMA done callback mechanism
carrying Doug Oucharek · janitor: 1 test failure unique to this patch — sanity-quota@zfs+DNE:test_12b
1 unique failure
stalled 292d
M +221 −5
292d
LU-8875 lnet: Change to new RDMA done callback mechanism
carrying Doug Oucharek · janitor: 1 test failure unique to this patch — sanity-quota@zfs+DNE:test_12b
1 unique failure
stalled 292d
M +221 −5
292d
janitor: 1 test failure unique to this patch — sanity-quota@zfs+DNE:test_12b
enforced failed: review-dne-zfs-part-2
janitor flagged test failures unique to this patch
| unique failing test | history |
|---|---|
| sanity-quota@zfs+DNE:test_12b | seen in 100 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-zfs-part-2 | CentOS 7.0/x86_64 | ran 13 tests. 1 tests failed: sanity-sec. | session |
2 optional test failure(s) — informational
build #13782 SUCCESS
no vote yet: Alexey Lyashkov, Ian Ziemba, Doug Oucharek, Serguei Smirnov, Amir Shehata, Sonia Sharma
owner Doug Oucharek · uploader James Simmons · PS8 uploaded 2379d ago · NEW · open in Gerrit ↗
commit message
LU-8875 lnet: Change to new RDMA done callback mechanism Adapt to changes made to the RDMA API: - change call to ib_create_cq() to ib_alloc_cq() (use SOFTIRQ for callbacks) - change call to ib_destroy_cq() to ib_free_cq() - introduce a new struct kib_sched_element as the items we put on the kib scheduler work list (rather than putting connections to be processed) - added a kib_sched_element to kib_tx and kib_rx so they can be scheduled to be processed by the kib scheduler - have separate callbacks for each CQ operation type - set the proper callback to be called when setting up CQ elements - change kiblnd_scheduler() to process work items (kib_sched_element) rather than process connections All of this means we are making good use of the new RDMA CQ callback mechanism and focusing our scheduler to process complete items rather than letting it process connections and have to poll for completions. Test-Parameter: trivial nettype=o2ib Signed-off-by: Doug Oucharek <dougso@me.com> Change-Id: I4ba719578086fedb68ca554eeec191c839ceaca2
59802
master
J ✓B ✓T ✓R +2/2
LU-18162 obdclass: standardize class_(un)register_type
carrying Timothy Day · needs rebase — checkpatch: cannot be cherry-picked
needs rebaseVerified -1
stalled 293d
2 unresolved
L +216 −201
293d
LU-18162 obdclass: standardize class_(un)register_type
carrying Timothy Day · needs rebase — checkpatch: cannot be cherry-picked
needs rebaseVerified -1
stalled 293d
2 unresolved
L +216 −201
293d
needs rebase — checkpatch: cannot be cherry-picked
Verified -1 veto by Oleg Drokin
2 reviewer comment(s) to address if a respin is needed — last from Oleg Drokin
2 optional test failure(s) — informational
build #115316 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Shaun Tancheff +1 · Andreas Dilger +1
no vote yet: Oleg Drokin
patchsets:
PS1 06-17
PS2 06-17 Janitor Bot
PS3 06-17
PS4 06-17
PS5 07-27 James Simmons
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Oleg Drokin patchset comment — I am really suspicious about this patch.
Oleg Drokin
I am really suspicious about this patch. current master-next on boilpot started to get strange use after free problems which seem to be accessing OBD device that's already freed. Four distinct trace so far: https://knox.linuxhacker.ru/crashdb_ui_external.py.cgi?newid=73710 https://knox.linuxhacker.ru/crashdb_ui_external.py.cgi?newid=73714 https://knox.linuxhacker.ru/crashdb_ui_external.py.cgi?newid=73724 https://knox.linuxhacker.ru/crashdb_ui_external.py.cgi?newid=73725 I am going to omit it next time over and we'll see how it works. Not setting -1 just yet
reply Timothy Day patchset comment — Odd. I wonder if this is exposing an issue introduced in a previous patch somehow?
Oleg Drokin
dropping this patch resulted in total disappearance of the problems reported in the latest master-next over the last week
Timothy Day
Odd. I wonder if this is exposing an issue introduced in a previous patch somehow?
owner Timothy Day · uploader James Simmons · PS5 uploaded 465d ago · NEW · open in Gerrit ↗
commit message
LU-18162 obdclass: standardize class_(un)register_type Rather than passing many arguments to class_register_type(), statically define all of the fields of the LU type and pass only that LU type to the class register/unregister functions. This makes it easier to see what methods are defined on each LU device type and also aligns more closely with Linux kernel style. This patch precedes the unification of OBD and LU type. Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: Ie33f55abaeaa76d9ede2c11a84a82660827a61f4
56527
master
J !B ✓T ✗10R 0/2
LU-13118 lustre: use UUID for naming instead of internal pointers
mine enforced failed: review-dne-part-4, review-dne-part-5, review-dne-part-7, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-5, review-dne-zfs-part-7, review-ldiskfs
upstream
stalled 325d
7 unresolved
M +58 −50
325d
LU-13118 lustre: use UUID for naming instead of internal pointers
mine enforced failed: review-dne-part-4, review-dne-part-5, review-dne-part-7, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-5, review-dne-zfs-part-7, review-ldiskfs
upstream
stalled 325d
7 unresolved
M +58 −50
325d
enforced failed: review-dne-part-4, review-dne-part-5, review-dne-part-7, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-5, review-dne-zfs-part-7, review-ldiskfs
7 unresolved thread(s) await your reply — last from Aurelien Degremont
janitor run: 5 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-4 | RHEL 9.4 / x86_64 | ran 9 tests. 1 tests failed: sanity-hsm. | session |
| review-dne-part-5 | RHEL 8.10 / x86_64 | ran 8 tests. 1 tests failed: recovery-small. | session |
| review-dne-part-5 | RHEL 9.4 / x86_64 | ran 8 tests. 1 tests failed: recovery-small. | session |
| review-dne-part-7 | RHEL 8.10 / x86_64 | ran 4 tests. 1 tests failed: sanity-pcc. | session |
| review-dne-part-7 | RHEL 9.4 / x86_64 | ran 4 tests. 1 tests failed: sanity-pcc. | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 7 tests. 1 tests failed: recovery-small. | session |
| review-dne-zfs-part-1 | RHEL 8.10 / x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-5 | RHEL 8.10 / x86_64 | ran 8 tests. 2 tests failed: sanityn, recovery-small. | session |
| review-dne-zfs-part-7 | RHEL 8.10 / x86_64 | ran 4 tests. 1 tests failed: sanity-pcc. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, SLES 15.5 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
5 optional test failure(s) — informational
build #112739 SUCCESS · tests all Maloo sessions
no vote yet: Arshad Hussain, Shaun Tancheff, Andreas Dilger, Timothy Day
patchsets:
PS4 10-15
PS5 12-03
PS6 01-11
PS7 03-08
PS8 04-24
+3 earlier
PS1 09-28 PS2 09-28 PS3 10-01threads: 7 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Aurelien Degremont COMMIT_MSG:13 — would be nice to have some examples of the new names, or before/after
Aurelien Degremont
would be nice to have some examples of the new names, or before/after
reply Shaun Tancheff llite_lib.c:1371 — Do the extra embedded '-' separators cause parsing issues later on?
Shaun Tancheff
Do the extra embedded '-' separators cause parsing issues later on?
reply Shaun Tancheff llite_lib.c:1513 — %pU is not correct here as sbi->ll_sb_uuid.uuid is a max 40 byte string.
Shaun Tancheff
%pU is not correct here as sbi->ll_sb_uuid.uuid is a max 40 byte string.
reply Shaun Tancheff mdc_changelog.c:731 — It is safe to require the '-mdc-' naming? Probably but I have not looked to be positive.
Shaun Tancheff
It is safe to require the '-mdc-' naming? Probably but I have not looked to be positive.
reply Andreas Dilger obd_config.c:1900 — That is my concern as well if the format of the parameters is suddenly getting much longer and having extra dashes in them. In the past we
Shaun Tancheff
Extra '-' separators ... do the confuse a parser somewhere?
Andreas Dilger
That is my concern as well if the format of the parameters is suddenly getting much longer and having extra dashes in them. In the past we had to deal with fsname that contained multiple '-' in them, so some code is using "strrchr()" to find the fsname from the end of the instance name. The current parameters look like: # lctl list_param llite.*.max* llite.myth-ffff909824e7f800.max_easize llite.myth-ffff909824e7f800.max_read_ahead_async_active llite.myth-ffff909824e7f800.max_read_ahead_mb llite.myth-ffff909824e7f800.max_read_ahead_per_file_mb llite.myth-ffff909824e7f800.max_read_ahead_whole_mb llite.myth-ffff909824e7f800.max_cached_mb but with this patch they would become: # lctl list_param llite.*.max* llite.myth-f1da1f0c-f89b-473e-b604-8c265d1c1ecd.max_easize llite.myth-f1da1f0c-f89b-473e-b604-8c265d1c1ecd.max_read_ahead_async_active llite.myth-f1da1f0c-f89b-473e-b604-8c265d1c1ecd.max_read_ahead_mb llite.myth-f1da1f0c-f89b-473e-b604-8c265d1c1ecd.max_read_ahead_per_file_mb llite.myth-f1da1f0c-f89b-473e-b604-8c265d1c1ecd.max_read_ahead_whole_mb llite.myth-f1da1f0c-f89b-473e-b604-8c265d1c1ecd.max_cached_mb which not only makes them longer and harder to parse, but also much less readable. If the main concern here is ASLR then we can avoid printing the raw pointer in the parameter name and work out something else. For example, the kernel could save a random 64-bit number at startup time and XOR with that, and if it needs the original pointer back it can XOR again.
reply Aurelien Degremont liblustreapi_util.c:484 — you probably wants to update this comment to be inline with the syntax.
Aurelien Degremont
you probably wants to update this comment to be inline with the syntax.
reply Shaun Tancheff liblustreapi_util.c:467 — The check could be done before trying the copy
Shaun Tancheff
The check could be done before trying the copy
owner James Simmons · uploader James Simmons · PS8 uploaded 559d ago · NEW · open in Gerrit ↗
commit message
LU-13118 lustre: use UUID for naming instead of internal pointers According to ASLR it is considered a security violation to publish internal kernel addresses to user land. Currently lustre uses internal pointer addresses to create an unique identifier that ends up being used to build the sysfs tree. This patch switches this to using the UUID generated. The reason for using UUID is that in the ptlrpc layer there is a mapping between NIDs and UUIDs and many client interfaces have the same UUIDs so we could cheat and use the device name instead. Change-Id: Id91ceece847402658d1e2a364b3602572daaef87 Signed-off-by: James Simmons <jsimmons@infradead.org>
58304
master
J !B ✓T ✗1R -1/2−
LU-18657 pcc: invalidate instead of truncate inode mapping
mine enforced failed: custom-1001
stalled 330d
1 unresolved
XS +2 −2
330d
LU-18657 pcc: invalidate instead of truncate inode mapping
mine enforced failed: custom-1001
stalled 330d
1 unresolved
XS +2 −2
330d
enforced failed: custom-1001
Jian Yu voted -1
1 unresolved thread(s) await your reply — last from Jian Yu
janitor run: 2 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 crashed | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity-pcc. %% THIS TEST SESSION CRASHED %% | session |
1 optional test failure(s) — informational
build #119366 SUCCESS · tests all Maloo sessions
reviews:
Jian Yu -1
no vote yet: Qian Yingjin, Neil Brown, Sebastien Buisson, Timothy Day
patchsets:
PS4 03-11
PS5 03-11
PS6 03-11
PS7 04-25
PS8 12-05
+3 earlier
PS1 03-05 PS2 03-05 PS3 03-06threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Jian Yu patchset comment — [ 2231.421259] ------------[ cut here ]------------
Jian Yu
[ 2231.421259] ------------[ cut here ]------------ [ 2231.422249] kernel BUG at fs/jbd2/transaction.c:2148! [ 2231.423289] invalid opcode: 0000 [#1] SMP PTI [ 2231.424158] CPU: 0 PID: 129424 Comm: ldlm_bl_03 Kdump: loaded Tainted: G OE -------- - - 4.18.0-553.85.1.el8_10.x86_64 #1 [ 2231.426385] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011 [ 2231.427473] RIP: 0010:jbd2_journal_try_to_free_buffers+0xfa/0x100 [jbd2] [ 2231.428770] Code: 00 75 f4 eb a7 5b 4c 89 ef 5d 41 5c 41 5d 41 5e 41 5f e9 f9 7f ef de 5b 31 c0 5d 41 5c 41 5d 41 5e 41 5f c3 cc cc cc cc 0f 0b <0f> 0b 0f 1f 40 00 66 66 66 66 90 41 56 41 55 41 54 55 53 4c 8b 2f [ 2231.432135] RSP: 0018:ffffa4c40584b9e8 EFLAGS: 00010246 [ 2231.433142] RAX: 000fffffc001206d RBX: ffffedd9006f92c0 RCX: 0000000000000000 [ 2231.434497] RDX: 0000000000000000 RSI: ffffedd9006f92c0 RDI: ffff9313873d5000 [ 2231.435845] RBP: ffff9312ac220b80 R08: 0000000000000000 R09: ffffa4c40584b9b8 [ 2231.437180] R10: ffffffffffffffff R11: 000000000000003f R12: 0000000000000000 [ 2231.438513] R13: ffffedd9006f92c0 R14: 0000000000000000 R15: 0000000000000000 [ 2231.439846] FS: 0000000000000000(0000) GS:ffff9313bbc00000(0000) knlGS:0000000000000000 [ 2231.441346] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 2231.442443] CR2: 00005654730b7f44 CR3: 000000001ee10005 CR4: 00000000000606f0 [ 2231.443776] Call Trace: [ 2231.444312] ? __die_body+0x1a/0x60 [ 2231.445060] ? die+0x2a/0x50 [ 2231.445662] ? do_trap+0xe7/0x110 [ 2231.446327] ? jbd2_journal_try_to_free_buffers+0xfa/0x100 [jbd2] [ 2231.447503] ? do_invalid_op+0x36/0x40 [ 2231.448243] ? jbd2_journal_try_to_free_buffers+0xfa/0x100 [jbd2] [ 2231.449410] ? invalid_op+0x14/0x20 [ 2231.450127] ? jbd2_journal_try_to_free_buffers+0xfa/0x100 [jbd2] [ 2231.451286] invalidate_inode_page+0x72/0x90 [ 2231.452153] __invalidate_mapping_pages+0x156/0x3c0 [ 2231.453100] ? vsnprintf+0x340/0x520 [ 2231.453821] ? snprintf+0x49/0x70 [ 2231.454488] pcc_inode_put+0x118/0x140 [lustre] [ 2231.455579] pcc_layout_invalidate+0x12a/0x550 [lustre] [ 2231.456629] vvp_conf_set+0xbc/0xe0 [lustre] [ 2231.457505] cl_conf_set+0x62/0x140 [obdclass] [ 2231.458613] ll_layout_conf+0x14d/0x420 [lustre] [ 2231.459553] ? ll_lock_cancel_bits+0x484/0x9b0 [lustre] [ 2231.460612] ll_lock_cancel_bits+0x484/0x9b0 [lustre] [ 2231.461630] ll_md_blocking_ast+0x2d9/0x450 [lustre] [ 2231.462624] ldlm_cancel_callback+0x7b/0x260 [ptlrpc] [ 2231.463897] ldlm_cli_cancel_local+0xa3/0x490 [ptlrpc] [ 2231.464949] ldlm_cli_cancel_list_local+0x113/0x330 [ptlrpc] [ 2231.466082] ldlm_bl_thread_main+0x74b/0x8b0 [ptlrpc] [ 2231.467122] ? finish_wait+0x80/0x80 [ 2231.467875] ? ldlm_handle_bl_callback+0x400/0x400 [ptlrpc] [ 2231.468993] kthread+0x134/0x150 [ 2231.469678] ? set_kthread_struct+0x50/0x50 [ 2231.470499] ret_from_fork+0x35/0x40 [ 2231.471222] Modules linked in: loop mgc(OE) lustre(OE) mdc(OE) lov(OE) osc(OE) lmv(OE) fid(OE) fld(OE) ksocklnd(OE) ptlrpc(OE) obdclass(OE) lnet(OE) libcfs(OE) rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfs lockd grace fscache intel_rapl_msr intel_rapl_common crct10dif_pclmul crc32_pclmul ghash_clmulni_intel joydev pcspkr i2c_piix4 virtio_balloon sunrpc ext4 mbcache jbd2 ata_generic ata_piix libata virtio_net crc32c_intel serio_raw net_failover virtio_blk failover
owner James Simmons · uploader James Simmons · PS8 uploaded 334d ago · NEW · open in Gerrit ↗
commit message
LU-18657 pcc: invalidate instead of truncate inode mapping
When releasing the PCC inode the current code releases the pages
related to both the pcc inode and original inode. It is possible
additional references exist for these inode so we are not
allowed to flush all the pages. Instead use the function
invalidate_mapping_pages() that only handles pages that can be
cleaned up.
Fixes: 9e37963fa0 ("LU-10499 sec: support of PCC-RO for encrypted files")
Test-Parameters: trivial testlist=sanity-pcc
Change-Id: If979b19d68004221909450641de461b92818d243
Signed-off-by: James Simmons <jsimmons@infradead.org>
48231
master
J –B ✓T ✗1R +1/2
LU-14799 tests: run stand along mgs test
mine enforced failed: custom-1001
stalled 365d
1 unresolved
XS +1 −1
365d
LU-14799 tests: run stand along mgs test
mine enforced failed: custom-1001
stalled 365d
1 unresolved
XS +1 −1
365d
enforced failed: custom-1001
1 unresolved thread(s) await your reply — last from Colin Faber
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 9.3 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. This build will be scored -1 since fortestonly was specified. | session |
build #108444 SUCCESS · tests all Maloo sessions
reviews:
Colin Faber +1
no vote yet: Andreas Dilger
patchsets:
PS1 08-16
PS2 08-16
PS3 08-17
PS4 10-22
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Colin Faber patchset comment — Sure
Colin Faber
Sure
owner James Simmons · uploader James Simmons · PS4 uploaded 742d ago · NEW · open in Gerrit ↗
commit message
LU-14799 tests: run stand along mgs test See what breaks for maloo setup. Test-Parameters: fortestonly testlist=conf-sanity standalonemgs=true Change-Id: I0588dc958af7c37b120f146753e898949d9cb599 Signed-off-by: James Simmons <jsimmons@infradead.org>
43861
master
J !B ✓T ✗1R 0/2
LU-14717 osd-ldiskfs: set readcache_max_filesize properly
reviewing Qian Yingjin · PS1→PS2 since your -1 — your objection was dropped
stalled 372d
XS +5 −0
372d
LU-14717 osd-ldiskfs: set readcache_max_filesize properly
reviewing Qian Yingjin · PS1→PS2 since your -1 — your objection was dropped
stalled 372d
XS +5 −0
372d
PS1→PS2 since your -1 — your objection was dropped
blocked on the owner: enforced tests failed
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-zfs-part-5 crashed | RHEL 8.8/x86_64 | ran 6 tests. 1 tests failed: sanityn. %% THIS TEST SESSION CRASHED %% | session |
2 optional test failure(s) — informational
build #98522 SUCCESS · tests all Maloo sessions
no vote yet: Arshad Hussain, Andreas Dilger, Li Xi
your previous vote: -1 on PS1 (2021-05-29 14:58) — now at PS2
owner Qian Yingjin · uploader Andreas Dilger · PS2 uploaded 1145d ago · NEW · open in Gerrit ↗
commit message
LU-14717 osd-ldiskfs: set readcache_max_filesize properly When set readcache_max_filesize with a negative value from the proc/sysfs interface, we should set it with maximal value OSD_MAX_CACHE_SIZE. Signed-off-by: Qian Yingjin <qian@ddn.com> Change-Id: If5d41211b2b1016a70f470f3242a17f8d5c9d3b8
60909
master
J ✗2B ✓T ✗3R -1/2−
LU-18544 utils: handle special lnetctl import for route setup
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
2 unique failures
IPv6
stalled 392d
2 unresolved
M +155 −0
392d
LU-18544 utils: handle special lnetctl import for route setup
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
2 unique failures
IPv6
stalled 392d
2 unresolved
M +155 −0
392d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 2 test failures unique to this patch — sanity-lnet@ldiskfs+DNE:test_255, sanity-lnet@zfs:test_255
enforced failed: custom-1001, review-ldiskfs-dne
2 unresolved thread(s) await your reply — last from Chris Horn
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-lnet@ldiskfs+DNE:test_255 | NEW unique failure for this branch in the last 30 days, and was seen 1 times across 1 other branches 1 reviews |
| sanity-lnet@zfs:test_255 | NEW unique failure for this branch in the last 30 days, and was seen 1 times across 1 other branches 1 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-dne | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-dne | RHEL 9.5 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
build #116068 SUCCESS · tests all Maloo sessions
patchsets:
PS1 08-26
PS2 08-26 Janitor Bot
PS3 08-27
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Chris Horn COMMIT_MSG:9 — It would be better to say something like:
Chris Horn
It would be better to say something like: The lnetctl tool supports gateways specified with a nidrange syntax. For example: gateway: 10.151.0.[1,2,3,4,5,6,7,8]@o2ib
reply Chris Horn lnetctl.c:5375 — Is strncmp needed vs. strcmp? We use strcmp everywhere else.
Chris Horn
Is strncmp needed vs. strcmp? We use strcmp everywhere else.
I would prefer you remove "route" from the cmd_mappings array (line 4363), and then move this conditional block to same level as the ip2nets conditional:
```
if (mapping) {
...
} else if (!strcmp(scalar_value, "route")) {
...
} else if (!strcmp(scalar_value, "ip2nets")) {
```
The cmd_mappings array should only be for items that don't require a custom handler.
owner James Simmons · uploader James Simmons · PS3 uploaded 433d ago · NEW · open in Gerrit ↗
commit message
LU-18544 utils: handle special lnetctl import for route setup The lnetctl tool supports the following: gateway: 10.151.0.[1,2,3,4,5,6,7,8]@o2ib in YAML config files as a short hand to setup many gateways. This actually voilates the YAML spec and our code doesn't handle this correctly. We need to support this incorrect behavior since it was allowed with cYAML for a long time. To do this we need to intercept route handling and unroll the gateway entries. The good news is that the '/' used by netmask will not break the YAML spec. Support for netmask has not been implemented yet. Test-Parameters: trivial testlist=sanity-lnet Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I6a14659f62ab50d0cb521a2b8e34b1638e4f980d
51901
master
J !B ✓T ✗1R -1/2−
LU-17022 obdclass: convert more flags to bitops
carrying Neil Brown · needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 405d
M +57 −41
405d
LU-17022 obdclass: convert more flags to bitops
carrying Neil Brown · needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 405d
M +57 −41
405d
needs rebase — checkpatch: cannot be cherry-picked
enforced failed: review-ldiskfs-ubuntu
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
build #111391 SUCCESS · tests all Maloo sessions
patchsets:
PS1 08-09
PS2 11-24
PS3 11-24
PS4 02-27 James Simmons
owner Neil Brown · uploader James Simmons · PS4 uploaded 614d ago · NEW · open in Gerrit ↗
commit message
LU-17022 obdclass: convert more flags to bitops
obd_version_recov:1, /* obd uses version checking */
obd_replayable:1, /* recovery enabled; inform clients */
obd_no_recov:1, /* fail instead of retry messages */
are now
OBDF_VERSION_RECOV, /* obd uses version checking */
OBDF_REPLAYABLE, /* recovery enabled; inform clients */
OBDF_NO_RECOV, /* fail instead of retry messages */
Introduce odb_copy_flag() to copy a flag from one obd to another.
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: Id7827b7739ca16f682ec11a216c2b35028d099de
8027
master
J –B ✓T ✓R +0/2−
LU-5960 lnet: add in functionality of lctl to DLC
carrying Amir Shehata · Christopher J. Morrone voted -1
stalled 456d
XL +1916 −144
456d
LU-5960 lnet: add in functionality of lctl to DLC
carrying Amir Shehata · Christopher J. Morrone voted -1
stalled 456d
XL +1916 −144
456d
reviews:
Christopher J. Morrone -1 · Olaf Weber +1
no vote yet: Doug Oucharek, Isaac Huang, James Shimek, Chuck Fossen, Liang Zhen
owner Amir Shehata · uploader James Simmons · PS23 uploaded 3883d ago · NEW · open in Gerrit ↗
commit message
LU-5960 lnet: add in functionality of lctl to DLC One of the barriers to moving from lctl to lnetctl is the lack of certain functionality. This patch adds some of the feature that are missing back. The following commands have been added: . show peers . add peer . del peer . show connections . close connection . push connection Besides adding in the missing pieces I have added new features such as filtering the listing of peer or connections based on properties such as NID,PID or even LNet type (e.g o2ib1) to the lnetconfig library. From the lnetctl command line one can call lnetctl peer show --nid 10.0.0.1@tcp and it will only show that specific peer. Listing of a grouping of peers is also possible with for example lnetctl peer show --nid o2ib12 which will display all peers belong to the o2ib12 net configuration. Lastly the ability to use DNS hostnames was also added. Signed-off-by: Amir Shehata <amir.shehata@intel.com> Signed-off-by: James Simmons <uja.ornl@yahoo.com> Change-Id: Id102e8a6148d9e2ef8c88880df86e237a14c5ebb
13135
master
J –B ✓T ✓R +1/2−
LU-6034 lnet: Enable lnetctl to handle checksum settings for LNet
mine Oleg Drokin voted -1
stalled 456d
S +33 −7
456d
LU-6034 lnet: Enable lnetctl to handle checksum settings for LNet
mine Oleg Drokin voted -1
stalled 456d
S +33 −7
456d
reviews:
Doug Oucharek +1 · Oleg Drokin -1 · Liang Zhen +1
no vote yet: Dmitry Eremin, Isaac Huang, Jian Yu, Frank Zago, Amir Shehata
owner James Simmons · uploader James Simmons · PS12 uploaded 4110d ago · NEW · open in Gerrit ↗
commit message
LU-6034 lnet: Enable lnetctl to handle checksum settings for LNet Add the ability for lnetctl to query or set the checksum algorithm for an LNet interface. This patch only enables user land side of setting this. Change-Id: I40ec55e73032d24baf3133703efc59d49446d692 Signed-off-by: James Simmons <uja.ornl@yahoo.com>
13243
master
J ✗8B ✓T ✗10R -2/2−
LU-6081 hsm: adding migration support
carrying Frank Zago · janitor: 8 test failures unique to this patch — sanity-hsm@ldiskfs+DNE:test_113a, sanity-hsm@ldiskfs+DNE:test_113b, sanity-hsm@ldiskfs+DNE:test_113c +5 more
8 unique failures
stalled 456d
L +789 −117
456d
LU-6081 hsm: adding migration support
carrying Frank Zago · janitor: 8 test failures unique to this patch — sanity-hsm@ldiskfs+DNE:test_113a, sanity-hsm@ldiskfs+DNE:test_113b, sanity-hsm@ldiskfs+DNE:test_113c +5 more
8 unique failures
stalled 456d
L +789 −117
456d
janitor: 8 test failures unique to this patch — sanity-hsm@ldiskfs+DNE:test_113a, sanity-hsm@ldiskfs+DNE:test_113b, sanity-hsm@ldiskfs+DNE:test_113c +5 more
enforced failed: review-dne-part-1, review-dne-part-2, review-dne-part-4, review-dne-selinux, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-4, review-ldiskfs, review-ldiskfs-arm, review-zfs
Qian Yingjin voted -1
janitor flagged test failures unique to this patch
| unique failing test | history |
|---|---|
| sanity-hsm@ldiskfs+DNE:test_113a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-hsm@ldiskfs+DNE:test_113b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-hsm@ldiskfs+DNE:test_113c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-hsm@ldiskfs+DNE:test_113d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-hsm@zfs:test_113a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-hsm@zfs:test_113b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-hsm@zfs:test_113c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-hsm@zfs:test_113d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | CentOS 7.0/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-dne-part-2 | CentOS 7.0/x86_64 | ran 11 tests. 1 tests failed: sanity-hsm. | session |
| review-dne-part-4 | CentOS 7.0/x86_64 | ran 10 tests. 2 tests failed: sanity-flr, sanity-pfl. | session |
| review-dne-selinux | CentOS 7.0/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-1 | CentOS 7.0/x86_64 | ran 6 tests. 2 tests failed: sanityn, sanity. | session |
| review-dne-zfs-part-2 | CentOS 7.0/x86_64 | ran 11 tests. 1 tests failed: sanity-hsm. | session |
| review-dne-zfs-part-4 crashed | CentOS 7.0/x86_64 | ran 12 tests. 2 tests failed: sanity-flr, replay-single. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs | CentOS 7.0/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-arm | CentOS 7.0/x86_64, CentOS 8.0/aarch64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-zfs | CentOS 7.0/x86_64 | ran 8 tests. 1 tests failed: sanity-flr. | session |
4 optional test failure(s) — informational
build #14378 SUCCESS
reviews:
Qian Yingjin -1
no vote yet: jacques-Charles Lafoucriere, Yohan Pipereau, Vitaly Fertman, Henri Doreau, Nikitas Angelinas, Patrick Farrell, Thomas LEIBOVICI, Aurelien Degremont, nathan r, Ben Evans, Shaun Tancheff, Alexander Zarochentsev, Sergey Cheremencev, Andreas Dilger, Quentin Bouget
owner Frank Zago · uploader James Simmons · PS32 uploaded 2360d ago · NEW · open in Gerrit ↗
commit message
LU-6081 hsm: adding migration support Currently file migration is done by "lfs migrate". This has a couple problems. It doesn't scale well to large files and/or large number of files to copy. If an external tool (such as Robinhood) wants to migrate a file, it has to spawn lfs to do the job, for every file, which has a large overhead, or copy the file itself. A solution to this issue is to move the copy operation into the HSM copytool. The copytool already knows how to copy files, and Lustre has control over these files. Migrating a file, from an application point of view, becomes more or less the same as archiving a file. Since the file copy is done by the copytool, this copy can be optimized in one place. This patch adds the ability for HSM to migrate a file within a single Lustre filesystem. The posix copytool is enhanced to support the file migration, and the lfs migrate command now supports that option with --hsm and -a flags. HPE-bug-id: LUS-5669 Signed-off-by: Ben Evans <beevans@whamcloud.com> Change-Id: Id72db5acb3f84292b081efac4657520f0054778b
31407
master
J !B ✓T ✗5R 0/2
LU-10756 ptlrpc: send uevents when import state changes
mine enforced failed: review-dne-part-2, review-dne-selinux-ssk-part-2, review-dne-zfs-part-2, review-ldiskfs-arm, review-ldiskfs-ubuntu
stalled 456d
L +297 −19
456d
LU-10756 ptlrpc: send uevents when import state changes
mine enforced failed: review-dne-part-2, review-dne-selinux-ssk-part-2, review-dne-zfs-part-2, review-ldiskfs-arm, review-ldiskfs-ubuntu
stalled 456d
L +297 −19
456d
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 crashed | CentOS 8.3/x86_64 | ran 7 tests. 1 tests failed: sanity-sec. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-selinux-ssk-part-2 crashed | CentOS 8.3/x86_64 | ran 7 tests. 1 tests failed: sanity-sec. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-2 crashed | CentOS 8.3/x86_64 | ran 7 tests. 1 tests failed: sanity-sec. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs-arm crashed | CentOS 8.3/aarch64, CentOS 8.3/x86_64 | ran 6 tests. 1 tests failed: sanity-sec. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs-ubuntu | CentOS 8.3/x86_64, Ubuntu 20.04/x86_64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
build #23252 SUCCESS · tests all Maloo sessions
no vote yet: Neil Brown, Joe Grund, Andreas Dilger, Oleg Drokin, Ben Evans
owner James Simmons · uploader James Simmons · PS27 uploaded 1862d ago · NEW · open in Gerrit ↗
commit message
LU-10756 ptlrpc: send uevents when import state changes When the import for a client changes state such as when the client is evicted send a uevent to make user land so it can be aware that the import state has changed. This allows the use of udev rules to perform site specific actions. Change-Id: I959700f13bca9ee7889244e1cf75eda4d128c8ca Signed-off-by: James Simmons <jsimmons@infradead.org>
32941
master
J –B ✓T ✗3R 0/2
LU-7659 hsm: Use netlink for KUC communication
carrying Yohan Pipereau · enforced failed: custom-101, review-dne-part-2, review-dne-zfs-part-2
stalled 456d
L +346 −147
456d
LU-7659 hsm: Use netlink for KUC communication
carrying Yohan Pipereau · enforced failed: custom-101, review-dne-part-2, review-dne-zfs-part-2
stalled 456d
L +346 −147
456d
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-101 | CentOS 7.0/x86_64, RHEL 7.6/x86_64 | ran 5 tests. 1 tests failed: sanity-hsm. | session |
| review-dne-part-2 | CentOS 7.0/x86_64 | ran 12 tests. 1 tests failed: sanity-hsm. | session |
| review-dne-zfs-part-2 | CentOS 7.0/x86_64 | ran 12 tests. 1 tests failed: sanity-hsm. | session |
build #5656 SUCCESS
no vote yet: Nikitas Angelinas, Andreas Dilger, John Hammond, Ben Evans, Quentin Bouget, Sonia Sharma
your previous vote: -1 on PS14 (2019-02-18 18:11) — now at PS16
owner Yohan Pipereau · uploader James Simmons · PS16 uploaded 2710d ago · NEW · open in Gerrit ↗
commit message
LU-7659 hsm: Use netlink for KUC communication Make communications between MDC and copytools rely on asynchronous netlink communications instead of pipe based communication. Currently how the communications is done is considered incorrect as described here: https://www.linuxjournal.com/article/8110 This new netlink API uses generic netlink to avoid taking a dedicated netlink family number. Kernel now initiates communication by creating socket at module load time and message sending from kernel has changed from synchronous vfs writing to asynchronous netlink sending. As for now, copytools subscribe to both netlink & KUC groups. Copytools registration still rely on ioctls to populate KUC groups, but no more file descriptors are sent to the kernel to perform VFS writing. Change-Id: I777a24831ad3ef4bdb2be6deb57ed45be91bcf9e Test-Parameters: testlist=sanity-hsm clientcount=3 osscount=2 mdscount=2 Signed-off-by: Yohan Pipereau <yohan.pipereau.ocre@cea.fr>
33126
master
J !B ✓T ✗1R 0/2
LU-11234 lod: add data placement policy (DPP) for OST pools
reviewing Teddy Zheng · PS16→PS18 since your -1 — your objection was dropped
stalled 456d
XL +1743 −1123
456d
LU-11234 lod: add data placement policy (DPP) for OST pools
reviewing Teddy Zheng · PS16→PS18 since your -1 — your objection was dropped
stalled 456d
XL +1743 −1123
456d
PS16→PS18 since your -1 — your objection was dropped
blocked on the owner: enforced tests failed
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | CentOS 7.0/x86_64 | ran 8 tests. 1 tests failed: sanity. | session |
1 optional test failure(s) — informational
build #12017 SUCCESS
no vote yet: Qian Yingjin, Andreas Dilger, Oleg Drokin, Li Xi
your previous vote: -1 on PS16 (2019-11-13 15:13) — now at PS18
owner Teddy Zheng · uploader Teddy Zheng · PS18 uploaded 2453d ago · NEW · open in Gerrit ↗
commit message
LU-11234 lod: add data placement policy (DPP) for OST pools
This patch provides a mechanism to place files into different pools according
to filename, jobid, fsuid, fsgid, projid and client nid. filename and jobid
support the qualifier '*'. Fsuid, fsgid, projid and client nid support range
expression. This feature is useful when Lustre is built up with different type
of devices, such as OSTs composed of SSDs and disks. To use this feature, the
same type of OSTs firstly make up one pool and DPP rules are added to
the system. Then, when handling file creation, MDT checks the operation
according to the predefined DPP rules, and put the file's object(s) into the
corresponding pool.
The usage of the rule is similar to NRS TBF. Commands for the rule are like:
Add a rule named "rule_sourcecode" according to which filename matching "*.c"
or "*.h" will be put into the pool named "pool0"
lctl set_param lod.*.dpp=\
"add rule_sourcecode pool={pool0} fname={*.h *.c}"
Add a rule named "rule_vip_users" according to which files with uid = 500 or
uid = 100 will be put into the pool named "pool1"
lctl set_param lod.*.dpp=\
"add rule_vip_users pool={pool1} uid={500 1000}"
Add a rule named "rule_vip_groups" according to which files with gid = 500 or
gid = 1000 will be put into the pool named "pool2"
lctl set_param lod.*.dpp=\
"add rule_vip_groups pool={pool2} gid={500 1000}"
Add a rule named "rule1" according to which files with projid between 500 and
600 or between 800 and 1000 will be put into the pool named "pool2"
lctl set_param lod.*.dpp=\
"add rule1 pool={pool2} projid={500-600 800-1000}"
Add a rule named "vip_client" according to which files creation from client
with nid of 10.0.0.200@tcp will be put into the pool named "pool3"
lctl set_param lod.*.dpp=\
"add vip_client pool={pool3} nid={10.0.0.200@tcp}"
It also supports complex rules. The following command will add a rule which
will put files that match any condition of 1) its uid is 500 and gid is 1000,
or 2) it has a suffix of ".h" or ".c" into the pool named "pool4"
lctl set_param lod.*.dpp=\
"add rule2 pool={pool4} uid={500}&gid={1000},fname={*.c *.h}"
Delete a rule named "rule1"
lctl set_param lod.*.dpp="del rule1"
This patch also combines the command parse functions that are shared with NRS TBF
and pcc codes.
Change-Id: Ie4876a78adcc561f79005817433a7bbdf5fbc65b
Signed-off-by: Teddy Zheng <teddy@ddn.com>
Signed-off-by: Li Xi <lixi@ddn.com>
33363
master
J –B ✓T ✓R +2/2
LU-11058 obd: manage checksum state
mine Verified -1 veto by Oleg Drokin
Verified -1
stalled 456d
M +61 −24
456d
LU-11058 obd: manage checksum state
mine Verified -1 veto by Oleg Drokin
Verified -1
stalled 456d
M +61 −24
456d
1 optional test failure(s) — informational
build #2303 SUCCESS
reviews:
Andreas Dilger +1 · Li Xi +1
no vote yet: Emoly Liu, Qian Yingjin, Oleg Drokin
owner James Simmons · uploader James Simmons · PS3 uploaded 2885d ago · NEW · open in Gerrit ↗
commit message
LU-11058 obd: manage checksum state Currently the checksum dump, checksum tunable and the checksum mount options don't affect each other. With this patch: 1) mount option checksum/nochecksum will turn on or off both checksumming and checksum dump. Additionally it will control access to all checksum related sysfs files. 2) Disabling the checksums sysfs file will also disable checksum_dump as well as prevent enabling checksum_dump. Change-Id: I0781cda49933b0f9f19f968ca211872ab3b34692 Signed-off-by: James Simmons <uja.ornl@yahoo.com>
34603
master
J –B ✓T –R 0/2
LU-10026: Configuration for compression support and lz4 module backport
reviewing Anna Fuchs · PS1→PS7 since your -1 — your objection was dropped
stalled 456d
XL +2713 −2
456d
LU-10026: Configuration for compression support and lz4 module backport
reviewing Anna Fuchs · PS1→PS7 since your -1 — your objection was dropped
stalled 456d
XL +2713 −2
456d
build #11484 SUCCESS
no vote yet: Patrick Farrell, Neil Brown, Sebastien Buisson, Andreas Dilger
your previous vote: -1 on PS1 (2019-04-05 17:31) — now at PS7
owner Anna Fuchs · uploader Anna Fuchs · PS7 uploaded 2473d ago · NEW · open in Gerrit ↗
commit message
LU-10026: Configuration for compression support and lz4 module backport This patch adds build system changes for compression: - If lz4 is not available in the kernel (< 3.11), we build a private module for it. - Always build compression module except when ldiskfs is enabled. - An option cl_compression, settable via lctl, enables or disables compression. Change-Id: I7f843ed7ca822a3f3246bd5c3e4ccb6e6f0ec90f Test-Parameters: forbuildonly, fstype=zfs Signed-off-by: Anna Fuchs <anna.fuchs@informatik.uni-hamburg.de>
34954
master
J !B ✓T ✗2R 0/2
LU-8585 utils: enable fileset use with liblustreapi HSM handling
mine enforced failed: review-dne-part-4, review-dne-zfs-part-4
stalled 456d
S +4 −9
456d
LU-8585 utils: enable fileset use with liblustreapi HSM handling
mine enforced failed: review-dne-part-4, review-dne-zfs-part-4
stalled 456d
S +4 −9
456d
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-4 | RHEL 9.3/x86_64 | ran 9 tests. 1 tests failed: sanity-hsm. | session |
| review-dne-zfs-part-4 | RHEL 8.9/x86_64 | ran 9 tests. 1 tests failed: sanity-hsm. | session |
5 optional test failure(s) — informational
build #108370 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Minh Diep, John Hammond, Timothy Day
patchsets:
PS10 03-22
PS11 03-23
PS12 10-16
owner James Simmons · uploader James Simmons · PS12 uploaded 749d ago · NEW · open in Gerrit ↗
commit message
LU-8585 utils: enable fileset use with liblustreapi HSM handling Currently using the special .lustre/fid/X path doesn't work with filesets but the llapi_fid_* API in liblustreapi does. Move the HSM handling in liblustreapi to the llapi_fid_* handling. While sites that need to use fileset can create their own copy agent that uses the llapi_fid_* most sites are reluctant to replace liblustreapi with their own version that can work with fileset. Note sanity-hsm test will not work FILESET since the copy agent for testing will not be updated to use the llapi_fid_* API. Change-Id: Iaa37d0c585f84c15769e415e0fd73be7b25dd296 Signed-off-by: James Simmons <jsimmons@infradead.org>
35422
master
J –B ✗T –R 0/2
LU-9897 zfs: migrate autoconf detection to pkgconfig
mine build failure (#78732)
stalled 456d
S +10 −36
456d
LU-9897 zfs: migrate autoconf detection to pkgconfig
mine build failure (#78732)
stalled 456d
S +10 −36
456d
build #78732 FAILURE
no vote yet: Minh Diep, Alex Zhuravlev
owner James Simmons · uploader James Simmons · PS8 uploaded 2119d ago · NEW · open in Gerrit ↗
commit message
LU-9897 zfs: migrate autoconf detection to pkgconfig Currently we have extra complexity to determine where packages are installed. This approach is also fragile if packages are not installed in the standard location. This can be handled in a much cleaner way with pkgconfig. Update ZFS handling to use its supplied pkgconfig files it provides. Test-Parameter: trivial Change-Id: I752997a940b0a8c56772bd737f42a5acbd010abb Signed-off-by: James Simmons <jsimmons@infradead.org>
35648
master
J ✓B ✓T ✓R -1/2−
LU-11380 utils: split llapi_fid2path() in three functions
reviewing Andreas Dilger · PS11→PS23 since your -1 — your objection was dropped
stalled 456d
L +359 −184
456d
LU-11380 utils: split llapi_fid2path() in three functions
reviewing Andreas Dilger · PS11→PS23 since your -1 — your objection was dropped
stalled 456d
L +359 −184
456d
1 optional test failure(s) — informational
build #13229 SUCCESS
reviews:
Quentin Bouget -1
no vote yet: Qian Yingjin, Olaf Faaland
your previous vote: -1 on PS11 (2020-01-27 16:01) — now at PS23
owner Andreas Dilger · uploader Andreas Dilger · PS23 uploaded 2401d ago · NEW · open in Gerrit ↗
commit message
LU-11380 utils: split llapi_fid2path() in three functions Split llapi_fid2path() into separate llapi_lufid2path() to avoid hoop jumping in the next patch that adds llapi_lufid2parent(). Add helper llapi_fsname_open() to open a descriptor on a filesystem by fsname or directory for llapi_lufid2path() and other functions. Use it in "lfs fid2path" to fix bug when passed a non-mount directory. Add ability to run a single subtest of llapi_fid_test with the "-o" option, or to exclude a single test with "-e" to speed up debugging. Signed-off-by: Andreas Dilger <adilger@whamcloud.com> Change-Id: I05abfaf888a5474d62feebab4e8db543b93ebbe5
36235
master
J !B ✗T –R 0/2
LU-10968 hsm: create external HSM queue interface
carrying Ben Evans · build failure (#86410)
stalled 456d
XL +4700 −204
456d
LU-10968 hsm: create external HSM queue interface
carrying Ben Evans · build failure (#86410)
stalled 456d
XL +4700 −204
456d
janitor run: build failed — no tests ran — janitor results
build #86410 FAILURE
no vote yet: Qian Yingjin, Vitaly Fertman, Nikitas Angelinas, Joe Atzinger, Ellis Wilson, Aurelien Degremont, Sergey Cheremencev, nathan r, Andreas Dilger, Quentin Bouget, Dominique Martinet
patchsets:
PS12 10-05 James Simmons
PS13 03-02 James Simmons
your previous vote: -1 on PS10 (2020-06-17 21:50) — now at PS13
owner Ben Evans · uploader James Simmons · PS13 uploaded 1708d ago · NEW · open in Gerrit ↗
commit message
LU-10968 hsm: create external HSM queue interface Add more, consistent, information to messages including HSM action. Create an interface for an external HSM queue Create a demonstration external HSM coordinator Create llapi calls for external cdt to communicate with Lustre sanity-hsm can be set to use an external coordinator by specifying COORDINATOR=external on the command line You must run the external coordinator on the MDS Handles all current HSM activities. No changes to any other programs are needed. Signed-off-by: Ben Evans <beevans@whamcloud.com> Signed-off-by: James Simmons <jsimmons@infradead.org> Cray-bug-id: LUS-5990 Test-Parameters: env=COORDINATOR=external testlist=sanity-hsm Change-Id: I2cbd2f8b641d8fdca427d6de82f58af58be4a477
37033
master
J ✗282B ✓T ✗11R 0/2
LU-8066 obd: remove server sysfs symlinks handling
mine janitor: 282 test failures unique to this patch — conf-sanity2@ldiskfs+DNE:test_48, conf-sanity2@ldiskfs+DNE:test_66, conf-sanity2@ldiskfs+DNE:test_68 +279 more
282 unique failures
stalled 456d
M +4 −151
456d
LU-8066 obd: remove server sysfs symlinks handling
mine janitor: 282 test failures unique to this patch — conf-sanity2@ldiskfs+DNE:test_48, conf-sanity2@ldiskfs+DNE:test_66, conf-sanity2@ldiskfs+DNE:test_68 +279 more
282 unique failures
stalled 456d
M +4 −151
456d
janitor: 282 test failures unique to this patch — conf-sanity2@ldiskfs+DNE:test_48, conf-sanity2@ldiskfs+DNE:test_66, conf-sanity2@ldiskfs+DNE:test_68 +279 more
enforced failed: review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-ldiskfs, review-ldiskfs-arm, review-zfs
janitor flagged test failures unique to this patch
| unique failing test | history |
|---|---|
| conf-sanity2@ldiskfs+DNE:test_48 | seen in 1 other review |
| conf-sanity2@ldiskfs+DNE:test_66 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity2@ldiskfs+DNE:test_68 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity3@ldiskfs+DNE:test_103 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity3@ldiskfs+DNE:test_108b | seen in 1 other review |
| conf-sanity3@ldiskfs+DNE:test_109a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity3@ldiskfs+DNE:test_109b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity3@ldiskfs+DNE:test_112 | seen in 2 other reviews |
| conf-sanity-slow@ldiskfs+DNE:test_32a | seen in 2 other reviews |
| conf-sanity-slow@ldiskfs+DNE:test_32d | seen in 2 other reviews |
| conf-sanity-slow@ldiskfs+DNE:test_32e | seen in 2 other reviews |
| conf-sanity3@zfs:test_103 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity3@zfs:test_108a | seen in 1 other review |
| conf-sanity3@zfs:test_112 | seen in 1 other review |
| conf-sanity3@zfs:test_117 | seen in 6 other reviews |
| conf-sanity3@zfs:test_123aa | seen in 6 other reviews |
| conf-sanity3@zfs:test_123ab | seen in 6 other reviews |
| conf-sanity3@zfs:test_123ac | seen in 6 other reviews |
| conf-sanity3@zfs:test_123ad | seen in 6 other reviews |
| conf-sanity3@zfs:test_123ae | seen in 5 other reviews |
| conf-sanity3@zfs:test_123F | seen in 5 other reviews |
| conf-sanity-slow@zfs:test_32a | seen in 2 other reviews |
| conf-sanity-slow@zfs:test_32d | seen in 2 other reviews |
| conf-sanity-slow@zfs:test_32e | seen in 2 other reviews |
| ost-pools@ldiskfs+DNE:test_1a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_1b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_1c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_1m | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_1n | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_2c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_2d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_2e | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_3d | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_4c | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_5a | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_5b | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_6 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_7a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_7c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_11 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_15 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_16 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_17 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_18 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_19 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_20 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_21 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_22 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_23a | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_23b | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_24 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_25 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_27 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_28 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_1a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_1b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_1c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_1m | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_1n | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_2c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_2d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_2e | seen in 1 other review |
| ost-pools@zfs:test_3d | seen in 1 other review |
| ost-pools@zfs:test_4c | seen in 1 other review |
| ost-pools@zfs:test_5a | seen in 1 other review |
| ost-pools@zfs:test_5b | seen in 1 other review |
| ost-pools@zfs:test_6 | seen in 1 other review |
| ost-pools@zfs:test_7a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_7c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_11 | seen in 1 other review |
| ost-pools@zfs:test_15 | seen in 1 other review |
| ost-pools@zfs:test_16 | seen in 1 other review |
| ost-pools@zfs:test_17 | seen in 1 other review |
| ost-pools@zfs:test_18 | seen in 1 other review |
| ost-pools@zfs:test_19 | seen in 1 other review |
| ost-pools@zfs:test_20 | seen in 1 other review |
| ost-pools@zfs:test_21 | seen in 1 other review |
| ost-pools@zfs:test_22 | seen in 1 other review |
| ost-pools@zfs:test_23a | seen in 1 other review |
| ost-pools@zfs:test_23b | seen in 1 other review |
| ost-pools@zfs:test_24 | seen in 1 other review |
| ost-pools@zfs:test_25 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_27 | seen in 1 other review |
| ost-pools@zfs:test_28 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@ldiskfs+DNE:test_27Ce | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@ldiskfs+DNE:test_27D | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@ldiskfs+DNE:test_27G | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@ldiskfs+DNE:test_27I | seen in 1 other review |
| sanity1@ldiskfs+DNE:test_27L | seen in 1 other review |
| sanity1@ldiskfs+DNE:test_27M | seen in 1 other review |
| sanity1@ldiskfs+DNE:test_56wb | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_65n | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_134a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_134b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_140 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_150 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_151 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_154A | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_154B | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_154a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_154b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_154f | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_154g | seen in 5 other reviews |
| sanity2@ldiskfs+DNE:test_155e | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_155f | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_155g | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_155h | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_156 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160d | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160e | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160f | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160g | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160h | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160i | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160j | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160k | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_161a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_161b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_161c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_161d | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_162a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_162b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_162c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_169 | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_180a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_181 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_183 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_185 | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_185a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_187a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_187b | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_200 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_204a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_204b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_204c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_204d | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_204e | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_204f | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_204g | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_204h | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_208 | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_218 | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_220 | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_222a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_222b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_223 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_224c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_226a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_226b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_228a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_228b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_228c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_229 | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_230a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_230b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_230c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_230d | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_230e | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_230f | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_230i | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_230j | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_230l | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_230m | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_231a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_232a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_232b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_233a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_233b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_238 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_240 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_241b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_242 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_243 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_244a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_244b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_248b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_250 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_252 | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_257 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_270a | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_270b | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_270c | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_270d | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_270e | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_270f | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_271c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_271f | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_272a | seen in 4 other reviews |
| sanity2@ldiskfs+DNE:test_272b | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_272c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_272d | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_272e | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_272f | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_275 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_277 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300d | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300e | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300f | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300g | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300h | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300i | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300j | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300k | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300l | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300n | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300q | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300r | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_310a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_310b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_311 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_313 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_314 | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_315 | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_316 | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_317 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_318 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_319 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_399b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_402 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_406 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_409 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_412 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_413a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_413b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_415 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_417 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_418 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_421a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_421b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_421c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_421d | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_421e | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_421f | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_421g | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_422 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_423 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_801a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_801b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_801c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_803 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_804 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_806 | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_807 | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_808 | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_809 | seen in 4 other reviews |
| sanity2@ldiskfs+DNE:test_810 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_812a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_812b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_816 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_817 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_818 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_820 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_901 | seen in 1 other review |
| sanity1@zfs:test_27Ce | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@zfs:test_27D | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@zfs:test_27G | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@zfs:test_27I | seen in 1 other review |
| sanity1@zfs:test_27L | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@zfs:test_27M | seen in 1 other review |
| sanity1@zfs:test_56wb | seen in 1 other review |
| sanity-flr@ldiskfs+DNE:test_204f | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-flr@zfs:test_204f | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_3 | seen in 1 other review |
| sanity-quota@ldiskfs+DNE:test_5 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_6 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_7a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_7b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_7c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_12a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@ldiskfs+DNE:test_16 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@ldiskfs+DNE:test_17 | seen in 1 other review |
| sanity-sec@ldiskfs+DNE:test_18 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@ldiskfs+DNE:test_19 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@ldiskfs+DNE:test_20 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@ldiskfs+DNE:test_21 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@ldiskfs+DNE:test_22 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | CentOS 7.0/x86_64 | ran 8 tests. 1 tests failed: sanity. | session |
| review-dne-part-2 | CentOS 7.0/x86_64 | ran 11 tests. 3 tests failed: sanity-sec, ost-pools, runtests. | session |
| review-dne-part-3 | CentOS 7.0/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-4 | CentOS 7.0/x86_64 | ran 14 tests. 6 tests failed: insanity, replay-ost-single, sanity-quota, sanity-flr, sanity-pfl, replay-singl | session |
| review-dne-zfs-part-1 | CentOS 7.0/x86_64 | ran 8 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-2 | CentOS 7.0/x86_64 | ran 11 tests. 1 tests failed: ost-pools. | session |
| review-dne-zfs-part-3 | CentOS 7.0/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-4 | CentOS 7.0/x86_64 | ran 16 tests. 4 tests failed: sanity-quota, sanity-flr, sanity-pfl, replay-single. | session |
| review-ldiskfs | CentOS 7.0/x86_64 | ran 7 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-arm | CentOS 7.0/x86_64, CentOS 8.0/aarch64 | ran 7 tests. 1 tests failed: sanity. | session |
| review-zfs | CentOS 7.0/x86_64 | ran 9 tests. 2 tests failed: replay-single, sanity-flr. | session |
build #72814 SUCCESS
owner James Simmons · uploader James Simmons · PS4 uploaded 2419d ago · NEW · open in Gerrit ↗
commit message
LU-8066 obd: remove server sysfs symlinks handling Before the lustre 2.4 OSD work the lov and osc code was used on both servers and clients. With the OSD layer work we saw the new lod and osp layers created that are server specific. To avoid breakage symlinks were created that went from the lod / osp to lov / osc directories in the proc tree on the server side. This required some extra complex code to handle this. It has been a very long time since that change so we can now safely remove all the extra symlink handling to make life easier. Change-Id: I41fd5abab3d648db6d4fa1a355bd7147a34ee478 Signed-off-by: James Simmons <jsimmons@infradead.org>
37407
master
J !B ✓T ✗6R 0/2
LU-8066 mgc: remove no longer needed class_del_profiles()
mine enforced failed: review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4
stalled 456d
S +0 −29
456d
LU-8066 mgc: remove no longer needed class_del_profiles()
mine enforced failed: review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4
stalled 456d
S +0 −29
456d
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 | CentOS 7.0/x86_64 | ran 11 tests. 6 tests failed: sanity-pcc, large-scale, mds-survey, sanity-sec, sanity-lfsck, sanity-scrub. | session |
| review-dne-part-3 | CentOS 7.0/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-4 | CentOS 7.0/x86_64 | ran 10 tests. 8 tests failed: insanity, replay-ost-single, sanity-quota, sanity-dom, sanity-flr, sanity-pfl, | session |
| review-dne-zfs-part-2 | CentOS 7.0/x86_64 | ran 11 tests. 6 tests failed: sanity-pcc, large-scale, mds-survey, sanity-sec, sanity-lfsck, sanity-scrub. | session |
| review-dne-zfs-part-3 | CentOS 7.0/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-4 | CentOS 7.0/x86_64 | ran 10 tests. 1 tests failed: mmp. | session |
build #11671 SUCCESS
no vote yet: Andreas Dilger
owner James Simmons · uploader James Simmons · PS1 uploaded 2466d ago · NEW · open in Gerrit ↗
commit message
LU-8066 mgc: remove no longer needed class_del_profiles() While cleaning up obd_type handling some code to handle lustre 1.14 was found in mgc_cleanup(). This code is obsolete so lets remove class_del_profiles() handling. Change-Id: Ib1e9f9cec060667972b9fa97b1a737f7dbe7edfe Signed-off-by: James Simmons <jsimmons@infradead.org>
41664
master
J ✓B ✗T –R -1/2−
LU-14428 libcfs: replace tracefile buffer with ring_buffer
carrying Neil Brown · build failure (#108522)
stalled 456d
2 unresolved
L +220 −766
456d
LU-14428 libcfs: replace tracefile buffer with ring_buffer
carrying Neil Brown · build failure (#108522)
stalled 456d
2 unresolved
L +220 −766
456d
build failure (#108522)
Alexey Lyashkov voted -1
1 unresolved thread(s) await your reply — last from Oleg Drokin
1 thread(s) waiting on others
build #108522 FAILURE
reviews:
Alexey Lyashkov -1
no vote yet: Thomas Bertschinger, Nikitas Angelinas, Andreas Dilger, Oleg Drokin
patchsets:
PS30 02-05 James Simmons
PS31 02-15 James Simmons
PS32 02-23 James Simmons
PS33 10-23 James Simmons
PS34 10-25 James Simmons
+18 earlier
PS12 11-22 James Simmons PS13 11-30 James Simmons PS14 07-03 PS15 07-03 PS16 07-03 PS17 07-03 PS18 07-03 PS19 07-04 PS20 08-07 PS21 08-08 James Simmons PS22 09-27 PS23 10-17 PS24 11-12 James Simmons PS25 12-13 James Simmons PS26 12-13 James Simmons PS27 12-14 James Simmons PS28 12-20 James Simmons PS29 12-28 James Simmonsyour previous vote: +1 on PS30 (2024-02-05 23:54) — now at PS34
threads: 1 need your reply · 1 waiting on others · 0 own notes · 0 bot
reply Oleg Drokin tracefile.c:189 — I am nto sure where exactly ther's some sort of a calculation error, but I have a whole bunch of this message triggering for seemingly rando
Oleg Drokin
I am nto sure where exactly ther's some sort of a calculation error, but I have a whole bunch of this message triggering for seemingly random prints all around (tend to be longish)in master-next (this is where I am carrying this patch for a while) even though this patch itself did nto trigger it. Example: http://testing.linuxhacker.ru/lustre-reports/35860/testresults/sanity2-ldiskfs-DNE-centos7_x86_64-centos7_x86_64/oleg342-server-console.txt [ 2711.693691] Lustre: DEBUG MARKER: == sanity test 103e: inheritance of big amount of default ACLs ========================================================== 15:41:10 (1695584470) [ 2930.646958] Lustre: lustre-MDT0000: Client 229219ca-e0b5-499a-9ab0-176123ac3994 (at 192.168.203.42@tcp) reconnecting [ 3211.379426] Lustre: format at ldlm_lib.c:3286:target_send_reply_msg doesn't end in newline [ 3211.806304] Lustre: format at service.c:2323:ptlrpc_server_handle_request doesn't end in newline [ 3211.984069] Lustre: format at ldlm_resource.c:1799:ldlm_resource_dump doesn't end in newline [ 3212.219257] Lustre: format at ldlm_resource.c:1660:ldlm_resource_add_lock doesn't end in newline
owner Neil Brown · uploader James Simmons · PS34 uploaded 739d ago · NEW · open in Gerrit ↗
commit message
LU-14428 libcfs: replace tracefile buffer with ring_buffer Linux has a generic ring-buffer API which uses minimal locking and allows entries to be appended from any context. This is essentially the same functionality provided by trace_data abstraction in tracefile.c, though with less locking overhead. This patch removes the trace_data support and switches to use ring_buffer. The API functionality is not identical so some adjustments need to be made. In particular once an entry in the log has been reserved, it is not possible to reduce the size of the reservation, only to use it or discard it, where discarding might result in the space being wasted in the rare case that more space is reserved from a different context (e.g. interrupt). So instead we use a modest sized on-stack buffer to hold the formatted result, and strcpy() that to a ring_buffer. If the on-stack buffer isn't big enough (approximately 20% of messages in some testings) we need to format a second time, though we do that less often than the current code. The strcpy should be fast compared to vsprintf so this should be a net win. ring_buffer doesn't record whether a message was generated in interrupt or process context and the information is not generally useful, so that field in the ptldebug_header is now always set to zero. The pages stored in ring_buffer are not the same format as are expected by user-space, so we cannot extract whole pages and copy them to the file, but instead extract individual entries and write them to the file. Similarly, pages cannot be moved to the daemon_list, but the contents need to be copied. Also discard libcfs_debug_binary as it is ALWAYS 1 and the code would be buggy if it were zero. Signed-off-by: Mr NeilBrown <neilb@suse.de> Change-Id: Iab259c0538e970f5a77d15c453d72bf378c59c32
41683
master
J –B ✗T –R 0/2
LU-14439 utils: skip server mount libs on client
carrying Andreas Dilger · build failure (#111134)
stalled 456d
S +13 −13
456d
LU-14439 utils: skip server mount libs on client
carrying Andreas Dilger · build failure (#111134)
stalled 456d
S +13 −13
456d
build #111134 FAILURE
patchsets:
PS11 01-31
PS12 10-03
PS13 10-04
PS14 10-10
PS15 02-18 James Simmons
+5 earlier
PS6 10-23 PS7 10-24 PS8 10-24 PS9 11-08 PS10 11-08owner Andreas Dilger · uploader James Simmons · PS15 uploaded 623d ago · NEW · open in Gerrit ↗
commit message
LU-14439 utils: skip server mount libs on client Do not include ldiskfs or zfs files in the Makefile when "./configure --disable-server" is used, or if configure does not detect any server-side support. Move server-side utilities under server conditionals. Test-Parameters: trivial Signed-off-by: Andreas Dilger <adilger@whamcloud.com> Change-Id: I244e10dfaee3470e9ad48e78dcb8d0d18f3ebbe5
44114
master
J ✓B ✓T ✗1R +1/2
LU-14799 test: setup and tear down stand alone MGS for conf-sanity
mine enforced failed: custom-102
stalled 456d
XS +4 −1
456d
LU-14799 test: setup and tear down stand alone MGS for conf-sanity
mine enforced failed: custom-102
stalled 456d
XS +4 −1
456d
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-102 | CentOS 8.3/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
build #81635 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
no vote yet: Elena
owner James Simmons · uploader James Nunez · PS3 uploaded 1952d ago · NEW · open in Gerrit ↗
commit message
LU-14799 test: setup and tear down stand alone MGS for conf-sanity While running conf-sanity I found if I have a stand alone MGS server it doesn't even run. For setup() just start the MGS server if stand alone and shut down the stand alone MGS when stop_mds() is called just in case someone forgets to call stop_mgs(). Test-Parameters: trivial testlist=conf-sanity Test-Parameters: standalonemgs=true testlist=conf-sanity Change-Id: Ifc8794e2c9fbb489183e4f205f0b8b9766e13160 Signed-off-by: James Simmons <jsimmons@infradead.org>
45029
master
J !B ✓T ✗5R 0/2
LU-15030 osp: add debugfs for sync progress
reviewing Hongchao Zhang · PS2→PS6 since your -1 — your objection was dropped
stalled 456d
S +31 −0
456d
LU-15030 osp: add debugfs for sync progress
reviewing Hongchao Zhang · PS2→PS6 since your -1 — your objection was dropped
stalled 456d
S +31 −0
456d
PS2→PS6 since your -1 — your objection was dropped
blocked on the owner: enforced tests failed
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 | CentOS 8.3/x86_64 | ran 7 tests. 2 tests failed: runtests, replay-dual. | session |
| review-dne-part-4 | CentOS 8.3/x86_64 | ran 9 tests. 1 tests failed: sanity-flr. | session |
| review-dne-part-5 | CentOS 8.3/x86_64 | ran 6 tests. 1 tests failed: sanityn. | session |
| review-dne-zfs-part-4 | CentOS 8.3/x86_64 | ran 9 tests. 1 tests failed: sanity-quota. | session |
| review-zfs | CentOS 8.3/x86_64 | ran 8 tests. 1 tests failed: sanity-quota. | session |
build #83618 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger
patchsets:
PS2 09-23
PS3 09-30
PS4 10-11
PS5 10-13
PS6 10-14
+1 earlier
PS1 09-23your previous vote: -1 on PS2 (2021-09-24 14:33) — now at PS6
owner Hongchao Zhang · uploader Hongchao Zhang · PS6 uploaded 1847d ago · NEW · open in Gerrit ↗
commit message
LU-15030 osp: add debugfs for sync progress During sync between MDT and OSTs, it could need much more time if the load on OST is very high, it will be better to have some some kind of debugfs interface to know the sync progress and make sure the sync is moving forward. Signed-off-by: Hongchao Zhanng <hongchao@whamcloud.com> Change-Id: Id24f3a481c5d28b7dc9714a80905541c88cf0f5a
49165
master
J !B ✓T ✗24R 0/2
LU-12514 ptlrpc: move thread creation out of module initialization
mine enforced failed: review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-part-7, review-dne-part-8, review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-ldiskfs, review-ldiskfs-arm, review-zfs
stalled 456d
M +86 −34
456d
LU-12514 ptlrpc: move thread creation out of module initialization
mine enforced failed: review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-part-7, review-dne-part-8, review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-ldiskfs, review-ldiskfs-arm, review-zfs
stalled 456d
M +86 −34
456d
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 8.8/x86_64 | ran 6 tests. 2 tests failed: sanity-pfl, sanity. | session |
| review-dne-part-2 | RHEL 8.8/x86_64 | ran 13 tests. 4 tests failed: sanity-sec, sanity-lfsck, runtests, replay-dual. | session |
| review-dne-part-3 | RHEL 8.8/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-4 | RHEL 8.8/x86_64 | ran 13 tests. 3 tests failed: sanity-quota, mmp, insanity. | session |
| review-dne-part-5 | RHEL 8.8/x86_64 | ran 8 tests. 2 tests failed: sanityn, sanity-scrub. | session |
| review-dne-part-6 | RHEL 8.8/x86_64 | ran 6 tests. 2 tests failed: ost-pools, replay-single. | session |
| review-dne-part-7 | RHEL 8.8/x86_64 | ran 4 tests. 1 tests failed: sanity-pcc. | session |
| review-dne-part-8 | RHEL 8.8/x86_64 | ran 4 tests. 1 tests failed: replay-dual. | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.8/x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.8/x86_64 | ran 7 tests. 2 tests failed: sanity-selinux, sanity-sec. | session |
| review-dne-zfs-part-1 | RHEL 8.8/x86_64 | ran 6 tests. 2 tests failed: sanity-pfl, sanity. | session |
| review-dne-zfs-part-2 | RHEL 8.8/x86_64 | ran 13 tests. 4 tests failed: sanity-sec, sanity-lfsck, runtests, replay-dual. | session |
| review-dne-zfs-part-3 | RHEL 8.8/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-4 | RHEL 8.8/x86_64 | ran 13 tests. 3 tests failed: sanity-quota, mmp, insanity. | session |
| review-dne-zfs-part-5 | RHEL 8.8/x86_64 | ran 8 tests. 2 tests failed: sanityn, sanity-scrub. | session |
| review-dne-zfs-part-6 | RHEL 8.8/x86_64 | ran 6 tests. 2 tests failed: ost-pools, replay-single. | session |
| review-dne-zfs-part-7 | RHEL 8.8/x86_64 | ran 4 tests. 1 tests failed: sanity-pcc. | session |
| review-ldiskfs | RHEL 8.8/x86_64 | ran 7 tests. 2 tests failed: sanity-lnet, sanity. | session |
| review-ldiskfs | RHEL 9.2/x86_64 | ran 7 tests. 2 tests failed: sanity-lnet, sanity. | session |
| review-ldiskfs | RHEL 8.8/x86_64, SLES 15.4/x86_64 | ran 7 tests. 2 tests failed: sanity-lnet, sanity. | session |
| review-ldiskfs | RHEL 8.8/x86_64, SLES 15.5/x86_64 | ran 7 tests. 2 tests failed: sanity-lnet, sanity. | session |
| review-ldiskfs | RHEL 8.8/x86_64, RHEL 9.2/x86_64 | ran 7 tests. 2 tests failed: sanity-lnet, sanity. | session |
| review-ldiskfs-arm | RHEL 8.8/aarch64, RHEL 8.8/x86_64 | ran 10 tests. 3 tests failed: sanity-sec, sanity-lnet, sanity. | session |
| review-zfs | RHEL 8.8/x86_64 | ran 18 tests. 6 tests failed: sanity-lsnapshot, insanity, replay-ost-single, replay-single, sanity-flr, sanit | session |
4 optional test failure(s) — informational
build #100841 SUCCESS · tests all Maloo sessions
no vote yet: Serguei Smirnov, Neil Brown
patchsets:
PS7 05-21
PS8 05-22
PS9 05-22
PS10 12-13
PS11 12-14
+6 earlier
PS1 11-15 PS2 12-08 PS3 12-12 Neil Brown PS4 02-05 PS5 02-05 PS6 04-05owner James Simmons · uploader James Simmons · PS11 uploaded 1056d ago · NEW · open in Gerrit ↗
commit message
LU-12514 ptlrpc: move thread creation out of module initialization When the ptlrpc module is loaded, it calls ptlrpc_init_portals() which starts ptlrpcd threads, and starts the pinger work-queue. We don't need these threads until the module is actually being used, such as when a lustre filesystem is mounted. So move the thread creation into new ptlrpc_inc_ref() (modelled on ptlrpcd_incref()), and call that when needed, such as at mount time. Linux-commit: 26f7a294e5ecd46856cb9f5b718e995f1ec46779 Linux-commit: ffd87a7b1efeb8f56a229d2ab06d71be7d932d52 Change-Id: Iee077c7dfdeb67ceeeacefc4e6c7f70efef2a864 Signed-off-by: Mr. NeilBrown <neilb@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
40878
master
J –B ✓T ✓R -2/2−
LU-9897 build: add real versioning to liblustreapi
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 456d
XS +7 −2
456d
LU-9897 build: add real versioning to liblustreapi
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 456d
XS +7 −2
456d
needs rebase — checkpatch: cannot be cherry-picked
Andreas Dilger voted -1
no vote yet from Olaf Weber
build #18099 SUCCESS
reviews:
Andreas Dilger -1
no vote yet: Olaf Weber
owner James Simmons · uploader James Simmons · PS2 uploaded 2159d ago · NEW · open in Gerrit ↗
commit message
LU-9897 build: add real versioning to liblustreapi Originally we added -version-info to increment liblustreapi version every time a new abi was added or changed. This never happened so lets number liblustreapi based the Lustre sovftware version. Test-Parameters: trivial Change-Id: I9f638c0a95b72329325b774d23f73239fcbade03 Signed-off-by: James Simmons <jsimmons@infradead.org>
32475
master
J ✗2B ✓T ✗9R -1/2−
LU-2096 sysfs: symlinks for forward compatibility
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
2 unique failures
stalled 456d
M +101 −12
456d
LU-2096 sysfs: symlinks for forward compatibility
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
2 unique failures
stalled 456d
M +101 −12
456d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 2 test failures unique to this patch — conf-sanity3@ldiskfs+DNE:test_76a, conf-sanity3@zfs:test_76a
enforced failed: review-dne-part-4, review-dne-part-5, review-dne-selinux-ssk-part-2, review-dne-zfs-part-4, review-dne-zfs-part-5, review-ldiskfs-ubuntu, review-zfs
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity3@ldiskfs+DNE:test_76a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity3@zfs:test_76a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-4 | RHEL 8.10 / x86_64 | ran 9 tests. 3 tests failed: sanity-quota, sanity-flr, replay-ost-single. | session |
| review-dne-part-4 | RHEL 9.4 / x86_64 | ran 9 tests. 3 tests failed: sanity-quota, sanity-flr, replay-ost-single. | session |
| review-dne-part-5 | RHEL 9.4 / x86_64 | ran 6 tests. 2 tests failed: sanityn, recovery-small. | session |
| review-dne-part-5 | RHEL 8.10 / x86_64 | ran 6 tests. 1 tests failed: recovery-small. | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: recovery-small. | session |
| review-dne-zfs-part-4 | RHEL 8.10 / x86_64 | ran 9 tests. 3 tests failed: sanity-quota, sanity-flr, replay-ost-single. | session |
| review-dne-zfs-part-5 | RHEL 8.10 / x86_64 | ran 6 tests. 1 tests failed: recovery-small. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
| review-zfs | RHEL 8.10 / x86_64 | ran 10 tests. 3 tests failed: replay-ost-single, sanity-flr, sanity-quota. | session |
4 optional test failure(s) — informational
build #111003 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Mikhail Pershin, Alex Zhuravlev
patchsets:
PS5 01-03
PS6 01-07
PS7 01-15
PS8 01-17
PS9 02-14
owner James Simmons · uploader James Simmons · PS9 uploaded 628d ago · NEW · open in Gerrit ↗
commit message
LU-2096 sysfs: symlinks for forward compatibility
Currently, the "ofd" device is still named "obdfilter" in the Lustre
configuration and in /sys/fs/lustre. It would be better to name it
"ost" which is has been the long term goal.
The per-OST device statistics should really be under "ost/{target}",
like the per-MDT statistics are under "mdt/{target}" already in 2.x.
Similarly, the "OSS" statistics have always been under "ost/OSS", but
would be better in their own "oss" subdirectory much like what is done
for "MDS" statistics.
Add symlinks for "oss -> ost/OSS" and "ost -> obdfilter" to keep
older compatibility. In time we can remove those symlinks.
Change-Id: I8c4c81eb55f2880edf1d7811395c4837f50e01d5
Signed-off-by: James Simmons <jsimmons@infradead.org>
23552
master
J –B ✓T ✗7R +0/2−
LU-8709 llite: implement parallel asynchronous readahead
reviewing Li Xi · PS10→PS14 since your -1 — your objection was dropped
needs rebase
stalled 457d
XL +1467 −1103
457d
LU-8709 llite: implement parallel asynchronous readahead
reviewing Li Xi · PS10→PS14 since your -1 — your objection was dropped
needs rebase
stalled 457d
XL +1467 −1103
457d
PS10→PS14 since your -1 — your objection was dropped
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | CentOS 7.0/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-dne-part-2 | CentOS 7.0/x86_64 | ran 10 tests. 1 tests failed: sanity-hsm. | session |
| review-dne-part-4 crashed | CentOS 7.0/x86_64 | ran 12 tests. 1 tests failed: sanity-flr. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-1 | CentOS 7.0/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-2 | CentOS 7.0/x86_64 | ran 10 tests. 1 tests failed: sanity-hsm. | session |
| review-ldiskfs | CentOS 7.0/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-zfs crashed | CentOS 7.0/x86_64 | ran 10 tests. 1 tests failed: sanity-flr. %% THIS TEST SESSION CRASHED %% | session |
2 optional test failure(s) — informational
build #60987 SUCCESS
reviews:
Andreas Dilger +1
no vote yet: Qian Yingjin, Jinshan Xiong, Zhenyu Xu, Patrick Farrell
your previous vote: -1 on PS10 (2018-12-26 15:11) — now at PS14
owner Li Xi · uploader Wang Shilong · PS14 uploaded 2860d ago · NEW · open in Gerrit ↗
commit message
LU-8709 llite: implement parallel asynchronous readahead This patch proposes a new design of Lustre readahead framework, parallel-readahead, which implements a similar algorithm like current Linux kernel's on-demand readahead, but in a way that is more optimized for the characteristics of Lustre, more extendable for differet I/O patterns, and more adaptable to the high bandwidth of Lustre since data could be prefetched in parallel by multiple threads. Like the on-demand readahead, the parallel-readahead maintains a "readahead window" consisting of a portion of the file starting with the application's last read. Pages inside the readahead window are either already in the page cache, or being prefetched into the page cache of the client. The window moves forward as the reading of the application moves forward. The parallel-readahead framework prefetches more agressively than on-demand readahead using a large readahead window, since Lustre usually has more overhead than local file systems. The parallel-readahead can do real asynchronous prefetch in parallel by multiple threads. The reason of this implement is that, if all prefetching is done in the process of the application that issued read() syscall, the overhead caused by logic of Lustre client side would become the bottleneck. The parallel-readahead framework provides an extendable I/O pattern detection mechanism which currently has detection algorithms for both sequential read and stride read. And more pattern detection algorithms and corresponding prefetching policies can be added into the framework for other I/O patterns, including random read, semisequential read, backward read, interleaved read, etc. Todo: make max_read_ahead_whole_mb really work Signed-off-by: Li Xi <lixi@ddn.com> Signed-off-by: Wang Shilong <wshilong@whamcloud.com> Change-Id: Ida399b9d0b499ba3f6bd08d7bb4528132e8e98e4
58599
master
J !B ✓T ✗31R 0/2
LU-18041 msg: use UUIDs instead of NIDs for client setup
mine enforced failed: review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-part-7, review-dne-part-8, review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-ldiskfs, review-ldiskfs-ubuntu, review-zfs
IPv6
stalled 463d
S +10 −18
463d
LU-18041 msg: use UUIDs instead of NIDs for client setup
mine enforced failed: review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-part-7, review-dne-part-8, review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-ldiskfs, review-ldiskfs-ubuntu, review-zfs
IPv6
stalled 463d
S +10 −18
463d
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-1 | RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-2 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-2 | RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-3 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-3 | RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-4 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-4 | RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-5 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-5 | RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-6 | RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-6 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-7 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-7 | RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-8 | RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-8 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-1 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-2 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-3 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-4 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-5 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-6 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-7 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-ldiskfs | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-ldiskfs | RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-ldiskfs | RHEL 8.10 / x86_64, SLES 15.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-zfs | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
13 optional test failure(s) — informational
build #112103 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Mikhail Pershin
owner James Simmons · uploader James Simmons · PS1 uploaded 583d ago · NEW · open in Gerrit ↗
commit message
LU-18041 msg: use UUIDs instead of NIDs for client setup For client setups we are sending NID strings instead of actual UUIDs. This is incorrect. Change-Id: I7ebd1bfe29a5e59c989b9fa5e4166f19cb2336ce Signed-off-by: James Simmons <jsimmons@infradead.org>
39337
master
J !B ✓T ✓R -1/2−
LU-11621 utils: optimize lustre_rsync with copy_file_range()
mine John Hammond voted -1
stalled 463d
S +16 −1
463d
LU-11621 utils: optimize lustre_rsync with copy_file_range()
mine John Hammond voted -1
stalled 463d
S +16 −1
463d
John Hammond voted -1
no vote yet from Shaun Tancheff, Andreas Dilger
build #17526 SUCCESS
reviews:
John Hammond -1
no vote yet: Shaun Tancheff, Andreas Dilger
owner James Simmons · uploader James Simmons · PS5 uploaded 2189d ago · NEW · open in Gerrit ↗
commit message
LU-11621 utils: optimize lustre_rsync with copy_file_range() Newer kernels and glibc offer copy_file_range() which avoids a context switch needed with read() + write() for file data copying. In the future Lustre can look to optimize this copy on the server backend. Updating lustre_rsync to use this new functionality which should give a performance boost. Test-Parameters: trivial testlist=lustre-rsync-test Change-Id: Ibd67847f8d876075f77e14e2721d22d4905cb9ff Signed-off-by: James Simmons <jsimmons@infradead.org>
45152
master
J !B ✓T ✗1R 0/2
LU-15073 ptlrpc: An expired request isn't marked timedout
reviewing Andriy Skulysh · PS2→PS6 since your -1 — your objection was dropped
stalled 463d
2 unresolved
S +28 −20
463d
LU-15073 ptlrpc: An expired request isn't marked timedout
reviewing Andriy Skulysh · PS2→PS6 since your -1 — your objection was dropped
stalled 463d
2 unresolved
S +28 −20
463d
PS2→PS6 since your -1 — your objection was dropped
blocked on the owner: enforced tests failed
janitor run: 4 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 crashed | RHEL 9.3 / x86_64 | ran 9 tests. 1 tests failed: sanity-lfsck. %% THIS TEST SESSION CRASHED %% | session |
2 optional test failure(s) — informational
build #109462 SUCCESS · tests all Maloo sessions
no vote yet: Shaun Tancheff, Neil Brown, Vitaly Fertman, Alexander Boyko, Alex Zhuravlev
patchsets:
PS2 10-13
PS3 02-04 Shaun Tancheff
PS4 02-05 Shaun Tancheff
PS5 02-06 Shaun Tancheff
PS6 12-08 Shaun Tancheff
+1 earlier
PS1 10-07your previous vote: -1 on PS2 (2021-10-21 13:56) — now at PS6
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Shaun Tancheff client.c:2551 — Yes I think that should be fine.
Neil Brown
This (and also below) is a little odd. If timeout is -1 - so nothing in set_requests lists, then timeout is 1. If timeout is zero - all requests have expired - them timeout is 0. It would make sense to me for those to both be the same. Could we make it " < 0 ? 0 : timeout" ??
Shaun Tancheff
Yes I think that should be fine.
reply Shaun Tancheff ptlrpcd.c:494 — Hmm. this seems to be a problem.
Shaun Tancheff
Hmm. this seems to be a problem.
owner Andriy Skulysh · uploader Shaun Tancheff · PS6 uploaded 696d ago · NEW · open in Gerrit ↗
commit message
LU-15073 ptlrpc: An expired request isn't marked timedout New requests can be added to pc_set. It will receive wakups and timeout can never occur. Perform check for expired requests on each round before ptlrpcd_check(). HPE-bug-id: LUS-8784 Signed-off-by: Andriy Skulysh <c17819@cray.com> Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: I46f7ab1812601b1c3a78b62a41a578cdac568bd5
49348
master
J ✓B ✓T –R -1/2−
LU-12251 tests: re-enable running sanity-flr for PPC
mine Andreas Dilger voted -1
stalled 463d
XS +1 −2
463d
LU-12251 tests: re-enable running sanity-flr for PPC
mine Andreas Dilger voted -1
stalled 463d
XS +1 −2
463d
Andreas Dilger voted -1
build OK — testing in progress (typically 6–14h)
build #91089 SUCCESS
reviews:
Andreas Dilger -1
no vote yet: xinliang
patchsets:
PS1 12-08
PS2 12-08
PS3 12-08
PS4 12-10
owner James Simmons · uploader James Simmons · PS4 uploaded 1425d ago · NEW · open in Gerrit ↗
commit message
LU-12251 tests: re-enable running sanity-flr for PPC Its been a long time since PPC had issues with FLR test. Re-enable those test. We do keep test 50a disabled since it fails on ARM and PPC platforms. Test-Parameters: trivial clientarch=ppc64 testlist=sanity-flr Change-Id: Ia1007f6213b530d4a5695ff6143be14ac2736a6c Signed-off-by: James Simmons <jsimmons@infradead.org>
49349
master
J ✓B ✓T ✓R -1/2−
LU-12252 tests: re-enable running sanity-hsm for PPC
mine Andreas Dilger voted -1
stalled 463d
S +0 −22
463d
LU-12252 tests: re-enable running sanity-hsm for PPC
mine Andreas Dilger voted -1
stalled 463d
S +0 −22
463d
build #91076 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger -1
no vote yet: Etienne AUJAMES, xinliang, Jian Yu
patchsets:
PS1 12-08
PS2 12-08
PS3 12-08
owner James Simmons · uploader James Simmons · PS3 uploaded 1426d ago · NEW · open in Gerrit ↗
commit message
LU-12252 tests: re-enable running sanity-hsm for PPC Its been a long time since PPC had issues with HSM test. Re-enable those test. Test-Parameters: trivial clientdistro=el8.6 clientarch=ppc64le testlist=sanity-hsm Change-Id: Ibe18524f6a1a92b66a2b6f9454374910761e8344 Signed-off-by: James Simmons <jsimmons@infradead.org>
50900
master
J ✓B ✓T ✗1R 0/2
LU-0000 test: base code
mine enforced failed: custom-102
stalled 463d
XS +1 −1
463d
LU-0000 test: base code
mine enforced failed: custom-102
stalled 463d
XS +1 −1
463d
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-102 failed 2× | CentOS 7.9/x86_64, RHEL 8.7/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
build #94728 SUCCESS · tests all Maloo sessions
patchsets:
PS1 05-10
PS2 05-10
PS3 05-10
owner James Simmons · uploader James Simmons · PS3 uploaded 1274d ago · NEW · open in Gerrit ↗
commit message
LU-0000 test: base code test patch on this Test-Parameters: trivial testlist=sanity-lnet Test-Parameters: serverversion=2.12 serverdistro=el7.9 testlist=runtests Test-Parameters: clientversion=2.12 testlist=runtests Change-Id: Ic52e9934283f34fc635d41a656b6cc0dff088a58 Signed-off-by: James Simmons <jsimmons@infradead.org>
52199
master
J !B ✓T ✗3R 0/2
LU-17060 tests: verify conf-sanity 21c passes
mine enforced failed: custom-1001, review-dne-part-4, review-dne-part-8
stalled 463d
XS +1 −1
463d
LU-17060 tests: verify conf-sanity 21c passes
mine enforced failed: custom-1001, review-dne-part-4, review-dne-part-8
stalled 463d
XS +1 −1
463d
janitor run: 1 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 9.3/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-4 | RHEL 9.3/x86_64 | ran 9 tests. 1 tests failed: replay-ost-single. | session |
| review-dne-part-8 | RHEL 9.3/x86_64 | ran 4 tests. 1 tests failed: replay-dual. | session |
1 optional test failure(s) — informational
build #105391 SUCCESS · tests all Maloo sessions
patchsets:
PS1 08-31
PS2 11-30
PS3 04-10
PS4 05-31
PS5 06-11
owner James Simmons · uploader James Simmons · PS5 uploaded 875d ago · NEW · open in Gerrit ↗
commit message
LU-17060 tests: verify conf-sanity 21c passes Make sure patch 52053 fixes the issue. Test-Parameters: testlist=conf-sanity env=ONLY=21c,ONLY_REPEAT=100 Change-Id: I1092c90b15d0cdc464e251dc07ea310828ce4d15 Signed-off-by: James Simmons <jsimmons@infradead.org>
55878
master
J ✗97B ✓T ✗25R 0/2
LU-18041 msg: use UUIDs instead of NIDs for OSP setup
mine janitor: 97 test failures unique to this patch — conf-sanity1@ldiskfs+DNE:test_1, conf-sanity1@ldiskfs+DNE:test_2, conf-sanity1@ldiskfs+DNE:test_3 +94 more
97 unique failures
IPv6
stalled 463d
S +4 −9
463d
LU-18041 msg: use UUIDs instead of NIDs for OSP setup
mine janitor: 97 test failures unique to this patch — conf-sanity1@ldiskfs+DNE:test_1, conf-sanity1@ldiskfs+DNE:test_2, conf-sanity1@ldiskfs+DNE:test_3 +94 more
97 unique failures
IPv6
stalled 463d
S +4 −9
463d
janitor: 97 test failures unique to this patch — conf-sanity1@ldiskfs+DNE:test_1, conf-sanity1@ldiskfs+DNE:test_2, conf-sanity1@ldiskfs+DNE:test_3 +94 more
enforced failed: review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-part-7, review-dne-part-8, review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-6, review-dne-zfs-part-7, review-ldiskfs-ubuntu
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity1@ldiskfs+DNE:test_1 | seen in 5 other reviews |
| conf-sanity1@ldiskfs+DNE:test_2 | seen in 8 other reviews |
| conf-sanity1@ldiskfs+DNE:test_3 | seen in 12 other reviews |
| conf-sanity1@ldiskfs+DNE:test_4 | seen in 18 other reviews |
| conf-sanity1@ldiskfs+DNE:test_5a | seen in 21 other reviews |
| conf-sanity1@ldiskfs+DNE:test_5c | seen in 16 other reviews |
| conf-sanity1@ldiskfs+DNE:test_5d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@ldiskfs+DNE:test_5e | seen in 19 other reviews |
| conf-sanity1@ldiskfs+DNE:test_5h | seen in 24 other reviews |
| conf-sanity1@ldiskfs+DNE:test_5i | seen in 26 other reviews |
| conf-sanity1@ldiskfs+DNE:test_6 | seen in 28 other reviews |
| conf-sanity1@ldiskfs+DNE:test_7 | seen in 33 other reviews |
| conf-sanity1@ldiskfs+DNE:test_8 | seen in 34 other reviews |
| conf-sanity1@ldiskfs+DNE:test_9 | seen in 36 other reviews |
| conf-sanity1@ldiskfs+DNE:test_10a | seen in 39 other reviews |
| conf-sanity1@ldiskfs+DNE:test_17 | seen in 41 other reviews |
| conf-sanity1@ldiskfs+DNE:test_23a | seen in 12 other reviews |
| conf-sanity1@ldiskfs+DNE:test_23b | seen in 14 other reviews |
| conf-sanity1@ldiskfs+DNE:test_25 | seen in 3 other reviews |
| conf-sanity1@ldiskfs+DNE:test_26 | seen in 4 other reviews |
| conf-sanity1@ldiskfs+DNE:test_27a | seen in 2 other reviews |
| conf-sanity1@ldiskfs+DNE:test_27b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@ldiskfs+DNE:test_28A | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@ldiskfs+DNE:test_28a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@ldiskfs+DNE:test_28b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@ldiskfs+DNE:test_28c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@ldiskfs+DNE:test_29 | seen in 2 other reviews |
| conf-sanity1@ldiskfs+DNE:test_30a | seen in 2 other reviews |
| conf-sanity1@ldiskfs+DNE:test_30b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity-slow@ldiskfs+DNE:test_69 | seen in 6 other reviews |
| sanity2@ldiskfs+DNE:test_134a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_134b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_150a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_150bb | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_150c | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_150d | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_150e | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_150g | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_151 | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_154A | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_154B | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_154a | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_154b | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_154f | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_154g | seen in 8 other reviews |
| sanity2@ldiskfs+DNE:test_154h | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_154i | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_155e | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_155f | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_155g | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_155h | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_156 | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_160a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160e | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160f | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160g | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160h | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160i | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160j | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160k | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160l | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160m | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160n | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160o | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160p | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160q | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160s | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160t | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160u | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_161a | seen in 8 other reviews |
| sanity2@ldiskfs+DNE:test_161b | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_161c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_161d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_162a | seen in 4 other reviews |
| sanity2@ldiskfs+DNE:test_162b | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_162c | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_165b | seen in 4 other reviews |
| sanity2@ldiskfs+DNE:test_165d | seen in 4 other reviews |
| sanity2@ldiskfs+DNE:test_165e | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_169 | seen in 5 other reviews |
| sanity2@ldiskfs+DNE:test_170a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_170b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_172 | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_182b | seen in 5 other reviews |
| sanity2@ldiskfs+DNE:test_183 | seen in 4 other reviews |
| sanity2@ldiskfs+DNE:test_185 | seen in 10 other reviews |
| sanity2@ldiskfs+DNE:test_185a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_187a | seen in 4 other reviews |
| sanity2@ldiskfs+DNE:test_187b | seen in 4 other reviews |
| sanity3@ldiskfs+DNE:test_901 | seen in 1 other review |
| sanity3@ldiskfs+DNE:test_904 | seen in 1 other review |
| sanity3@ldiskfs+DNE:test_905 | seen in 2 other reviews |
| sanity3@ldiskfs+DNE:test_907 | seen in 7 other reviews |
| sanity3@ldiskfs+DNE:test_908b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-1 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-part-2 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-2 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-3 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-3 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-4 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-4 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-5 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-5 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-6 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-6 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-7 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-7 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-8 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-8 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-2 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-3 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-4 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-6 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-7 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
2 optional test failure(s) — informational
build #114199 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Mikhail Pershin, Timothy Day
patchsets:
PS4 01-14
PS5 01-15
PS6 06-08
PS7 06-08 Janitor Bot
PS8 06-11
+3 earlier
PS1 07-28 PS2 08-05 PS3 08-17owner James Simmons · uploader James Simmons · PS8 uploaded 511d ago · NEW · open in Gerrit ↗
commit message
LU-18041 msg: use UUIDs instead of NIDs for OSP setup The mgs when processing logs for OSP uses NIDs instead of UUIDs for LCFG_SETUP. This is wrong and NIDs can easily over flow the obd_uuid structure. A side effect of this mistake is that the ptlrpc conn to UUID mapping just ends up being a NID looking up a NID which happens to be itself. That is very wrong. Change from NID string to the real UUID. Test-Parameters: env=FORCE_LARGE_NID=true,LOAD_MODULES_REMOTE=true Change-Id: Ie291b2fd85b6096779d7cf5ee94060edc0e3a590 Signed-off-by: James Simmons <jsimmons@infradead.org>
53594
master
J ✗4B ✓T ✗2R -1/2−
LU-10391 tests: debug ping failures
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
4 unique failures
IPv6
stalled 670d
XS +1 −1
670d
LU-10391 tests: debug ping failures
mine needs rebase — checkpatch: cannot be cherry-picked
needs rebase
4 unique failures
IPv6
stalled 670d
XS +1 −1
670d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 4 test failures unique to this patch — sanity-lnet@ldiskfs+DNE:test_253, sanity-lnet@ldiskfs+DNE:test_254, sanity-lnet@zfs:test_253 +1 more
enforced failed: custom-1001, review-ldiskfs-dne
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-lnet@ldiskfs+DNE:test_253 | seen in 1 other review |
| sanity-lnet@ldiskfs+DNE:test_254 | seen in 1 other review |
| sanity-lnet@zfs:test_253 | seen in 1 other review |
| sanity-lnet@zfs:test_254 | seen in 1 other review |
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 9.3 / x86_64 | ran 3 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-dne | RHEL 9.3 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
build #108441 SUCCESS · tests all Maloo sessions
no vote yet: Chris Horn
patchsets:
PS2 01-04
PS3 01-05
PS4 04-04
PS5 06-25
PS6 10-22
+1 earlier
PS1 01-04owner James Simmons · uploader James Simmons · PS6 uploaded 743d ago · NEW · open in Gerrit ↗
commit message
LU-10391 tests: debug ping failures Re-enable failing test. Test-Parameters: trivial testlist=sanity-lnet env=ONLY=253,ONLY_REPEAT=10 Change-Id: I1a55149adbc1413dc26eb004d2832baf96ead3fd Signed-off-by: James Simmons <jsimmons@infradead.org>
15713
master
J –B ✓T ✗0R 0/2
LU-6034 lnet: Create a checksum value for LNet package data
mine Maloo voted -1 — tests failed (details on the change)
stalled 4115d
L +194 −74
4115d
LU-6034 lnet: Create a checksum value for LNet package data
mine Maloo voted -1 — tests failed (details on the change)
stalled 4115d
L +194 −74
4115d
no vote yet: Frank Zago
owner James Simmons · uploader James Simmons · PS1 uploaded 4120d ago · NEW · open in Gerrit ↗
commit message
LU-6034 lnet: Create a checksum value for LNet package data Using the check sum selected by the adminstrator for a LNet interface check sum the data being handled by the LNet layer. Change-Id: I069fc3a83ec8392174a5b1c6bfe1fca223e3a3af Signed-off-by: James Simmons <uja.ornl@yahoo.com>
Mentions
0 waiting on you · 0 openUnresolved threads where someone @-mentioned you (username, email or full name) — the pings that drown in Gerrit's email. Red: you have not replied since the ping. Muted: you replied, but the thread is still open, so it stays on the list until someone resolves it. Both clear on the refresh after the thread is resolved.
No unanswered pings — nobody is waiting on a mention.
0 watched
Nothing watched. Add a change above — e.g. after rebasing someone's patch — and its build/test state shows up here.
70 open
▶Failed / broken
(48)
70336
master
J –B ✓T ✗1R 0/2
LU-18687 ptlrpc: handle CONFIG_LUSTRE_FS_SERVER tristate
enforced failed: review-ldiskfs-dne
upstream
pw_shepherd
3 unresolved
M +42 −43
5h
LU-18687 ptlrpc: handle CONFIG_LUSTRE_FS_SERVER tristate
enforced failed: review-ldiskfs-dne
upstream
pw_shepherd
3 unresolved
M +42 −43
5h
enforced failed: review-ldiskfs-dne
3 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-dne | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
build #135255 SUCCESS · tests all Maloo sessions
threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (style) This isn't a bug, but the body is one line and only repeats the subject. It would help to explain why the change is needed: in-tree
Gerrit AI review for Lustre
(style) This isn't a bug, but the body is one line and only repeats the subject. It would help to explain why the change is needed: in-tree Kbuild with =m only defines CONFIG_LUSTRE_FS_SERVER_MODULE, so a plain #ifdef drops the server code. It should also say that out-of-tree builds are unchanged, since config.h defines both macros, and that lustre/ptlrpc/wiretest.c is a generated file being edited by hand.
reply Gerrit AI review for Lustre niobuf.c:295 — (defect) With CONFIG_LUSTRE_FS_SERVER=m, this block is now compiled, but ptlrpc_server_bulk_active() is a static inline that is only defined
Gerrit AI review for Lustre
(defect) With CONFIG_LUSTRE_FS_SERVER=m, this block is now compiled, but ptlrpc_server_bulk_active() is a static inline that is only defined inside `#ifdef CONFIG_LUSTRE_FS_SERVER` in lustre/include/lustre_net.h. When only CONFIG_LUSTRE_FS_SERVER_MODULE is defined, the call is an implicit declaration, and the build fails because of -Werror-implicit-function-declaration.
The same header mismatch also drops the prototypes for other functions this patch now builds: server_bulk_callback() and ptlrpc_prep_bulk_exp() (lustre_net.h), sptlrpc_svc_{prep,wrap,unwrap}_bulk() and sptlrpc_has_gssiam_rules() (lustre_sec.h), and lustre_swab_orphan_ent*() (lustre_swab.h). That gives -Wmissing-prototypes warnings. Should lustre_net.h, lustre_sec.h, lustre_swab.h and the other headers be converted to IS_ENABLED() first?
reply Gerrit AI review for Lustre wiretest.c:272 — (minor) lustre/ptlrpc/wiretest.c is generated by `make newwiretest` from the same wirecheck output as lustre/utils/wiretest.c. After the pre
Gerrit AI review for Lustre
(minor) lustre/ptlrpc/wiretest.c is generated by `make newwiretest` from the same wirecheck output as lustre/utils/wiretest.c. After the previous patch in the series, CHECK_COND_START() emits `#ifdef HAVE_SERVER_SUPPORT`. So the next regeneration will replace every IS_ENABLED() guard here with `#ifdef HAVE_SERVER_SUPPORT`, which is not defined in an in-kernel Kbuild build. It will also restore the blank line removed after the lustre_mdt_attrs guard. Could wirecheck emit a guard that is correct for both copies, so the kernel copy can stay generated instead of hand-edited?
tags: pw_shepherd
owner James Simmons · uploader James Simmons · PS1 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-18687 ptlrpc: handle CONFIG_LUSTRE_FS_SERVER tristate Convert ptlrpc to tristate CONFIG_LUSTRE_FS_SERVER Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Ie12208b585377aec3885c89a67e4197565e86ed7
70332
master
J –B ✓T ✗1R 0/2
LU-18687 fld: handle CONFIG_LUSTRE_FS_SERVER tristate
enforced failed: review-ldiskfs-dne-arm
upstream
CI@PS1
S +8 −9
5h
LU-18687 fld: handle CONFIG_LUSTRE_FS_SERVER tristate
enforced failed: review-ldiskfs-dne-arm
upstream
CI@PS1
S +8 −9
5h
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-dne-arm | RHEL 8.10 / x86_64, Rocky 9.8 / aarch64 | ran 5 tests. 1 tests failed: lnet-selftest. | session |
build #135245 SUCCESS · tests all Maloo sessions
patchsets:
PS1 11-02
PS2 11-02
build/test results are from PS1 — PS2…PS2 changed only the commit message (votes copied, CI not re-run)
owner James Simmons · uploader James Simmons · PS2 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-18687 fld: handle CONFIG_LUSTRE_FS_SERVER tristate Convert fld to tristate CONFIG_LUSTRE_FS_SERVER Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I749ceae35a936daad21a1a0e0078023b534634fe
57877
master
J –B ✓T ✓R +2/2
LU-8066 quota: migrate quota out of procfs
Verified -1 veto by Oleg Drokin
Verified -1
upstream
pw_shepherd
master-next
2 unresolved
L +500 −382
11h
LU-8066 quota: migrate quota out of procfs
Verified -1 veto by Oleg Drokin
Verified -1
upstream
pw_shepherd
master-next
2 unresolved
L +500 −382
11h
Verified -1 veto by Oleg Drokin
2 reviewer comment(s) to address if a respin is needed — last from Gerrit AI review for Lustre
build #134181 SUCCESS · tests all Maloo sessions
reviews:
Arshad Hussain +1 · Timothy Day +1
no vote yet: Shaun Tancheff, Sergey Cheremencev, Andreas Dilger, Oleg Drokin
patchsets:
PS30 10-05
PS31 10-05
PS32 10-05
PS33 10-06
PS34 10-21
+29 earlier
PS1 01-24 PS2 02-28 PS3 07-27 PS4 07-30 PS5 08-20 PS6 01-15 PS7 04-20 PS8 08-14 PS9 08-14 PS10 08-14 PS11 08-30 PS12 08-30 PS13 08-30 PS14 09-01 PS15 09-03 PS16 09-03 PS17 09-03 PS18 09-04 PS19 09-05 PS20 09-07 PS21 09-07 PS22 09-07 PS23 09-14 PS24 09-20 PS25 09-22 PS26 09-22 PS27 09-22 PS28 09-23 PS29 09-23threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (minor) If the patch is refreshed, could the body name the parameters that moved and where they now live? That would make the change findabl
Gerrit AI review for Lustre
(minor) If the patch is refreshed, could the body name the parameters that moved and where they now live? That would make the change findable with git log, and it would help whoever has to update monitoring scripts. For example:
- sysfs: `osd-*.*.quota_slave{,_md,_dt}.{enabled,force_reint,timeout,verion_mismatch_timeout,root_prj_enable}` and `qmt.*.*.soft_least_qunit`
- debugfs: `info`, `acct_*`, `limit_*` and `glb-*`
The body could also mention two other behaviour changes:
- /proc/fs/lustre/qmt is now gone unconditionally, and /proc/fs/lustre/osd-* only exists when `symlink_brw_stats=1` is set at module load. The parameter is now 0444.
- osd_device_init0() now calls qsd_fini() on the alloc_percpu() failure path. This is needed because the qsd kobjects are children of `dd_kobj`.
reply Gerrit AI review for Lustre qsd_lib.c:55 — (typo) This isn't a bug, but this still says "procfs helpers", and the same comment in qmt_pool.c was updated. If the patch is refreshed, a
Gerrit AI review for Lustre
(typo) This isn't a bug, but this still says "procfs helpers", and the same comment in qmt_pool.c was updated. If the patch is refreshed, a few other stale mentions could be fixed at the same time: - the qmt_dev.c header comment and the qmt_device_init0() comment both still say "QMT procfs directory" and "root procfs directory" - the `out_procfs` label in osd-ldiskfs osd_device_init0() now calls osd_tunables_fini()
tags: pw_shepherd
owner James Simmons · uploader James Simmons · PS34 uploaded 13d ago · NEW · open in Gerrit ↗
commit message
LU-8066 quota: migrate quota out of procfs With the upstream kernel requirement of not using procfs move the quota proc entries over to debugfs / sysfs. The simple entries are placed into sysfs and the complex into the debugfs tree. Extend the time to support proc symlink until after the 2.18 LTS release. Now on osd module load the symlink_brw_stats will determine if procfs is setup at all. Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I003841c4e9131db9ac423763fa817097c09ed83d
57671
master
J –B ✗T –R +1/2
LU-10499 pcc: add --pin option for 'lfs pcc attach'
build failure (#135127)
pccro
L +525 −80
2d
LU-10499 pcc: add --pin option for 'lfs pcc attach'
build failure (#135127)
pccro
L +525 −80
2d
build #135127 FAILURE
reviews:
Andreas Dilger +1
no vote yet: Qian Yingjin, Feng Lei
patchsets:
PS1 01-07
PS2 10-31 Andreas Dilger
PS3 11-01 Andreas Dilger
tags: pccro
owner James Simmons · uploader Andreas Dilger · PS3 uploaded 2d ago · NEW · open in Gerrit ↗
commit message
LU-10499 pcc: add --pin option for 'lfs pcc attach'
Add a --pin|-p option to "lfs pcc attach" and "lfs pcc attach_fid"
to pin each file for the PCC backend before attaching it, so that
users do not need to run "lfs pcc pin" separately. A file that
cannot be pinned is not attached. Without --id, the backend is
chosen once, so that the file is pinned for the backend it is
attached to.
Add llapi_pcc_pin_fd(), llapi_pcc_pin_fid(), llapi_pcc_unpin_fd()
and llapi_pcc_unpin_fid() to match the pool pin functions, which
use the same lustre.pin xattr. attach_fid pins the file with
llapi_pcc_pin_fid(), which also works on subdirectory mounts. The
pin functions share the pin xattr update and no longer leak the
parsed pin object.
Setting lustre.pin on the MDT took the UPDATE lock as well as the
XATTR lock. This would cancel a combined UPDATE|LAYOUT lock on the
client and detach a PCC-RO file, so "lfs pcc pin" of an attached
file would detach it. Do not take the UPDATE lock for the pin,
whether it is set as lustre.pin or as trusted.pin, and do not update
ctime, which clients cache under the UPDATE lock, as for the HSM
state.
Add llapi_pcc_pin_file.3 for the pin functions, and sanity-pcc
test_204d and test_204e.
Was-Change-Id: I35a0e399294020efdb0e4710500e8f7b846c290f
Was-Change-Id: If0120d745418836cfdf449a795b6f524c40f9c27
Test-Parameters: trivial testlist=sanity-pcc
Fixes: 84100d7f7d38 ("LU-10499 pcc: tunable GID to pin/unpin files")
Signed-off-by: Lei Feng <flei@whamcloud.com>
Signed-off-by: Qian Yingjin <qian@ddn.com>
Signed-off-by: Andreas Dilger <adilger@thelustrecollective.com>
Assisted-by: ClaudeCode:claude-opus-5-5 ltvm llm_code_and_review_tools
Change-Id: Iee873821ff5815fd6b56ed8f4c48147f5ef9321f
68287
master
J !B ✗T –R -1/2−
LU-14291 obdclass: unwind server code out of llog
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
XL +1100 −1073
6d
LU-14291 obdclass: unwind server code out of llog
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
XL +1100 −1073
6d
needs rebase — checkpatch: cannot be cherry-picked
build failure (#130151)
janitor run: build failed — no tests ran — janitor results
build #130151 FAILURE
owner James Simmons · uploader James Simmons · PS1 uploaded 71d ago · NEW · open in Gerrit ↗
commit message
LU-14291 obdclass: unwind server code out of llog Currently server internals are being pulled into llog. Break out all the server code which limits the scope of the DT API. Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Ia11f6c26289f43260c1606fb031c4b90df10f87f
65110
master
J ✗7B ✓T ✓R -1/2−
LU-9680 utils: remove forced debugfs mounting
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
5 unresolved
S +0 −24
6d
LU-9680 utils: remove forced debugfs mounting
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
5 unresolved
S +0 −24
6d
needs rebase — checkpatch: cannot be cherry-picked
5 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
CI green, no reviews yet — add reviewers
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity1@ldiskfs+DNE:test_5g | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@ldiskfs+DNE:test_29 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@ldiskfs+DNE:test_30b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@zfs:test_5g | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@zfs:test_29 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@zfs:test_30b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-pcc@ldiskfs+DNE:test_20 | seen in 27 other reviews |
build #129044 SUCCESS · tests all Maloo sessions
patchsets:
PS1 04-06
PS2 08-10
threads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:11 — (typo) "so are current actions voliates this feature" -> "so our current actions violate this feature".
Gerrit AI review for Lustre
(typo) "so are current actions voliates this feature" -> "so our current actions violate this feature".
reply Gerrit AI review for Lustre COMMIT_MSG:14 — (defect) Is this claim accurate? The controls the test suite leans on hardest are debugfs-only and have no netlink or sysfs equivalent.
Gerrit AI review for Lustre
(defect) Is this claim accurate? The controls the test suite leans on hardest are debugfs-only and have no netlink or sysfs equivalent. fail_loc, fail_val, fail_err, debug, subsystem_debug, dump_kernel (lctl dk), daemon_file and debug_marker are all created by lnet_insert_debugfs() from lnet_table in lnet/libcfs/module.c, so they exist only under /sys/kernel/debug/lnet/. Every suite that does `$LCTL set_param fail_loc=...` or `$LCTL dk` needs those. So the suite still requires debugfs to be mounted; the patch only stops mounting it on our own.
reply Gerrit AI review for Lustre param.c:26 — (style) Not a bug, but cfs_try_mount_sys_kernel_debug() was the only user of <sys/vfs.h> (statfs), <linux/magic.h> (DEBUGFS_MAGIC), <sys/mou
Gerrit AI review for Lustre
(style) Not a bug, but cfs_try_mount_sys_kernel_debug() was the only user of <sys/vfs.h> (statfs), <linux/magic.h> (DEBUGFS_MAGIC), <sys/mount.h> (mount) and <stdbool.h> (the static bool). Worth dropping those four includes in the same patch.
reply Gerrit AI review for Lustre param.c:28 — (defect) conf-sanity test_5g "handle missing debugfs" still checks for this auto-mount and is not updated here:
Gerrit AI review for Lustre
(defect) conf-sanity test_5g "handle missing debugfs" still checks for this auto-mount and is not updated here:
umount /sys/kernel/debug
$LCTL get_param -n devices | grep -E -v "error" && error "lctl can't access debugfs data"
grep " debugfs " /etc/mtab || error "debugfs failed to remount"
With the mount gone nothing remounts it, so the last line fails.
Worse, the test now leaves /sys/kernel/debug unmounted for the remainder of the conf-sanity run, so later subtests reading debugfs parameters, the `lctl dk` log dump on error(), and the KMEMLEAK check at /sys/kernel/debug/kmemleak all break too. Should test_5g be removed in this patch?
reply Gerrit AI review for Lustre param.c:55 — (defect) The netlink alternative cited in the commit message only applies to non-root callers.
Gerrit AI review for Lustre
(defect) The netlink alternative cited in the commit message only applies to non-root callers.
lctl get_param / list_param / set_param fall back to llapi_param_display_value() / llapi_param_set_value() only under `rc == -ENOENT && getuid() != 0` (lustre/utils/lustre_param.c:1181, 1243, 1349, 1416, 1640). Root always stays on the glob path.
mount(2) needs CAP_SYS_ADMIN, so the code being deleted only ever did anything for root — non-root already got EPERM, which was silently ignored. That means the one caller class this removal changes is exactly the one with no netlink fallback: on a node where debugfs is not mounted, root now gets ENOENT for everything under /sys/kernel/debug/{lnet,lustre} and has no other route to it.
This was raised on patchset 1 (keep trying to mount for systems that can still use it, just don't print on failure) and the code is unchanged in patchset 2. Dropping only the fprintf() would keep the working case working while satisfying the secure-boot concern.
owner James Simmons · uploader James Simmons · PS2 uploaded 86d ago · NEW · open in Gerrit ↗
commit message
LU-9680 utils: remove forced debugfs mounting For older platforms debugfs wasn't always mounted but lustre had a heavy dependence on it. Today Linux secure boot enforces the lack of debugfs so are current actions voliates this feature. With the implementation of Netlink we have an alternative to using debugfs so we can remove this forced mounting. We will be able to run our test suite without debugfs after this patch. Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Iaaa2b54d8352a5b9636338b0d10191428c89adaf
55818
master
J ✗2B ✓T ✗30R -2/2−
LU-18884 osp: use UUIDs instead of NIDs for LWP setup
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
2 unique failures
IPv6
1 unresolved
S +24 −11
13d
LU-18884 osp: use UUIDs instead of NIDs for LWP setup
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
2 unique failures
IPv6
1 unresolved
S +24 −11
13d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 2 test failures unique to this patch — runtests-ssk@ldiskfs+SharedKey:test_1, runtests@zfs:test_1
enforced failed: review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-part-7, review-dne-part-8, review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-ldiskfs, review-ldiskfs-ubuntu, review-zfs
Mikhail Pershin voted -1
1 unresolved thread(s) await your reply — last from Andreas Dilger
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| runtests-ssk@ldiskfs+SharedKey:test_1 | seen in 100 other reviews |
| runtests@zfs:test_1 | seen in 5 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-1 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-1 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-2 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-2 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-3 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-3 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-4 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-4 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-5 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-5 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-6 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-6 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-7 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-7 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-8 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-8 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-1 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-2 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-3 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-4 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-5 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-6 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-7 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 9.5 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, SLES 15.5 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 2 tests failed: sanity-sec, sanity. | session |
| review-zfs | RHEL 8.10 / x86_64 | ran 10 tests. 6 tests failed: sanity-lsnapshot, insanity, replay-ost-single, replay-single, sanity-flr, sanit | session |
3 optional test failure(s) — informational
build #114072 SUCCESS · tests all Maloo sessions
reviews:
Mikhail Pershin -1
no vote yet: Chris Horn, Timothy Day
patchsets:
PS6 09-10
PS7 09-19
PS8 10-02
PS9 06-08
PS10 06-08 Janitor Bot
+5 earlier
PS1 07-20 PS2 07-20 PS3 09-06 PS4 09-06 PS5 09-06threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger lwp_dev.c:95 — (defect?) I doubt the UUID should have a linefeed at the end?
Andreas Dilger
(defect?) I doubt the UUID should have a linefeed at the end?
owner James Simmons · uploader Janitor Bot · PS10 uploaded 514d ago · NEW · open in Gerrit ↗
commit message
LU-18884 osp: use UUIDs instead of NIDs for LWP setup The osp when setting up LWP uses NIDs instead of UUIDs for LCFG_SETUP. This is wrong and NIDs can easily over flow the obd_uuid structure. A side effect of this mistake is that the ptlrpc conn to UUID mapping just ends up being a NID looking up a NID which happens to be itself. That is very wrong. Replace using an NID with a real UUID. Test-Parameters: env=FORCE_LARGE_NID=true,LOAD_MODULES_REMOTE=true Change-Id: I1e08a9475a8dddcfd7f212b6a1b37559c00bf84e Signed-off-by: James Simmons <jsimmons@infradead.org>
65688
master
J –B ✓T ✗11R -2/2−
LU-18041 obd: mgc uses real uuid for its uuid to NID mapping
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
11 unresolved
M +67 −48
22d
LU-18041 obd: mgc uses real uuid for its uuid to NID mapping
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
11 unresolved
M +67 −48
22d
needs rebase — checkpatch: cannot be cherry-picked
enforced failed: review-dne-part-2, review-dne-part-3, review-dne-part-7, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-7, review-ldiskfs-arm, review-ldiskfs-ubuntu, review-zfs
Andreas Dilger voted -1
9 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
2 thread(s) waiting on others
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 | RHEL 9.7 / x86_64 | ran 11 tests. 1 tests failed: sanity-sec. | session |
| review-dne-part-3 | RHEL 9.8 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-7 | RHEL 9.8 / x86_64 | ran 6 tests. 1 tests failed: sanity-scrub. | session |
| review-dne-zfs-part-2 | RHEL 9.8 / x86_64 | ran 11 tests. 2 tests failed: sanity-pfl, sanity-sec. | session |
| review-dne-zfs-part-2 | RHEL 10.1 / x86_64 | ran 11 tests. 1 tests failed: sanity-sec. | session |
| review-dne-zfs-part-3 | RHEL 10.1 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-3 | RHEL 9.8 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-7 | RHEL 9.8 / x86_64 | ran 6 tests. 1 tests failed: sanity-scrub. | session |
| review-ldiskfs-arm | RHEL 8.10 / x86_64, Rocky 9.8 / aarch64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 24.04 / x86_64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
| review-zfs | RHEL 8.10 / x86_64 | ran 8 tests. 1 tests failed: sanity-lsnapshot. | session |
build #132962 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger -1
no vote yet: Serguei Smirnov, Mikhail Pershin
patchsets:
PS1 05-06
PS2 07-14
PS3 07-16
PS4 07-24
PS5 10-06
threads: 9 need your reply · 2 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (style) This isn't a bug, but `obd:` isn't a component tag used elsewhere in the tree. The change is mostly in obdclass (plus ldlm), so `obd
Gerrit AI review for Lustre
(style) This isn't a bug, but `obd:` isn't a component tag used elsewhere in the tree. The change is mostly in obdclass (plus ldlm), so `obdclass:` would fit better.
reply Gerrit AI review for Lustre COMMIT_MSG:10 — (typo) "This is problem" -> "This is a problem", and "is to small" -> "is too small".
Gerrit AI review for Lustre
(typo) "This is problem" -> "This is a problem", and "is to small" -> "is too small".
reply Gerrit AI review for Lustre COMMIT_MSG:17 — The message describes only the MGC uuid change. Several behavior changes in the diff aren't mentioned:
Gerrit AI review for Lustre
The message describes only the MGC uuid change. Several behavior changes in the diff aren't mentioned: - import_set_conn() now parses NID-shaped uuids directly and matches existing connections by `c_peer` NID instead of `oic_uuid`. This affects every OSC/MDC/OSP/LWP import, not just the MGC. - lustre_start_simple() now ignores `s2` for every caller. - lustre_add_mgc_failnodes() now creates one connection per failover NID instead of one per failover node, and maps every failover NID to the MGC's uuid. Were these intended? If so, could the message explain why they are safe?
reply Gerrit AI review for Lustre ldlm_lib.c:77 — (minor) ptlrpc_connection_get() returns NULL (not an ERR_PTR) when allocation fails, and only ptlrpc_uuid_to_connection() converts that to E
Gerrit AI review for Lustre
(minor) ptlrpc_connection_get() returns NULL (not an ERR_PTR) when allocation fails, and only ptlrpc_uuid_to_connection() converts that to ERR_PTR(-ENOENT). On this branch the IS_ERR() check below misses NULL, so `oic_conn` can be stored as NULL and dereferenced later in import_select_connection(). It's an ENOMEM-only path, but the same `c ? c : ERR_PTR(-ENOMEM)` conversion would keep it consistent.
reply Gerrit AI review for Lustre ldlm_lib.c:99 — (defect) Matching on the peer NID string instead of `oic_uuid` breaks lookups whose uuid isn't the peer NID string. The MGC's primary connec
Gerrit AI review for Lustre
(defect) Matching on the peer NID string instead of `oic_uuid` breaks lookups whose uuid isn't the peer NID string. The MGC's primary connection is the clearest case: its uuid is now the random MGC uuid, so it never matches here. import_set_conn_priority() then returns -ENOENT, and ptlrpc_recover_import(imp, uuid) fails, e.g. `lctl set_param mgc.*.import=connection=<uuid>`. It also fails for NID-shaped uuids when LNetPrimaryNID() replaced the peer NID with a different primary in ptlrpc_connection_get(). Repeated adds then create duplicate connections, and the IR reconnect in mgc_apply_recover_logs() -> ptlrpc_recover_import(imp, uuid.uuid, 1) can't find the connection. client_import_del_conn() and client_import_add_nids_to_conn() still key on `oic_uuid`, so these lookups are now inconsistent. Also, `strncmp(..., sizeof(uuid->uuid))` is effectively strcmp() for a NUL-terminated 40-byte uuid, so the truncated-uuid case described in the comment above won't match either.
reply Gerrit AI review for Lustre obd_mount.c:162 — (defect) `node` is now the MGC's own obd_uuid, the same key lustre_start_mgc() used for the primary MGS NIDs. So every failover MGS NID is a
Gerrit AI review for Lustre
(defect) `node` is now the MGC's own obd_uuid, the same key lustre_start_mgc() used for the primary MGS NIDs. So every failover MGS NID is added to the same uuid_nid_data entry as the primary MGS NIDs. class_add_uuid() then calls LNetAddPeer() with the whole entry, telling LNet that the primary and failover MGS nodes are one multi-rail peer. With the default lock_prim_nid=1, LNetAddPeer() can call lnet_peer_force_merge() and merge an existing failover-node peer into the primary MGS peer. The old code used a separate uuid per failover node for exactly this reason. Two other side effects: - The primary connection's ptlrpc_uuid_to_peer() can now pick a failover node's NID. - The entry is capped at MTI_NIDS_MAX (32) NIDs across all MGS nodes, and on reuse of an existing MGC, across every mount's mgsnode list. Should the failover NIDs keep a per-node key that differs from the primary's?
reply Gerrit AI review for Lustre obd_mount.c:170 — (minor) class_nid2uuid() doesn't truncate. It returns -EOVERFLOW when the NID string doesn't fit in UUID_MAX, and the `break` then skips thi
Gerrit AI review for Lustre
(minor) class_nid2uuid() doesn't truncate. It returns -EOVERFLOW when the NID string doesn't fit in UUID_MAX, and the `break` then skips this NID's connection and the rest of the current node. So a failover MGS with a long IPv6 NID still gets no connection, which is the case the commit message says is fixed. Separately, the "can't add failover peer" CWARN below prints `node` (the MGC uuid) where the failover NID was probably intended.
reply Gerrit AI review for Lustre obd_mount.c:241 — (defect) This replaces `s2` with `uuid` for every lustre_start_simple() caller, not only lustre_start_mgc(). The OSD start in tgt_mount.c pa
Gerrit AI review for Lustre
(defect) This replaces `s2` with `uuid` for every lustre_start_simple() caller, not only lustre_start_mgc(). The OSD start in tgt_mount.c passes the mount flags in `s2`:
snprintf(flagstr, sizeof(flagstr), "%lu:%u", mflags, lmd_flags);
lustre_start_simple(lsi->lsi_osd_obdname, lsi->lsi_osd_type,
lsi->lsi_osd_uuid, lmd->lmd_dev, flagstr, ...);
Now buf 2 holds the OSD uuid string instead. osd-ldiskfs osd_mount() runs `sscanf(str, "%lu:%lu", &s_flags, &lmd_flags)` on it, the parse fails, and both stay 0. So MS_RDONLY, LMD_FLG_DEV_RDONLY and LMD_FLG_NOSCRUB are silently dropped: an `-o ro` target mounts read-write, and `noscrub` is ignored. osd-zfs does `strstr(str, ":")` and loses rdonly_dev/noscrub the same way. That would explain the sanity-scrub failures seen on every patchset, since that suite mounts with `noscrub`.
It would be safer to pass the uuid as `s2` from lustre_start_mgc() only (and keep the kernel-doc for `s2` accurate).
reply Gerrit AI review for Lustre obd_mount.c:329 — (defect) Every new MGC now registers its NIDs under a fresh random uuid, but nothing calls class_del_uuid() for that key when the MGC is sto
Gerrit AI review for Lustre
(defect) Every new MGC now registers its NIDs under a fresh random uuid, but nothing calls class_del_uuid() for that key when the MGC is stopped (lustre_stop_mgc() doesn't touch the uuid table). Before this patch the key was the NID string, so repeated mounts reused one entry. Now each mount/umount cycle (autofs, for example) leaves another uuid_nid_data (~700 bytes) on g_uuid_list until module unload. lustre_uuid_to_peer() and class_add_uuid() scan that list linearly, so they get slower as it grows. Should the MGC remove its entry on cleanup?
owner James Simmons · uploader James Simmons · PS5 uploaded 28d ago · NEW · open in Gerrit ↗
commit message
LU-18041 obd: mgc uses real uuid for its uuid to NID mapping Lustre creates a mapping, struct uuid_nid_data, using an 'uuid' to many NIDs. That 'uuid' happens to be the primary NID. This is problem for two reasons. First reason is that struct obd_uuid is to small for full length IPv6 based NID addresses so it ends up truncated. Second reason is for some systems the IP addresses expire for the network interfaces during the file system run time. This means the primary NID is not permanent. What is a better node identifier for the mgc is the UUID generated for it. Use that for the mappings. Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Ib00ac7c3e282be924f2a64245cfcc4fc4e5744a7
45608
master
J !B ✓T ✓R -2/2−
LU-10824 llite: remove may_umount() loop
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
upstream
5 unresolved
S +27 −18
22d
LU-10824 llite: remove may_umount() loop
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
upstream
5 unresolved
S +27 −18
22d
needs rebase — checkpatch: cannot be cherry-picked
Arshad Hussain voted -1
5 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
no vote yet from Shaun Tancheff, Andreas Dilger, Neil Brown, Feng Lei
janitor run: 15 failing config(s), none unique to this patch — janitor results
build #132335 SUCCESS · tests all Maloo sessions
reviews:
Arshad Hussain -1
no vote yet: Shaun Tancheff, Andreas Dilger, Neil Brown, Feng Lei, Timothy Day
patchsets:
PS18 08-20
PS19 09-21 Arshad Hussain
PS20 09-22
PS21 09-23
PS22 09-25
+17 earlier
PS1 11-18 PS2 11-18 PS3 11-18 PS4 11-18 Charlie Olmstead PS5 01-07 PS6 03-02 PS7 03-03 Andreas Dilger PS8 03-03 PS9 03-03 PS10 03-03 Andreas Dilger PS11 06-11 PS12 06-11 PS13 06-11 PS14 06-11 PS15 08-09 PS16 08-09 PS17 08-19threads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (minor) If the patch is refreshed, consider saying concretely what was wrong with the old code. ll_mnt.mnt was set to current->fs->root.mnt,
Gerrit AI review for Lustre
(minor) If the patch is refreshed, consider saying concretely what was wrong with the old code. ll_mnt.mnt was set to current->fs->root.mnt, which is the mounting process's root vfsmount, not the Lustre mount, and no reference was held on it. So may_umount() was testing the wrong mount (in practice always busy, so every umount -f slept the full 10s), and it could touch a freed vfsmount if that root went away, e.g. when a container exits. The body also doesn't mention the test-framework.sh change that bind-mounts the helper for build-tree testing.
reply Arshad Hussain umount.lustre:12 — (trivial) (( .... ))
Gerrit AI review for Lustre
(minor) This line can never fire. A successful umount already leaves via "&& exit 0" on line 10, so by this point rc is always non-zero. If the patch is refreshed, it can be dropped.
Arshad Hussain
(trivial) (( .... ))
reply Arshad Hussain test-framework.sh:1237 — (defect) This is not your code. But worth fixing. 'continue' is wrong here.
Arshad Hussain
(defect) This is not your code. But worth fixing. 'continue' is wrong here. ``` [[ -f "$sbin_mount" ]] || touch "$sbin_mount" || true [[ -f "$sbin_umount" ]] || touch "$sbin_umount" || true ``` -1 only for this.
reply Arshad Hussain test-framework.sh:1253 — (trivial) can be fixed.
Gerrit AI review for Lustre
(defect) A bind mount needs its target to exist, but nothing creates $sbin_umount first. The mount.lustre bind just above writes a "STUB MARK" file for exactly this reason. On a build-tree node that does not have the lustre RPM installed, /sbin/umount.lustre is missing, so the mount fails with "mount point does not exist" and error() aborts load_modules_local(). That means llmount.sh and every suite fail at setup. Autotest runs from installed RPMs, where $LUSTRE/utils/mount.lustre does not exist, so it never takes this branch and won't catch it. Could this create a stub the same way sbin_mount does, or only bind when [[ -e $sbin_umount ]]? (typo) "bund" -> "bind".
Arshad Hussain
(trivial) can be fixed.
reply Gerrit AI review for Lustre test-framework.sh:1373 — (minor) This does not undo what load_modules_local() set up. When the bind succeeded, /sbin/umount.lustre is still a mount point here, so rm
Gerrit AI review for Lustre
(minor) This does not undo what load_modules_local() set up. When the bind succeeded, /sbin/umount.lustre is still a mount point here, so rm fails with EBUSY and the bind stays in place. The next load_modules_local() call then finds mount.lustre unbound and stacks a second bind on top of it. Should this follow the sbin_mount pattern just above? That is: umount $sbin_umount if it appears in /proc/mounts, then remove it only if it is a stub.
owner James Simmons · uploader James Simmons · PS22 uploaded 39d ago · NEW · open in Gerrit ↗
commit message
LU-10824 llite: remove may_umount() loop
Al Viro pointed out the work around for LU-1882 is incorrect. It
can even lead to kernel panics under the right conditions. The
reason for this work around is that PtlRPC messages can still be
received after unmounting. With today's util-linux you can provide
umount helper scripts. Create one for Lustre that does nearly the
same thing that the kernel tried to accomplish. The difference is
umount.lustre is run always instead of the umount -f condition.
Test-Parameters: trivial testlist=conf-sanity env=ONLY=45,ONLY_REPEAT=100
Fixes: 205a57df2787 ("LU-1882 llite: Adding timed wait in ll_umount_begin")
Signed-off-by: Rick Mohr <rmohr@ornl.gov>
Signed-off-by: James Simmons <jsimmons@infradead.org>
Change-Id: I1498c6348022bdd6a74db887ffc8836a7a03bab6
36612
master
J ✗1B ✓T ✗2R -1/2−
LU-8585 tests: re-enable fid2path sanity test for subdir mount
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
1 unique failure
M +125 −10
22d
LU-8585 tests: re-enable fid2path sanity test for subdir mount
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
1 unique failure
M +125 −10
22d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 1 test failure unique to this patch — sanity-quota@ldiskfs+DNE:test_48
enforced failed: custom-1001, review-ldiskfs-dne-arm
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-quota@ldiskfs+DNE:test_48 | seen in 25 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
| review-ldiskfs-dne-arm | RHEL 8.10 / x86_64, Rocky 9.5 / aarch64 | ran 5 tests. 1 tests failed: sanity. | session |
build #124513 SUCCESS · tests all Maloo sessions
no vote yet: Guillaume Courrier, Etienne AUJAMES, Andreas Dilger, Timothy Day
patchsets:
PS15 04-23
PS16 12-12
PS17 12-20
PS18 12-22
PS19 04-30
+13 earlier
PS2 12-08 PS3 03-12 PS4 03-14 PS5 03-16 PS6 03-18 PS7 03-22 PS8 10-16 PS9 11-03 PS10 12-18 PS11 01-18 PS12 01-22 PS13 03-08 PS14 03-08owner James Simmons · uploader James Simmons · PS19 uploaded 187d ago · NEW · open in Gerrit ↗
commit message
LU-8585 tests: re-enable fid2path sanity test for subdir mount
When a subdirectory is mounted, the .lustre directory cannot be
seen. With the move of llapi_fid2path() from using .lustre/fid to
name_to_handle_at() previous sanity test that failed due to
file sets being enabled should now pass since name_to_handle_at()
should be file set aware. We update a few test applications to
work with llapi_open_by_fid() if we can't access .lustre. Same
is done with liblustreapi.so as well.
Fixes: f71554200 ("LU-11208 tests: add version check to sanity tests")
Fixes: e2ac6e1ea ("LU-9341 lod: Add special O_APPEND striping")
Fixes: 9bd3e64b8 ("LU-28 fileset: add fileset mount support")
Test-Parameters: trivial envdefinitions="FILESET=/subdir" testlist=sanity
Change-Id: Iddbcea298613e1dcc0af5c6f3cab4f0de01dbb5c
Signed-off-by: James Simmons <jsimmons@infradead.org>
63767
master
J ✗1B ✓T ✗4R -1/2−
LU-20108 sec: support fscrypt natively for Linux 5.15
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
1 unique failure
upstream
18 unresolved
L +474 −208
36d
LU-20108 sec: support fscrypt natively for Linux 5.15
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
1 unique failure
upstream
18 unresolved
L +474 −208
36d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 1 test failure unique to this patch — runtests@ldiskfs+DNE:test_1
enforced failed: custom-1001, review-ldiskfs-dne, review-ldiskfs-dne-arm
18 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| runtests@ldiskfs+DNE:test_1 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 crashed | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: sanity-sec. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs-dne | RHEL 8.10 / x86_64 | ran 7 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-dne | RHEL 9.8 / x86_64 | ran 7 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-dne-arm | RHEL 8.10 / x86_64, Rocky 9.5 / aarch64 | ran 7 tests. 1 tests failed: sanity. | session |
build #131457 SUCCESS · tests all Maloo sessions
no vote yet: Shaun Tancheff, Sebastien Buisson, Timothy Day
patchsets:
PS1 02-03
PS2 07-14
PS3 08-10
PS4 09-09
PS5 09-09
threads: 18 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:10 — The body says this handles the replacement of fscrypt_inherit_context(), but all three call sites are still there and unguarded:
Gerrit AI review for Lustre
The body says this handles the replacement of fscrypt_inherit_context(), but all three call sites are still there and unguarded:
lustre/llite/namei.c:1230
lustre/llite/namei.c:1851
lustre/llite/dir.c:537
llcrypt_set_context() is only wired up in one place (ll_new_node_finish() for symlinks); everywhere else the new call is commented out. Should the message say the conversion is partial?
reply Gerrit AI review for Lustre COMMIT_MSG:12 — A few hunks aren't accounted for by the description - can they be explained, or split out?
Gerrit AI review for Lustre
A few hunks aren't accounted for by the description - can they be explained, or split out?
- config/Makefile.exports.in + lnet/libcfs/Makefile + lustre_compat/fs/crypto/Makefile: switching the llcrypt build gate from a config.h grep to an exported make variable
- lustre/llite/statahead.c: ll_xattr_cache_insert() -> ll_set_encflags()
- lustre/llite/namei.c: dropping the -ERANGE retry loop around get_context()
- lustre/llite/namei.c: dropping the `encrypt && (open_flags & O_CREAT) && d_inode(dentry)` branch that used to call ll_set_encflags() with preload=true
- the CDEBUG text changes ("it_finish server returned ...", "statahead server returned ...")
reply Gerrit AI review for Lustre COMMIT_MSG:16 — (defect) Two hunks aren't accounted for by the description:
Gerrit AI review for Lustre
(defect) Two hunks aren't accounted for by the description: - a new UAPI ioctl, LL_IOC_GET_ENCRYPTION_NONCE / llcrypt_ioctl_get_nonce() - the folio signature change of llcrypt_encrypt_pagecache_blocks(), llcrypt_decrypt_pagecache_blocks() and llcrypt_finalize_bounce_page(), plus the new lustre_compat/linux/folio.h include Both are independently landable. Should they be split out, or at least named in the body?
reply Gerrit AI review for Lustre lustre_crypto.h:50 — (defect) These now hand a folio to the in-kernel helpers, but on 5.15 - the kernel this patch is targeting - fscrypt_encrypt_pagecache_block
Gerrit AI review for Lustre
(defect) These now hand a folio to the in-kernel helpers, but on 5.15 - the kernel this patch is targeting - fscrypt_encrypt_pagecache_blocks() and fscrypt_decrypt_pagecache_blocks() take a `struct page *`, and fscrypt_finalize_bounce_page() at line 77 takes a `struct page **` (osc_request.c passes `foliop`). The folio conversions are much more recent. There is no HAVE_* guard or compat shim here, so the in-kernel build looks like it would still fail on 5.15 with incompatible-pointer errors. Should a config/*.m4 test cover the page-vs-folio variants?
reply Gerrit AI review for Lustre lustre_crypto.h:138 — (defect) FS_IOC_GET_ENCRYPTION_NONCE and fscrypt_ioctl_get_nonce() only appeared in v5.7, and the mapping at line 96 is unguarded. Since the
Gerrit AI review for Lustre
(defect) FS_IOC_GET_ENCRYPTION_NONCE and fscrypt_ioctl_get_nonce() only appeared in v5.7, and the mapping at line 96 is unguarded. Since the commit message says in-kernel fscrypt is supported down to 5.8-era kernels today, is a HAVE_FSCRYPT_IOCTL_GET_NONCE test needed before this can be mapped unconditionally?
reply Gerrit AI review for Lustre lustre_crypto.h:138 — (defect) This `#else` arm also covers the `--disable-crypto` build (no HAVE_LUSTRE_CRYPTO, no CONFIG_LL_ENCRYPTION), and llcrypt_context_for
Gerrit AI review for Lustre
(defect) This `#else` arm also covers the `--disable-crypto` build (no HAVE_LUSTRE_CRYPTO, no CONFIG_LL_ENCRYPTION), and llcrypt_context_for_new_inode() has no declaration there -- it is declared only at line 67 for the native branch, and in include/lustre_compat/linux/llcrypt.h only inside `#ifdef CONFIG_LL_ENCRYPTION`. dir.c and namei.c call it unguarded, so the build stops on an implicit declaration. llcrypt_prepare_new_inode() has the matching problem on the link side: it is declared here, but keysetup.c only defines it under `#if !defined(HAVE_FSCRYPT_SET_CONTEXT) || defined(CONFIG_LL_ENCRYPTION)`. On a kernel where HAVE_FSCRYPT_SET_CONTEXT is set (the autoconf test at config/lustre-core.m4:787 runs regardless of --enable-crypto), neither condition holds and nothing defines it. Should the no-crypto section of llcrypt.h grow stubs for both?
reply Gerrit AI review for Lustre dir.c:514 — (style) Not a bug, but this `len` shadows the `size_t len` parameter that is handed to md_create() further down, which makes the block harde
Gerrit AI review for Lustre
(style) Not a bug, but this `len` shadows the `size_t len` parameter that is handed to md_create() further down, which makes the block harder to follow. If the patch is refreshed, something like `ctxsize` would read better.
reply Gerrit AI review for Lustre namei.c:1668 — Since `encrypt` is forced to true a few lines up whenever IS_ENCRYPTED(dir) and open_flags is non-zero, the value passed in by ll_lookup_it_
Gerrit AI review for Lustre
Since `encrypt` is forced to true a few lines up whenever IS_ENCRYPTED(dir) and open_flags is non-zero, the value passed in by ll_lookup_it_finish() is now only meaningful for the open_flags == 0 case. Was the parameter meant to stay?
reply Gerrit AI review for Lustre namei.c:685 — (defect) This runs on every lookup, not just creates - ll_lookup_it_finish() is reached from plain ll_lookup_nd() too.
Gerrit AI review for Lustre
(defect) This runs on every lookup, not just creates - ll_lookup_it_finish() is reached from plain ll_lookup_nd() too.
Two consequences for an encrypted parent:
- llcrypt_prepare_new_inode() returns -ENOKEY when the master key isn't loaded, so `ls` / `stat` of anything inside an encrypted directory without the key now fails instead of showing no-key names.
- with the key loaded it ends in llcrypt_get_encryption_info(inode), i.e. a getxattr RPC for the child's context, issued *before* the server-supplied context is stored. That is exactly what the comment three lines below says this code is arranged to avoid ("save an extra getxattr and avoid deadlock").
Was this meant to be gated on the create disposition?
reply Gerrit AI review for Lustre namei.c:1197 — (defect) GOTO(free_fake_inode, ...) lands on a label that is still inside this `if` block, and nothing after the label rechecks the error -
Gerrit AI review for Lustre
(defect) GOTO(free_fake_inode, ...) lands on a label that is still inside this `if` block, and nothing after the label rechecks the error - control just falls through to the security-context setup, ll_intent_lock() and ll_lookup_it_finish(), and `retval` is overwritten by the success assignment at the end. So a failure from llcrypt_prepare_new_inode() or llcrypt_context_for_new_inode() is silently discarded, and the OBD_ALLOC failure at the -ENOMEM goto continues with op_file_encctx == NULL, creating the file in the encrypted directory with no encryption context at all. ll_dir_setdirstripe() and ll_new_node_prepare() both put an `if (err) GOTO(out..., err)` after the label; that seems to be missing here.
reply Gerrit AI review for Lustre namei.c:1210 — (defect) The volatile branch above takes a reference via volatile_ref_file() and the old code released it with fput() once the context had b
Gerrit AI review for Lustre
(defect) The volatile branch above takes a reference via volatile_ref_file() and the old code released it with fput() once the context had been fetched. Now the only fput() left is on the !ref_inode error path, so the reference leaks on every volatile-file create in an encrypted directory. The fake-inode branch also skips llcrypt_put_encryption_info(ref_inode) before destroy_inode(), so the llcrypt_info that llcrypt_prepare_new_inode() attached leaks too - dir.c:539 and namei.c:1843 both call it.
reply Gerrit AI review for Lustre namei.c:705 — (defect) Swapping ll_xattr_cache_insert() for llcrypt_set_context() ties caching the server-supplied context to the *parent's* policy, which
Gerrit AI review for Lustre
(defect) Swapping ll_xattr_cache_insert() for llcrypt_set_context() ties caching the server-supplied context to the *parent's* policy, which it did not depend on before.
For a directory that has its own policy but sits under an unencrypted parent, mdt_pack_encctx_in_reply() still sets OBD_MD_ENCCTX because the child carries LUSTRE_ENCRYPT_FL. Here `parent` is not encrypted, so llcrypt_prepare_new_inode() above returns 0 and leaves `encrypt` false, and then:
llcrypt_set_context() -> llcrypt_inherit_context(parent, ...)
-> llcrypt_get_encryption_info(parent) -> get_context() -> -ENODATA
(native path: fscrypt_set_context() hits WARN_ON_ONCE(!ci) and returns -ENOKEY).
The CWARN reads as non-fatal, but `rc` is no longer cleared on the way out -- the old `GOTO(out, rc = 0)` before the `out:` label is gone and `if (encrypt)` does not run to overwrite it, so ll_lookup_it_finish() returns the error and ll_lookup_it() turns it into ERR_PTR(). Does that make `ls`/`stat` of such a directory fail?
owner James Simmons · uploader James Simmons · PS5 uploaded 55d ago · NEW · open in Gerrit ↗
commit message
LU-20108 sec: support fscrypt natively for Linux 5.15 Currently Lustre only supports up to 5.8 kernels. This work handles the replacement of fscrypt_inherit_context() with fscrypt_prepare_new_inode() and fscrypt_set_context(). So the encrypt context is done in a two step process. Test-Parameters: trivial testlist=sanity-sec Change-Id: Ie8defa6e71fecddfd773e01f93d7ae3cb8d6e18e Signed-off-by: James Simmons <jsimmons@infradead.org>
45882
master
J ✗1B ✓T ✗5R -1/2−
LU-8130 ldlm: convert ldlm_resource hash to rhashtable
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
1 unique failure
upstream
19 unresolved
L +441 −347
36d
LU-8130 ldlm: convert ldlm_resource hash to rhashtable
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
1 unique failure
upstream
19 unresolved
L +441 −347
36d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 1 test failure unique to this patch — sanity-pcc@ldiskfs+DNE:test_22
enforced failed: review-dne-part-1, review-dne-part-5, review-dne-selinux-ssk-part-2, review-dne-zfs-part-3
18 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
1 thread(s) waiting on others
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-pcc@ldiskfs+DNE:test_22 | seen in 13 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 crashed | RHEL 10.1 / x86_64 | ran 3 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-5 crashed | RHEL 9.7 / x86_64 | ran 5 tests. 1 tests failed: sanityn. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 7 tests. 1 tests failed: sanity-sec. | session |
| review-dne-zfs-part-3 crashed | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-3 crashed | RHEL 10.1 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. %% THIS TEST SESSION CRASHED %% | session |
build #129749 SUCCESS · tests all Maloo sessions
no vote yet: Qian Yingjin, Shaun Tancheff, Alexey Lyashkov, Neil Brown, Vitaly Fertman, Timothy Day, Sergey Cheremencev, Andreas Dilger, Oleg Drokin, Patrick Farrell
patchsets:
PS81 08-07
PS82 08-09
PS83 08-12
PS84 08-14
PS85 08-19
+80 earlier
PS1 12-17 PS2 12-17 PS3 12-18 PS4 12-21 PS5 12-08 PS6 12-12 Neil Brown PS7 10-15 PS8 10-18 PS9 10-19 PS10 10-28 PS11 12-13 PS12 02-08 PS13 02-08 PS14 02-08 PS15 02-10 PS16 02-15 PS17 02-22 PS18 02-23 PS19 03-23 PS20 03-29 PS21 03-30 PS22 03-31 PS23 03-31 PS24 04-01 PS25 04-02 PS26 04-02 PS27 04-02 PS28 04-02 PS29 04-02 PS30 04-08 PS31 04-12 PS32 04-17 PS33 04-23 PS34 06-04 PS35 06-05 PS36 06-24 PS37 06-30 PS38 06-30 PS39 09-07 Shaun Tancheff PS40 09-08 Shaun Tancheff PS41 09-08 Shaun Tancheff PS42 09-08 PS43 10-15 Shaun Tancheff PS44 11-25 Shaun Tancheff PS45 12-21 Shaun Tancheff PS46 04-23 Shaun Tancheff PS47 05-02 PS48 05-03 PS49 07-25 PS50 12-12 PS51 12-15 PS52 12-19 PS53 01-26 PS54 02-05 PS55 02-09 PS56 02-13 PS57 02-14 PS58 02-14 PS59 02-19 PS60 03-06 PS61 04-13 PS62 04-16 PS63 04-30 PS64 05-11 Shaun Tancheff PS65 05-12 Shaun Tancheff PS66 05-13 Shaun Tancheff PS67 05-26 Shaun Tancheff PS68 05-28 Shaun Tancheff PS69 05-28 Janitor Bot PS70 05-28 Shaun Tancheff PS71 05-28 Shaun Tancheff PS72 05-28 PS73 05-29 Shaun Tancheff PS74 05-29 Shaun Tancheff PS75 05-29 Shaun Tancheff PS76 06-04 Shaun Tancheff PS77 06-06 Shaun Tancheff PS78 06-19 Shaun Tancheff PS79 06-20 PS80 08-05your previous vote: -1 on PS71 (2026-05-28 16:40) — now at PS85
threads: 18 need your reply · 1 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:41 — cl2osc() is container_of_safe() on oo_cl, which sits at offset 0, so IS_ERR_OR_NULL(cl2osc(obj)) is the same test as IS_ERR_OR_NULL(obj). It
Gerrit AI review for Lustre
cl2osc() is container_of_safe() on oo_cl, which sits at offset 0, so IS_ERR_OR_NULL(cl2osc(obj)) is the same test as IS_ERR_OR_NULL(obj). It checks the cl_object pointer that was passed in, not whether the osc_object still exists; an object that was freed while still referenced is an ordinary pointer, not NULL or an ERR_PTR. Could the message name the pointer that actually becomes NULL or an error, and where it is set that way?
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — ldlm/ldlm_resource.c:
Misc Code Checks Robot (Gatekeeper helper)
ldlm/ldlm_resource.c: warn: ldlm_resource_get():inconsistent indenting
reply Gerrit AI review for Lustre COMMIT_MSG:27 — This paragraph explains the bucket-array sizing change, but not that the bucket selection function changed shape as well. ldlm_res_hop_hash(
Gerrit AI review for Lustre
This paragraph explains the bucket-array sizing change, but not that the bucket selection function changed shape as well. ldlm_res_hop_hash() summed all four words of the res_id; ldlm_res_hop_fid_hash() hashes only the FID in name[0] and name[1]. Worth a sentence, since it changes which resources share an ldlm_ns_bucket. The new LDLM_FL_KUNIT_TESTING flag in lustre_dlm_flags.h isn't mentioned anywhere in the body either - is that meant to be part of this patch, or a separate cleanup of the bare BIT(63) uses?
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — ldlm/ldlm_resource.c:
Misc Code Checks Robot (Gatekeeper helper)
ldlm/ldlm_resource.c: warn: ldlm_resource_get():inconsistent indenting
reply Gerrit AI review for Lustre COMMIT_MSG:42 — (suggestion) No Test-Parameters: line for a change of this reach - it rewrites the resource lookup path for MDC/MDT/OSC/OST/MGC/MGT namespac
Gerrit AI review for Lustre
(suggestion) No Test-Parameters: line for a change of this reach - it rewrites the resource lookup path for MDC/MDT/OSC/OST/MGC/MGT namespaces and touches recovery, eviction and quota. Something like
Test-Parameters: testlist=recovery-small,replay-single,replay-dual,conf-sanity,sanity-quota
would get the paths this rewrites covered by the test run.
reply Gerrit AI review for Lustre lustre_dlm.h:1204 — lr_hash and lr_rcu share storage, so call_rcu(&res->lr_rcu, ...) writes over lr_hash.next. That was safe with cfs_hash because every chain w
Gerrit AI review for Lustre
lr_hash and lr_rcu share storage, so call_rcu(&res->lr_rcu, ...) writes over lr_hash.next. That was safe with cfs_hash because every chain walk held the bucket lock; rhashtable readers walk the chain under rcu_read_lock() alone. ldlm_resource_putref() -> __ldlm_resource_putref_final() does rhashtable_remove_fast(), then ldlm_resource_free(res, true) -> call_rcu(), and call_rcu() sets head->next = NULL right away. RCU removal requires the removed node's next pointer to stay intact for a grace period, because a reader can already be sitting on that node when it is unlinked. A concurrent ldlm_resource_get() walking that bucket then loads NULL as the next pointer. rht_is_a_nulls() only tests bit 0, so NULL is not recognised as end-of-chain: the loop body runs with pos == NULL, rht_obj() subtracts head_offset, and rs_cmp() dereferences the result. struct lu_object_header keeps loh_hash and loh_rcu as separate fields, with a comment about exactly this requirement. Should lr_rcu be split out of the union the same way?
reply Gerrit AI review for Lustre lustre_dlm_flags.h:387 — This isn't a bug, but BIT() is unsigned long while l_flags is __u64, so BIT(63) is out of range on a 32-bit build. Every other flag in this
Gerrit AI review for Lustre
This isn't a bug, but BIT() is unsigned long while l_flags is __u64, so BIT(63) is out of range on a 32-bit build. Every other flag in this file spells the value out as 0x...ULL with a /* bit N */ comment and provides ldlm_is_/ldlm_set_ helpers - consider matching that:
#define LDLM_FL_KUNIT_TESTING 0x8000000000000000ULL /* bit 63 */
#define ldlm_is_kunit_testing(_l) LDLM_TEST_FLAG((_l), 1ULL << 63)
#define ldlm_set_kunit_testing(_l) LDLM_SET_FLAG((_l), 1ULL << 63)
which would also let the two ldlm_lock.c users read like the surrounding flag tests.
reply Gerrit AI review for Lustre l_lock.c:34 — This gives lock_res_and_lock() a new failure return, but only 8 of the 111 call sites look at the result; the rest go straight on to unlock_
Gerrit AI review for Lustre
This gives lock_res_and_lock() a new failure return, but only 8 of the 111 call sites look at the result; the rest go straight on to unlock_res_and_lock(), which is unlock_res(lock->l_resource) on the very pointer that produced the error. As far as I can tell the error can't fire today: l_resource is only cleared by the rcu_assign_pointer(lock->l_resource, NULL) in ldlm_lock_put(), which runs after h_ref has already reached zero, so no caller that holds a lock reference can observe it, and nothing assigns an ERR_PTR to l_resource at all. So either it is unreachable, and the error plumbing added through ldlm_lock_enqueue(), ldlm_callback_handler(), osc_ldlm_glimpse_ast() and osc_extent_release() could go, or it is reachable and the other 103 callers need converting in the same patch. Which is it?
reply Gerrit AI review for Lustre ldlm_lock.c:196 — (minor) This critical section only spans the two pointer loads - res is dereferenced at the lr_type test below and handed to ldlm_resource_p
Gerrit AI review for Lustre
(minor) This critical section only spans the two pointer loads - res is dereferenced at the lr_type test below and handed to ldlm_resource_putref(), and ns is used by lprocfs_counter_decr(), all after rcu_read_unlock(). If l_resource really needed RCU protection here the section would have to reach as far as the putref; as written it protects nothing that the lock's own resource reference doesn't already cover. The LASSERT(lock->l_resource != LP_POISON) a few lines up reads the same field bare, which suggests the plain read was fine. Could this just go back to a direct load?
reply Gerrit AI review for Lustre ldlm_reclaim.c:176 — ns_reclaim_start is now only ever assigned 0 in ldlm_namespace_new(); the ldlm_res_to_ns(res)->ns_reclaim_start++ that used to advance it we
Gerrit AI review for Lustre
ns_reclaim_start is now only ever assigned 0 in ldlm_namespace_new(); the ldlm_res_to_ns(res)->ns_reclaim_start++ that used to advance it went away with the per-bucket bookkeeping in ldlm_reclaim_lock_cb(). rcd_start is therefore always 0, the rcd_skip/rcd_cursor fast-forward below can never trigger, and every reclaim pass restarts on the same resources. nsb_reclaim_start is incremented but no longer read either. That drops the round-robin scan the ldlm_reclaim_res() comment still describes, and it is not mentioned in the commit message. Is the intent to keep the round-robin, or to remove it and the now-dead rcd_skip/rcd_cursor/rcd_start fields with it? Also worth noting the units no longer match: rcd_cursor counts resources while tbl->size is a bucket count.
reply Gerrit AI review for Lustre ldlm_resource.c:1166 — (minor) This comment doesn't match the new scheme. With the rhashtable the table holds no reference of its own: an entry is removed exactly
Gerrit AI review for Lustre
(minor) This comment doesn't match the new scheme. With the rhashtable the table holds no reference of its own: an entry is removed exactly when `lr_refcount` hits zero in `__ldlm_resource_putref_final()`, and `rs_cmp()` hides zero-refcount entries from lookups. During the walk the only extra reference is the `refcount_inc_not_zero()` in `ldlm_resource_for_each()`. So the count printed below is one lower than the number of stray references, and a resource holding exactly one leaked reference no longer produces the message at all.
reply Gerrit AI review for Lustre ldlm_resource.c:1174 — (style) This is a new exported API and it has no kerneldoc, unlike `ldlm_resource_get()` right below. Worth documenting the callback contrac
Gerrit AI review for Lustre
(style) This is a new exported API and it has no kerneldoc, unlike `ldlm_resource_get()` right below. Worth documenting the callback contract, in particular that the callback owns no reference (it must not putref), that a non-zero return stops the walk, and that a callback can be invoked more than once for the same resource - `rhashtable_walk_start()` here is the void variant, so the `-EAGAIN` a resize produces is discarded and the walk restarts from slot 0. That last property is what forced the `l_pending_chain` check in `ldlm_chain_lock_for_replay()`, and every future callback author needs to know about it.
owner James Simmons · uploader James Simmons · PS85 uploaded 76d ago · NEW · open in Gerrit ↗
commit message
LU-8130 ldlm: convert ldlm_resource hash to rhashtable Using an rhashtable allows lockless lookup at the cost of rcu freeing of entries. When we find an entry, we need to atomically check the reference hasn't dropped to zero. When adding an entry, we might find an existing entry which is in the process of being removed - with a zero refcount. In that case we loop around and repeat the lookup. To ensure this doesn't spin, the 'cmp' function will fail any comparison with a resource which has a zero refcount. Now that we are using resizing hash tables, we don't need to preconfig suitable sizes for each namespace. We can just use the default and let it grow as needed. We keep the pre-configured sizes for the bucket array. Previously the size of the bucket array was the difference between nsd_all_bits and nsd_bkt_bits. As we don't need nsd_all_bits any more, nsd_bkt_bits is changed to the number of bits used to choose a bucket. Walking an rhashtable requires that we manage refcounts ourself, so a new function, ldlm_resource_for_each() is added to do that. Note that with this patch we now update a per-table counter on every insert/remove, which might cause more contention between CPUs on a busy system. Hopefully rhashtable will be enhanced in the near future to support a per-CPU counter for nelems. Only use call_rcu() to free slab resources that have been removed from the rhashtable, other cases can be free immediately. This change exposes new race conditions in the osc layer so we add code to check if osc_objects still exist. Signed-off-by: NeilBrown <neil@brown.name> Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Ie65f6c5f6e246ed6684ade05ddab8740ac8137dd
58592
master
J !B ✓T ✗46R 0/2
LU-8130 obd: replace gen hash with Xarray
enforced failed: review-dne-ipv6, review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-part-7, review-dne-part-8, review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-ldiskfs, review-ldiskfs-arm, review-ldiskfs-ubuntu, review-zfs
upstream
10 unresolved
M +30 −155
57d
LU-8130 obd: replace gen hash with Xarray
enforced failed: review-dne-ipv6, review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-part-7, review-dne-part-8, review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-ldiskfs, review-ldiskfs-arm, review-ldiskfs-ubuntu, review-zfs
upstream
10 unresolved
M +30 −155
57d
enforced failed: review-dne-ipv6, review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-part-7, review-dne-part-8, review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-ldiskfs, review-ldiskfs-arm, review-ldiskfs-ubuntu, review-zfs
10 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-ipv6 crashed | RHEL 9.7 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-ipv6 crashed | RHEL 9.8 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-1 crashed | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-1 crashed | RHEL 9.8 / x86_64 | ran 3 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-1 crashed | RHEL 10.1 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-2 crashed | RHEL 9.7 / x86_64 | ran 20 tests. 8 tests failed: sanity-pfl, sanity-lnet, lnet-selftest, pjdfstest, sanity-sec, sanity-lfsck, ru | session |
| review-dne-part-3 crashed | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-3 crashed | RHEL 9.8 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-4 crashed | RHEL 10.1 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-4 crashed | RHEL 9.7 / x86_64 | ran 15 tests. 7 tests failed: sanity-quota, sanity-hsm, sanity-flr, sanity-dom, replay-ost-single, mmp, insan | session |
| review-dne-part-5 crashed | RHEL 9.7 / x86_64 | ran 8 tests. 2 tests failed: sanityn, recovery-small. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-6 crashed | RHEL 9.7 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-6 crashed | RHEL 9.8 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-6 crashed | RHEL 10.1 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-7 crashed | RHEL 9.8 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-7 crashed | RHEL 9.7 / x86_64 | ran 10 tests. 4 tests failed: sanity-ec, sanity-scrub, sanity-pcc, large-scale. %% THIS TEST SESSION CRASHED | session |
| review-dne-part-8 crashed | RHEL 9.7 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-8 crashed | RHEL 10.1 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-8 crashed | RHEL 9.8 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-selinux-ssk-part-1 crashed | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-selinux-ssk-part-2 crashed | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-1 crashed | RHEL 9.7 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-1 crashed | RHEL 9.8 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-1 crashed | RHEL 10.1 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-2 crashed | RHEL 9.7 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-2 crashed | RHEL 10.1 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-2 crashed | RHEL 9.8 / x86_64 | ran 19 tests. 9 tests failed: sanity-pfl, sanity-lnet, lnet-selftest, pjdfstest, sanity-sec, sanity-lfsck, ru | session |
| review-dne-zfs-part-3 crashed | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-3 crashed | RHEL 10.1 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-3 crashed | RHEL 9.8 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-4 crashed | RHEL 10.1 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-4 crashed | RHEL 9.8 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-4 crashed | RHEL 9.7 / x86_64 | ran 13 tests. 7 tests failed: sanity-quota, sanity-hsm, sanity-flr, sanity-dom, replay-ost-single, mmp, insan | session |
| review-dne-zfs-part-5 crashed | RHEL 9.7 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-6 crashed | RHEL 9.7 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-6 crashed | RHEL 10.1 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-6 crashed | RHEL 9.8 / x86_64 | ran 4 tests. 2 tests failed: ost-pools, replay-single. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-7 crashed | RHEL 9.8 / x86_64 | ran 6 tests. 3 tests failed: sanity-ec, sanity-pcc, large-scale. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-7 crashed | RHEL 9.7 / x86_64 | ran 10 tests. 4 tests failed: sanity-ec, sanity-scrub, sanity-pcc, large-scale. %% THIS TEST SESSION CRASHED | session |
| review-ldiskfs crashed | RHEL 8.10 / x86_64 | ran 7 tests. 3 tests failed: sanity-lnet, sanity, lnet-selftest. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs crashed | RHEL 8.10 / x86_64, SLES 15.7 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs crashed | RHEL 8.10 / x86_64, RHEL 9.8 / x86_64 | ran 7 tests. 3 tests failed: sanity-lnet, sanity, lnet-selftest. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs crashed | RHEL 8.10 / x86_64, RHEL 10.1 / x86_64 | ran 9 tests. 3 tests failed: sanity-lnet, sanity, lnet-selftest. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs-arm crashed | RHEL 8.10 / x86_64, Rocky 9.5 / aarch64 | ran 8 tests. 4 tests failed: sanity-sec, sanity-lnet, sanity, lnet-selftest. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs-ubuntu crashed | RHEL 8.10 / x86_64, / | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-zfs crashed | RHEL 8.10 / x86_64 | ran 14 tests. 6 tests failed: sanity-lsnapshot, insanity, replay-ost-single, replay-single, sanity-flr, sanit | session |
build #131254 SUCCESS · tests all Maloo sessions
no vote yet: Mikhail Pershin
patchsets:
PS1 03-30
PS2 03-30
PS3 04-10
PS4 01-10
PS5 09-07
threads: 10 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:11 — The body explains the data-structure swap but not the reference-counting changes that come with it. class_export_put() is added in class_unl
Gerrit AI review for Lustre
The body explains the data-structure swap but not the reference-counting changes that come with it. class_export_put() is added in class_unlink_export() and tgt_client_free(), and removed in tgt_reply_data_init() and update_recovery_update_ses(). Those are behavior changes, not a mechanical hash->xarray conversion, and it would help to say what the intended ownership rule for obd_gen_ids is. The old gen_kepcmp() also filtered on !exp->exp_failed, so lookups could never return a failed export; xa_load() has no such filter. That change deserves a line in the message too.
reply Gerrit AI review for Lustre COMMIT_MSG:13 — (style) Signed-off-by: normally comes before Change-Id:; the reversed order usually means the Lustre commit hook is not installed locally.
Gerrit AI review for Lustre
(style) Signed-off-by: normally comes before Change-Id:; the reversed order usually means the Lustre commit hook is not installed locally.
reply Gerrit AI review for Lustre obd.h:722 — (style) The comment above still calls this a hash body. While renaming the field, `obd_gen_ids` reads as if it stores ids rather than export
Gerrit AI review for Lustre
(style) The comment above still calls this a hash body. While renaming the field, `obd_gen_ids` reads as if it stores ids rather than exports keyed by generation - something like obd_gen_exports would say what it holds.
reply Gerrit AI review for Lustre genops.c:1152 — (defect) Two problems with this put.
Gerrit AI review for Lustre
(defect) Two problems with this put. First, ted_lcd is non-NULL for every target export (tgt_client_alloc() allocates it for all non-self exports), while an obd_gen_ids entry only exists for exports inserted by tgt_clients_data_init() when tgt_is_multimodrpcs_record() is true. So a regular client that connected after mount was never in the xarray, yet still gets a put here. The old code was guarded by hlist_unhashed(&exp->exp_gen_hash), which was exactly the "is it in the table" test; xa_erase()'s return value can serve the same purpose. Second, nothing takes a matching reference on insert any more, so even for exports that are in the xarray this put has no counterpart. Worth noting too: this runs with obd_dev_lock held, and if it ever is the final reference, class_export_put() -> obd_zombie_export_add() takes obd_dev_lock again.
reply Gerrit AI review for Lustre obd_config.c:963 — (minor) xa_destroy() on the next line already erases every entry and frees the nodes, so this loop looks like a no-op. If the intent was to
Gerrit AI review for Lustre
(minor) xa_destroy() on the next line already erases every entry and frees the nodes, so this loop looks like a no-op. If the intent was to release the export references held by the xarray, the loop needs a class_export_put() on each entry (and a reference has to be taken on insert first). Reusing `flag`, the char * used above for parsing the lcfg flag string, as the xa_for_each() entry variable is also confusing to read.
reply Gerrit AI review for Lustre tgt_lastrcvd.c:467 — (defect) This drops a reference the xarray never took, and it does so from a context where the refcount is already zero.
Gerrit AI review for Lustre
(defect) This drops a reference the xarray never took, and it does so from a context where the refcount is already zero.
The main caller chain is class_export_put() -> obd_zombie_exp_cull() -> class_export_destroy() -> obd_destroy_export() -> mdt_destroy_export()/ofd_destroy_export() -> tgt_client_free(). class_export_destroy() opens with
LASSERT(refcount_read(&exp->exp_handle.h_ref) == 0);
so the class_export_put() here hits its own LASSERT(refcount_read(...) > 0) and LBUGs. That is on the teardown path of every regular server export, not just the ones recovered from last_rcvd.
mdt_init_export()'s err_free: path also calls tgt_client_free() directly, where the export is still live, so there it silently loses a reference instead.
The old code only removed the export when it was actually hashed (hlist_unhashed()); the xarray entry only exists for exports added by tgt_clients_data_init() with a non-zero lcd_generation, so an unconditional put cannot be right either way. xa_erase() returning the old entry could be used to tell the two cases apart.
reply Gerrit AI review for Lustre tgt_lastrcvd.c:1773 — (defect) The old cfs_hash_add_unique() took a reference on the export through gen_hash_ops.hs_get()->class_export_get(). ll_xa_insert() does
Gerrit AI review for Lustre
(defect) The old cfs_hash_add_unique() took a reference on the export through gen_hash_ops.hs_get()->class_export_get(). ll_xa_insert() does not, so after the class_export_put() two lines below the xarray holds a bare pointer with no reference at all. Every surviving class_export_put() that was paired with that reference is now unbalanced - see class_unlink_export(), tgt_client_free(), the error path below at tgt_set_reply_slot(), and distribute_txn_replay_handle(). Should this be class_export_get(exp) before the insert?
reply Gerrit AI review for Lustre tgt_lastrcvd.c:1775 — (minor) GFP_KERNEL here; Lustre server allocations in this path normally use GFP_NOFS (OBD_ALLOC_PTR() a few lines up does). This runs durin
Gerrit AI review for Lustre
(minor) GFP_KERNEL here; Lustre server allocations in this path normally use GFP_NOFS (OBD_ALLOC_PTR() a few lines up does). This runs during target mount while reading last_rcvd, so reclaim recursing back into the same device seems worth avoiding.
reply Gerrit AI review for Lustre tgt_lastrcvd.c:2252 — (defect) The success-path class_export_put() below was removed with the switch to xa_load(), but this one on the tgt_set_reply_slot() error
Gerrit AI review for Lustre
(defect) The success-path class_export_put() below was removed with the switch to xa_load(), but this one on the tgt_set_reply_slot() error path was left behind. xa_load() returns no reference, so this drops one that belongs to someone else.
reply Gerrit AI review for Lustre update_recovery.c:1091 — (defect) cfs_hash_lookup() returned a referenced export, and that reference was handed to tsi->tsi_exp and released later by distribute_txn_
Gerrit AI review for Lustre
(defect) cfs_hash_lookup() returned a referenced export, and that reference was handed to tsi->tsi_exp and released later by distribute_txn_replay_handle():
if (tgt_ses_info(env)->tsi_exp != NULL) {
class_export_put(tgt_ses_info(env)->tsi_exp);
xa_load() returns an unreferenced pointer, so that put now drops a reference this path never acquired, and tsi_exp can be freed under the replay while it is still in use.
Separately, gen_kepcmp() used to reject exports with exp_failed set, so an evicted export could never end up in tsi_exp. xa_load() has no such filter - is update replay expected to cope with a failed export here?
owner James Simmons · uploader James Simmons · PS5 uploaded 57d ago · NEW · open in Gerrit ↗
commit message
LU-8130 obd: replace gen hash with Xarray Using a hash table for sequential values doesn't make sense in this case. Instead track the recovery generation values for exports using a Xarray. Change-Id: Iccff86b7473c61a25caf336b30342ce2dc12e148 Signed-off-by: James Simmons <jsimmons@infradead.org>
65273
master
J –B ✓T ✗1R -1/2−
LU-14291 utils: don't build gss server utilies for clients
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
5 unresolved
S +11 −6
58d
LU-14291 utils: don't build gss server utilies for clients
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
5 unresolved
S +11 −6
58d
needs rebase — checkpatch: cannot be cherry-picked
enforced failed: custom-1001
5 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
build #127068 SUCCESS · tests all Maloo sessions
patchsets:
PS3 04-14
PS4 04-14
PS5 04-18
PS6 04-30
PS7 06-29
+2 earlier
PS1 04-13 PS2 04-14threads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (typo) "utilies" -> "utilities" in the subject, and "utilites" -> "utilities" on the body line below.
Gerrit AI review for Lustre
(typo) "utilies" -> "utilities" in the subject, and "utilites" -> "utilities" on the body line below.
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (minor) The body only covers the lsvcgssd/l_getauth split, but the diff also appends $(UTILS_CFLAGS) to AM_CFLAGS. Is that intended to ride
Gerrit AI review for Lustre
(minor) The body only covers the lsvcgssd/l_getauth split, but the diff also appends $(UTILS_CFLAGS) to AM_CFLAGS. Is that intended to ride along here, or should it be a separate change? Either way it should be mentioned so the hunk isn't a surprise.
reply Gerrit AI review for Lustre Makefile.am:4 — (minor) This hunk isn't part of the client/server split. If the intent is to pick up the distro build flags the way lustre/utils/Makefile.am
Gerrit AI review for Lustre
(minor) This hunk isn't part of the client/server split. If the intent is to pick up the distro build flags the way lustre/utils/Makefile.am does, note that file also sets
AM_LDFLAGS := $(UTILS_LDFLAGS)
and UTILS_LDFLAGS is exported alongside UTILS_CFLAGS in lustre.spec.in. Here the link flags are still unset, and each program overrides them with its own lsvcgssd_LDFLAGS/l_getauth_LDFLAGS/lgss_keyring_LDFLAGS/lgss_sk_LDFLAGS = $(KRBLDFLAGS), so an AM_LDFLAGS alone wouldn't take effect either - $(UTILS_LDFLAGS) would have to be added to each of those lines. Should the hardening flags be applied consistently, in a patch of their own?
reply Gerrit AI review for Lustre Makefile.am:15 — (suggestion) While completing the client/server split: lustre/scripts/systemd/Makefile.am still installs lsvcgss.service unconditionally und
Gerrit AI review for Lustre
(suggestion) While completing the client/server split: lustre/scripts/systemd/Makefile.am still installs lsvcgss.service unconditionally under HAVE_SYSTEMD, and the spec adds it to lustre.files the same way, even though lsvcgss_sysd and the init script are already SERVER-only. So a client package keeps shipping a unit for a daemon it no longer builds. Worth wrapping in SERVER here too?
reply Gerrit AI review for Lustre Makefile.am:15 — With these two now server-only, a client-only install has no l_getauth and no lsvcgssd, but test-framework.sh still resolves both on the loc
Gerrit AI review for Lustre
With these two now server-only, a client-only install has no l_getauth and no lsvcgssd, but test-framework.sh still resolves both on the local (client) node and has no /usr/sbin fallback:
export L_GETAUTH=${L_GETAUTH:-"$LUSTRE/utils/gss/l_getauth"}
[ ! -f "$L_GETAUTH" ] && export L_GETAUTH=$(which l_getauth 2> /dev/null)
export LSVCGSSD=${LSVCGSSD:-"$LUSTRE/utils/gss/lsvcgssd"}
[ ! -f "$LSVCGSSD" ] && export LSVCGSSD=$(which lsvcgssd 2> /dev/null)
When the test node runs a client build both expand to the empty string, and the values are then used on the server nodes:
do_nodes $nodes "$LSVCGSSD -vvv -s -m -o -z $options" || return 1
do_nodesv $node "$L_GETAUTH -d"
do_nodesv $servers "$LCTL set_param sptlrpc.gss.rsi_upcall=$L_GETAUTH"
start_gss_daemons() then runs "-vvv -s -m -o -z" remotely and returns 1, and init_gss() does start_gss_daemons() || error_exit, so setup aborts for any SHARED_KEY/krb5 run on a mixed client/server install. Should this patch also give L_GETAUTH/LSVCGSSD a "/usr/sbin/..." fallback (the way LR_READER and LSOM_SYNC do a few lines above), or resolve them on a server facet instead?
owner James Simmons · uploader James Simmons · PS7 uploaded 127d ago · NEW · open in Gerrit ↗
commit message
LU-14291 utils: don't build gss server utilies for clients Both lsvcgssd and l_getauth are server only utilites. Test-Parameters: trivial env=SHARED_KEY=true testlist=sanity,sanity-sec Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Iba4830ea74cad3b6c615663bd7ebe135cf39515f
49732
master
J ✓B ✓T ✗1R 0/2
LU-12661 tests: re-enable sanity 817
enforced failed: review-ldiskfs-dne-arm
8 unresolved
XS +0 −4
82d
LU-12661 tests: re-enable sanity 817
enforced failed: review-ldiskfs-dne-arm
8 unresolved
XS +0 −4
82d
enforced failed: review-ldiskfs-dne-arm
8 unresolved thread(s) await your reply — last from Andreas Dilger
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-dne-arm | RHEL 8.10 / x86_64, Rocky 9.5 / aarch64 | ran 5 tests. 1 tests failed: sanity. | session |
build #129258 SUCCESS · tests all Maloo sessions
no vote yet: Neil Brown
patchsets:
PS1 01-23
PS2 05-13
PS3 08-13
threads: 8 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger COMMIT_MSG:13 — (style) presumably should have a `Fixes:` line?
Andreas Dilger
(style) presumably should have a `Fixes:` line?
reply Andreas Dilger COMMIT_MSG:14 — (style) prefer `Change-Id:` after `Signed-off-by:`
Andreas Dilger
(style) prefer `Change-Id:` after `Signed-off-by:`
reply Gerrit AI review for Lustre COMMIT_MSG:9 — Could the message name the fixes it is relying on, and the minimum kernel version they are in? As written "newer kernels and fixes landed fo
Gerrit AI review for Lustre
Could the message name the fixes it is relying on, and the minimum kernel version they are in? As written "newer kernels and fixes landed for better NFS support" is not verifiable, and LU-12661 is still Open with summary "sanity test_817: FAIL: failed to execute 'true' command". The exclusion 3e2c28437404 removed here was widened from 4.14 to 4.12 specifically because SLES 4.12.14 hit it, and 4fed33473ca2 recorded that the failure happens "regardless of whether the nfs export is backed by a lustre mount or not" - i.e. it is nfsd holding the file open, not something llite can fix. That makes it worth spelling out which change is expected to have altered this.
reply Gerrit AI review for Lustre COMMIT_MSG:10 — (typo) "sanity tets 817" -> "tests".
Gerrit AI review for Lustre
(typo) "sanity tets 817" -> "tests".
reply Gerrit AI review for Lustre COMMIT_MSG:13 — (style) carried over from the previous revision, which was rebased without changes: a `Fixes:` line still seems appropriate here since this
Gerrit AI review for Lustre
(style) carried over from the previous revision, which was rebased without changes: a `Fixes:` line still seems appropriate here since this undoes the exclusion added by
Fixes: 3e2c28437404 ("LU-12661 tests: skip sanity 817 for kernel 4.12+")
reply Gerrit AI review for Lustre COMMIT_MSG:14 — (style) also carried over from the previous revision: `Change-Id:` is still before `Signed-off-by:`.
Gerrit AI review for Lustre
(style) also carried over from the previous revision: `Change-Id:` is still before `Signed-off-by:`.
reply Gerrit AI review for Lustre sanity.sh:52 — Dropping the block entirely re-enables 817 on every kernel, not just new ones. All currently supported clients in lustre/ChangeLog are above
Gerrit AI review for Lustre
Dropping the block entirely re-enables 817 on every kernel, not just new ones. All currently supported clients in lustre/ChangeLog are above the 4.12 threshold - RHEL 8.10 (4.18.0-553), RHEL 9.7/9.8 (5.14.0), SLES15 SP5 (5.14.21), Ubuntu 22.04 (5.15) - so the test now runs on exactly the kernels the exclusion was added for, with nothing gating it on the "newer kernels" the commit message refers to.
If the fix really is version dependent, would a bounded guard be safer, e.g.
if (( $LINUX_VERSION_CODE < $(version_code X.Y.0) )); then
always_except LU-12661 817
fi
with X.Y.0 being the first kernel where nfsd releases the file?
reply Gerrit AI review for Lustre sanity.sh:36565 — With the exclusion gone this line runs again, and it execs immediately after the copy with no wait. exec() returns ETXTBSY while any writer
Gerrit AI review for Lustre
With the exclusion gone this line runs again, and it execs immediately after the copy with no wait. exec() returns ETXTBSY while any writer holds the inode, and nfsd drops its write reference asynchronously (filecache / NFSv4 open state), not at the point `cp` returns - which is what 4fed33473ca2 described as "nfsd is not releasing the file after write".
Even on a kernel where nfsd does eventually release it, checking once immediately after the copy looks racy. Could this either unmount $tmpdir first to force the client CLOSE, or retry, e.g.
wait_update $HOSTNAME "$DIR/nfsexp/true && echo ok" "ok" 30 ||
error "failed to execute 'true' command"
owner James Simmons · uploader James Simmons · PS3 uploaded 83d ago · NEW · open in Gerrit ↗
commit message
LU-12661 tests: re-enable sanity 817 With newer kernels and fixes landed for better NFS support lets re-enable sanity tets 817. Test-Parameters: trivial Test-Parameters: testlist=sanity env=ONLY=817 Change-Id: I993165efdf5a7472676c5af20e079d6fbee5a098 Signed-off-by: James Simmons <jsimmons@infradead.org>
58003
master
J !B ✓T ✗1R -1/2−
LU-18652 tests: no compression with zfs create / zpool setup
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
rocky8
S +9 −11
94d
LU-18652 tests: no compression with zfs create / zpool setup
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
rocky8
S +9 −11
94d
needs rebase — checkpatch: cannot be cherry-picked
enforced failed: custom-1001
janitor run: 1 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
build #112064 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Brian Behlendorf
patchsets:
PS1 02-07
PS2 02-07
PS3 02-24
PS4 03-20
PS5 03-28
owner James Simmons · uploader James Simmons · PS5 uploaded 585d ago · NEW · open in Gerrit ↗
commit message
LU-18652 tests: no compression with zfs create / zpool setup Several of the conf-sanity test are disabled due to ZFS by default using compression. Update all the zpool and zcreate calls to turn off compression by default. With this change we can re-enable several test. Test-Parameters: trivial fstype=zfs testlist=conf-sanity Change-Id: I00751a6a3e7c925e8d89c8697fb8e8705d46c8bf Signed-off-by: James Simmons <jsimmons@infradead.org>
65397
master
J !B ✗T –R -1/2−
LU-0000 obdclass: rollback testing
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 116d
S +2 −17
116d
LU-0000 obdclass: rollback testing
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 116d
S +2 −17
116d
needs rebase — checkpatch: cannot be cherry-picked
build failure (#124346)
janitor run: 16 failing config(s), none unique to this patch — janitor results
build #124346 FAILURE
patchsets:
PS1 04-17
PS2 04-18
PS3 04-19
PS4 04-20
PS5 04-24
owner James Simmons · uploader James Simmons · PS5 uploaded 193d ago · NEW · open in Gerrit ↗
commit message
LU-0000 obdclass: rollback testing find breakage Test-Parameters: trivial Change-Id: I93c1ca71984efd3b66e56d549141c78883abebc6 Signed-off-by: James Simmons <jsimmons@infradead.org>
55821
master
J !B ✓T ✗8R 0/2
LU-12607 osd-zfs: use proper locking for dnodes
enforced failed: review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-zfs
stalled 123d
S +13 −15
123d
LU-12607 osd-zfs: use proper locking for dnodes
enforced failed: review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-zfs
stalled 123d
S +13 −15
123d
janitor run: 2 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-zfs-part-1 failed 2× | RHEL 8.9/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
| review-dne-zfs-part-2 failed 2× | RHEL 8.9/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
| review-dne-zfs-part-3 failed 2× | RHEL 8.9/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
| review-dne-zfs-part-4 failed 2× | RHEL 8.9/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
| review-dne-zfs-part-5 failed 2× | RHEL 8.9/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
| review-dne-zfs-part-6 failed 2× | RHEL 8.9/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
| review-dne-zfs-part-7 failed 2× | RHEL 8.9/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
| review-zfs failed 2× | RHEL 8.9/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
20 optional test failure(s) — informational
build #106283 SUCCESS · tests all Maloo sessions
no vote yet: Brian Behlendorf, Timothy Day
owner James Simmons · uploader James Simmons · PS1 uploaded 836d ago · NEW · open in Gerrit ↗
commit message
LU-12607 osd-zfs: use proper locking for dnodes Currently lustre uses the DB_DNODE_[ENTER|EXIT] macros which is incorrect as pointed out by the ZFS developers. OpenZFS ticket https://github.com/openzfs/zfs/pull/9027 exported the proper dnode management functions so move Lustre to these new functions. Change-Id: If1165c4db149a1eb46bf00df9b48589d90acb7c6 Signed-off-by: James Simmons <jsimmons@infradead.org>
63209
master
J –B ✓T ✓R -1/2−
LU-13903 build: allow building for a kernel with native client
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 134d
1 unresolved
S +21 −11
134d
LU-13903 build: allow building for a kernel with native client
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 134d
1 unresolved
S +21 −11
134d
needs rebase — checkpatch: cannot be cherry-picked
Timothy Day voted -1
1 unresolved thread(s) await your reply — last from Shaun Tancheff
no vote yet from Shaun Tancheff
build #120080 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1 · Timothy Day -1
no vote yet: Shaun Tancheff
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Shaun Tancheff patchset comment — Maybe you are asking about user space utilities? Those do now know anything about the kernel headers, they should build just like any other
Timothy Day
``` checking for /tmp/ktest-out/kernel_build.x86_64/.config... noconfigure: error: Kernel config could not be found. ``` The userland build shouldn't depend on the kernel config. I think we'd need to skip this check somehow.
Timothy Day
I think I know what's wrong: --disable-modules isn't propagated when we try to make the debian packages. There's a couple other tweaks we need as well. I can push an updated patch.
Timothy Day
The kernel really doesn't like it if you attempt to build userspace components against the Linux source tree. They recommend (https://kernelnewbies.org/KernelHeaders) either building against the installed headers (i.e. what you already have implemented) or building against a version of the headers copied from Linux. This would be equivalent to building against the openSFS headers. I think this should be supported somehow. Perhaps --disable-modules could have an argument to decided whether to use the installed headers or openSFS headers?
James Simmons
The question is which UAPI headers to test against? Some of the autoconf test for the utilities look at the UAPI headers to decided what is supported.
James Simmons
Oops. I added Shaun so we can verify. Do the autoconf test use the kernel UAPI pointed to by --with-kernel. I do agree we don't need to look at the .config for the kernel. The only complex case is the dummy fscrypt kernel option that changed.
Shaun Tancheff
> Do the autoconf test use the kernel UAPI pointed to by --with-kernel Yes. The test builds work the same as any kernel module build. You can see generated examples with: $ export PARALLEL_BUILD_OPT=debug $ ./configure ...
Shaun Tancheff
Maybe you are asking about user space utilities? Those do now know anything about the kernel headers, they should build just like any other user space utility looking under /usr/include and /usr/lib
owner James Simmons · uploader James Simmons · PS1 uploaded 307d ago · NEW · open in Gerrit ↗
commit message
LU-13903 build: allow building for a kernel with native client Currently we can build just the Lustre utilites on a system with a installed kernel with native Lustre client support. This doesn't work for building against a kernel tree with the native lustre client i.e ./configure --disable-modules --disable-server --with-linux=~/lustre-upstream This patch adds takes the kernel header location and adds it to the CPPFLAGS. The tools then can be built against that set of headers. Test-Parameters: trivial Change-Id: I3348f90474d0dd87da5fc8e779b71c9d6a2953df Signed-off-by: James Simmons <jsimmons@infradead.org>
24554
master
J –B ✓T ✓R +1/2−
LU-8980 libcfs: add tracepoint support for libcfs
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 141d
XL +3118 −254
141d
LU-8980 libcfs: add tracepoint support for libcfs
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 141d
XL +3118 −254
141d
needs rebase — checkpatch: cannot be cherry-picked
John Hammond voted -1
reviews:
Dmitry Eremin +1 · Gu Zheng +1 · Olaf Weber +1 · John Hammond -1
no vote yet: Jinshan Xiong, Timothy Day, Jesse Hanley, Andreas Dilger, Brian Behlendorf, Matt Ezell, Lustre Buildbot
owner James Simmons · uploader James Simmons · PS18 uploaded 3375d ago · NEW · open in Gerrit ↗
commit message
LU-8980 libcfs: add tracepoint support for libcfs Add initial trace events to the libcfs module. With this we can now collect data using the perf utility. Each traditonal lustre debug macro is turned into an unique tracepoint event. Any debugging macros moved over to trace point will now handling printing message to the console. Change-Id: I0fc6efc24fd9495fae2829990f74b1a72491baf8 Signed-off-by: James Simmons <uja.ornl@yahoo.com>
64565
master
J ✗1B ✓T ✗2R -1/2−
LU-14291 gss: seperate out the client from server code.
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
1 unique failure
stalled 159d
M +86 −44
159d
LU-14291 gss: seperate out the client from server code.
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
1 unique failure
stalled 159d
M +86 −44
159d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 1 test failure unique to this patch — sanity-flr@ldiskfs+DNE:test_70a
enforced failed: review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-flr@ldiskfs+DNE:test_70a | seen in 92 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-selinux-ssk-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-selinux-ssk-part-2 failed 4× | RHEL 8.10 / x86_64 | ran 8 tests. 3 tests failed: lustre-initialization, sanity-sec, recovery-small. | session |
5 optional test failure(s) — informational
build #124507 SUCCESS · tests all Maloo sessions
no vote yet: Sebastien Buisson
patchsets:
PS1 03-13
PS2 03-13 Janitor Bot
PS3 03-31 Janitor Bot
PS4 04-13
PS5 04-30
owner James Simmons · uploader James Simmons · PS5 uploaded 187d ago · NEW · open in Gerrit ↗
commit message
LU-14291 gss: seperate out the client from server code. The gss code is all lumped together. Lets separate the code out. Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: If249e56e27054aa8accd4754e9bddec010ff0e7a
33259
master
J !B ✓T ✗1R 0/2
LU-9868 llite: remove directory-specific code from ll_find_alias()
enforced failed: review-dne-part-5
upstream
stalled 207d
S +9 −18
207d
LU-9868 llite: remove directory-specific code from ll_find_alias()
enforced failed: review-dne-part-5
upstream
stalled 207d
S +9 −18
207d
janitor run: 4 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-5 | RHEL 9.5 / x86_64 | ran 5 tests. 1 tests failed: sanityn. | session |
build #123698 SUCCESS · tests all Maloo sessions
no vote yet: Neil Brown, Andreas Dilger
patchsets:
PS4 02-27
PS5 02-27
PS6 10-14
PS7 04-09
PS8 04-10
+2 earlier
PS2 04-01 PS3 06-20owner James Simmons · uploader James Simmons · PS8 uploaded 208d ago · NEW · open in Gerrit ↗
commit message
LU-9868 llite: remove directory-specific code from ll_find_alias() Now that ll_find_alias() is never called for directories, we can remove code that only applies to directories. Linux-commit: ac63774689265d50bc1d83ac9b7889ac7e645b5a Signed-off-by: Mr. NeilBrown <neil@brown.name> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I54f726eac648374cd631319095cfdab8b1f5dfff
44846
master
J ✗4B ✓T ✗6R -1/2−
LU-11501 llite: use d_real for directories in fid cache.
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
4 unique failures
stalled 208d
1 unresolved
M +105 −28
208d
LU-11501 llite: use d_real for directories in fid cache.
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
4 unique failures
stalled 208d
1 unresolved
M +105 −28
208d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 4 test failures unique to this patch — runtests-ssk@ldiskfs+SharedKey:test_1, runtests-ssk@ldiskfs+SharedKey:test_cleanup, runtests@zfs:test_1 +1 more
enforced failed: review-dne-part-4, review-dne-selinux-ssk-part-1, review-dne-zfs-part-4, review-ldiskfs, review-ldiskfs-arm
Neil Brown voted -1
1 thread(s) waiting on others
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| runtests-ssk@ldiskfs+SharedKey:test_1 | seen in 3 other reviews |
| runtests-ssk@ldiskfs+SharedKey:test_cleanup | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| runtests@zfs:test_1 | seen in 3 other reviews |
| runtests@zfs:test_cleanup | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-4 | RHEL 8.8/x86_64 | ran 9 tests. 1 tests failed: sanity-hsm. | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.8/x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-4 | RHEL 8.8/x86_64 | ran 9 tests. 1 tests failed: sanity-hsm. | session |
| review-ldiskfs crashed | RHEL 8.8/x86_64, RHEL 9.2/x86_64 | ran 7 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs crashed | RHEL 8.8/x86_64 | ran 7 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs-arm crashed | RHEL 8.7/aarch64, RHEL 8.8/x86_64 | ran 8 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
4 optional test failure(s) — informational
build #96374 SUCCESS · tests all Maloo sessions
reviews:
Neil Brown -1 · Andreas Dilger +1
no vote yet: Qian Yingjin
patchsets:
PS14 11-14
PS15 04-01
PS16 04-21
PS17 06-20
PS18 07-20
+13 earlier
PS1 09-05 PS2 09-06 PS3 09-07 PS4 09-07 PS5 09-07 PS6 09-07 PS7 09-08 PS8 09-10 PS9 09-22 PS10 09-27 PS11 10-07 PS12 10-17 PS13 10-19threads: 0 need your reply · 1 waiting on others · 0 own notes · 0 bot
owner James Simmons · uploader James Simmons · PS18 uploaded 1203d ago · NEW · open in Gerrit ↗
commit message
LU-11501 llite: use d_real for directories in fid cache. Lustre has a special directory called .lustre which contains a collection of directories whose name matches a fid. This is used in a similar way as open by fhandle but we use this functionality since it allows opens by normal users. For opening a file by proxy with the .lustre/fid/"FID" directory we use a dcache alias. While this is valid Lustre does the same thing for open a directory with this .lustre FID which means we have multiple hard links to directories which is forbidden. More modern kernels report this as an error and we risk a future kernel pruning such dentry entries. The solution is to look at how overlayfs does this since .lustre is sort of a pseudo file system. We can use d_real() to lookup the real dentry that maps to the special .lustre/fid/"FID". Change-Id: I02d8a54465d685430d9290c24faf1ef6bfd6a876 Signed-off-by: James Simmons <jsimmons@infradead.org>
33261
master
J ✗2B ✓T ✗9R 0/2
LU-9868 llite: refine ll_find_alias based on d_exact_alias
janitor: 2 test failures unique to this patch — sanity3@zfs:test_233a, sanityn@zfs:test_108a
2 unique failures
upstream
stalled 208d
S +20 −10
208d
LU-9868 llite: refine ll_find_alias based on d_exact_alias
janitor: 2 test failures unique to this patch — sanity3@zfs:test_233a, sanityn@zfs:test_108a
2 unique failures
upstream
stalled 208d
S +20 −10
208d
janitor: 2 test failures unique to this patch — sanity3@zfs:test_233a, sanityn@zfs:test_108a
enforced failed: review-dne-part-1, review-dne-part-2, review-dne-selinux-ssk-part-1, review-dne-zfs-part-1, review-ldiskfs, review-ldiskfs-ubuntu
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity3@zfs:test_233a | seen in 3 other reviews |
| sanityn@zfs:test_108a | seen in 11 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-part-1 | RHEL 9.5 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-part-2 | RHEL 9.5 / x86_64 | ran 11 tests. 1 tests failed: sanity-lfsck. | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 9.5 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, SLES 15.5 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 24.04 / x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
build #123622 SUCCESS · tests all Maloo sessions
no vote yet: Neil Brown
patchsets:
PS3 06-20
PS4 02-27
PS5 02-27
PS6 10-14
PS7 04-09
+1 earlier
PS2 04-01owner James Simmons · uploader James Simmons · PS7 uploaded 208d ago · NEW · open in Gerrit ↗
commit message
LU-9868 llite: refine ll_find_alias based on d_exact_alias The task of ll_find_alias() is now very similar to d_exact_alias(). We cannot use that function directly, but we can copy much of the structure so that the similarities and differences are more obvious. Examining d_exact_alias() shows that the d_lock spinlock does not need to be held in ll_find_alias as much as it currently is. Linux-commit: 8016ab9ebbda3dee637ac66b9e0f7a74ef6fe9e6 Signed-off-by: Mr. NeilBrown <neilb@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I52ba4bc35cb84f523551816df7df2d4d0b1573b7
33260
master
J !B ✓T ✗8R 0/2
LU-9868 llite: simplify ll_find_alias()
enforced failed: review-dne-part-1, review-dne-selinux-ssk-part-1, review-dne-zfs-part-1, review-ldiskfs, review-ldiskfs-ubuntu
upstream
stalled 208d
S +8 −15
208d
LU-9868 llite: simplify ll_find_alias()
enforced failed: review-dne-part-1, review-dne-selinux-ssk-part-1, review-dne-zfs-part-1, review-ldiskfs, review-ldiskfs-ubuntu
upstream
stalled 208d
S +8 −15
208d
janitor run: 23 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-part-1 | RHEL 9.5 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 9.5 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, SLES 15.5 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 24.04 / x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
build #123621 SUCCESS · tests all Maloo sessions
no vote yet: Neil Brown
patchsets:
PS3 06-20
PS4 02-27
PS5 02-27
PS6 10-14
PS7 04-09
+1 earlier
PS2 04-01owner James Simmons · uploader James Simmons · PS7 uploaded 208d ago · NEW · open in Gerrit ↗
commit message
LU-9868 llite: simplify ll_find_alias() Now that ll_find_alias is only searching for one type of dentry, we can return as soon as we find it. This allows substantial simplification, and brings the bonus that we don't need to take the d_lock again just to increment the ref-count. We can increment it immediately that the dentry is found. Linux-commit: 7e08e9a8942dfc38693edf2e389cde620e918356 Signed-off-by: Mr. NeilBrown <neilb@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I18d6130c27186e1a7c9254e50b4d1242b7ada383
62479
master
J !B ✓T ✗10R -1/2−
LU-19298 lod: use Xarray instead of static arrays for comp entires
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 217d
1 unresolved
L +442 −423
217d
LU-19298 lod: use Xarray instead of static arrays for comp entires
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 217d
1 unresolved
L +442 −423
217d
needs rebase — checkpatch: cannot be cherry-picked
enforced failed: review-dne-part-2, review-dne-part-4, review-dne-part-7, review-dne-zfs-part-2, review-dne-zfs-part-4, review-dne-zfs-part-7, review-zfs
1 unresolved thread(s) await your reply — last from Andreas Dilger
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 crashed | RHEL 9.5 / x86_64 | ran 13 tests. 2 tests failed: sanity-pfl, sanity-lfsck. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-2 crashed | RHEL 8.10 / x86_64 | ran 13 tests. 2 tests failed: sanity-pfl, sanity-lfsck. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-4 crashed | RHEL 8.10 / x86_64 | ran 11 tests. 2 tests failed: sanity-quota, sanity-flr. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-4 crashed | RHEL 9.5 / x86_64 | ran 11 tests. 2 tests failed: sanity-quota, sanity-flr. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-7 crashed | RHEL 8.10 / x86_64 | ran 7 tests. 1 tests failed: sanity-pcc. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-7 crashed | RHEL 9.5 / x86_64 | ran 7 tests. 1 tests failed: sanity-pcc. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-2 crashed | RHEL 8.10 / x86_64 | ran 13 tests. 2 tests failed: sanity-pfl, sanity-lfsck. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-4 | RHEL 8.10 / x86_64 | ran 11 tests. 1 tests failed: sanity-flr. | session |
| review-dne-zfs-part-7 crashed | RHEL 8.10 / x86_64 | ran 7 tests. 1 tests failed: sanity-pcc. %% THIS TEST SESSION CRASHED %% | session |
| review-zfs | RHEL 8.10 / x86_64 | ran 10 tests. 1 tests failed: sanity-flr. | session |
build #119712 SUCCESS · tests all Maloo sessions
no vote yet: Ronnie Sahlberg, Qian Yingjin, Alexey Lyashkov, Andreas Dilger, Zhenyu Xu, Patrick Farrell
patchsets:
PS1 11-10
PS2 11-16
PS3 12-12
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger patchset comment — James, file layout join/migrate/mirror happen _maybe_ only once or twice in the lifetime of a file, so it doesn't make sense to add a comple
Patrick Farrell
James, the lack of ability to remove other components than the last one is a deliberate choice to prevent the creation of incomplete layouts. There is nothing about the current approach that can’t support removing other components, it’s just a sanity restriction.
James Simmons
Think about file join work with 2 mirrors each with 3 components and another file with also 2 mirrors also with 3 components. Its going to be merged right. The current approach would require allocating a new larger array. Then copying items from file 1 static array and then copying items from file 2 static array. Then deleting the old array. Some slicing is needed due the 2 mirrors. Compared to Xarray its erasing the reference to pointers in file 2 xarray and adding a reference of that same pointer into file 1 Xarray. Do you feel the former approach is way better? Honestly the biggest impact is for the file join project so the really important opinion I need is from Alexey. Alexey what do you think?
Patrick Farrell
Yes, I do - it's very simple. You allocate a larger array and write the layout to it. Very simple. It requires no complex data structures and no locking. The idea that we should have references across two xarrays is very concerning - that means the layout components need reference counting then, I guess? They do not today. There is no particular impact on file join - it is just as easy to do file join via layout copy as any other operation.
Andreas Dilger
James, file layout join/migrate/mirror happen _maybe_ only once or twice in the lifetime of a file, so it doesn't make sense to add a complex data structure and overhead to optimize a 0.00001% usage case. That is doubly a problem if it means many small allocations and/or additional locking needs to be added to handle this extremely rare use case.
owner James Simmons · uploader James Simmons · PS3 uploaded 326d ago · NEW · open in Gerrit ↗
commit message
LU-19298 lod: use Xarray instead of static arrays for comp entires The LOD layer implements very large static arrays to manage the component entries for each layout. This works well for the case that all the components are for block I/O that are expected to be aligned to each other in a specific order. In such cases the API works to add or delete components at the end of such layouts. With the upcoming introducting of parity and foreign components the rules change in that you can delete or add a component located in the middle of the layout. This would be very complicated when using static arrays. To make life easier for upcoming projects we move away from static arrays to using Xarrays. We no longer requires creating a whole new array and copying components over. Instead we just insert or delete components into the Xarray. This current implementation just does the change from static arrary to Xarray without truly introducing gaps in the Xarray. This can be done in follow on patches and can be used to greatly simplify the code. For example since "gaps" are allowed in the Xarray we can place components in the Xarray using the mirror id as apart of the index which mirrors the component ID. This removes the need to manage the new mirror ranges in the Xarray. Change-Id: I67020f899ad89bfa6095c4b22f7f1b07b6de3e86 Signed-off-by: James Simmons <jsimmons@infradead.org>
60897
master
J ✗2B ✓T ✗4R -1/2−
LU-19298 lod: merge different lmm handling togther.
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
2 unique failures
stalled 218d
L +225 −300
218d
LU-19298 lod: merge different lmm handling togther.
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
2 unique failures
stalled 218d
L +225 −300
218d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 2 test failures unique to this patch — sanity-pfl@ldiskfs+DNE:test_1c, sanity-pfl@zfs:test_1c
enforced failed: review-dne-part-2, review-dne-zfs-part-2, review-ldiskfs-ubuntu
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-pfl@ldiskfs+DNE:test_1c | NEW unique failure for this branch in the last 30 days, and was seen 2 times across 1 other branches 1 reviews |
| sanity-pfl@zfs:test_1c | NEW unique failure for this branch in the last 30 days, and was seen 2 times across 1 other branches 1 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 | RHEL 8.10 / x86_64 | ran 11 tests. 1 tests failed: sanity-pfl. | session |
| review-dne-part-2 | RHEL 9.5 / x86_64 | ran 11 tests. 1 tests failed: sanity-pfl. | session |
| review-dne-zfs-part-2 | RHEL 8.10 / x86_64 | ran 11 tests. 1 tests failed: sanity-pfl. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
4 optional test failure(s) — informational
build #116154 SUCCESS · tests all Maloo sessions
no vote yet: Alexey Lyashkov, Andreas Dilger, Patrick Farrell
patchsets:
PS2 08-27
PS3 08-28
PS4 08-31
PS5 08-31 Janitor Bot
PS6 08-31
+1 earlier
PS1 08-25owner James Simmons · uploader James Simmons · PS6 uploaded 429d ago · NEW · open in Gerrit ↗
commit message
LU-19298 lod: merge different lmm handling togther. For PFL handling the LOD has developed very similar code independently. Besides code duplication we end up not having consistent PFL handling. For example lod_layout_add() handling doesn't support specific OST indexes being requested by the user for the new component. We merge all the code into lod_comp_for_each_lcm(). In the future any change here will impact many code paths at the same time. For EC developement we don't need to touch any many places in the code. Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Ic2392dd84eb397e87e384d6916ccb2de04b6d083
57348
master
J !B ✓T ✗11R -1/2−
LU-18175 ldlm: replace namespace lock with RCU
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
rocky8
stalled 280d
M +62 −75
280d
LU-18175 ldlm: replace namespace lock with RCU
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
rocky8
stalled 280d
M +62 −75
280d
needs rebase — checkpatch: cannot be cherry-picked
enforced failed: review-dne-part-1, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-selinux-ssk-part-1, review-dne-zfs-part-2, review-dne-zfs-part-4, review-dne-zfs-part-6, review-ldiskfs
janitor run: 4 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 crashed | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-4 crashed | RHEL 8.10 / x86_64 | ran 9 tests. 1 tests failed: sanity-quota. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-5 crashed | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanityn. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-5 crashed | RHEL 9.5 / x86_64 | ran 5 tests. 1 tests failed: sanityn. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-6 crashed | RHEL 8.10 / x86_64 | ran 4 tests. 1 tests failed: ost-pools. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-6 crashed | RHEL 9.5 / x86_64 | ran 4 tests. 1 tests failed: ost-pools. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-selinux-ssk-part-1 crashed | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-2 crashed | RHEL 8.10 / x86_64 | ran 11 tests. 1 tests failed: sanity-pfl. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-4 crashed | RHEL 8.10 / x86_64 | ran 9 tests. 1 tests failed: sanity-quota. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-6 crashed | RHEL 8.10 / x86_64 | ran 4 tests. 1 tests failed: ost-pools. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs crashed | RHEL 8.10 / x86_64, SLES 15.5 / x86_64 | ran 7 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
3 optional test failure(s) — informational
build #115080 SUCCESS · tests all Maloo sessions
no vote yet: Qian Yingjin, Neil Brown, Timothy Day
patchsets:
PS5 02-23
PS6 03-06
PS7 04-02
PS8 06-03
PS9 07-16
+4 earlier
PS1 12-09 PS2 01-16 PS3 01-22 PS4 01-22owner James Simmons · uploader James Simmons · PS9 uploaded 475d ago · NEW · open in Gerrit ↗
commit message
LU-18175 ldlm: replace namespace lock with RCU With newer kernels you can enable a debugfs interface to flush out the shrinkers. When enabled in testing the below was discovered: BUG: sleeping function called from invalid context at kernel/mutex.c:104 in_atomic(): 1, irqs_disabled(): 0, pid: 18286, name: lctl CPU: 3 PID: 18286 Comm: lctl Kdump: loaded Tainted: G OE ------------ 3.10.0-7.9-debug #1 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-1.fc38 04/01/2014 Call Trace: [<ffffffff817ded29>] dump_stack+0x19/0x1b [<ffffffff810c8ec9>] __might_sleep+0xd9/0x100 [<ffffffff817e5540>] mutex_lock+0x20/0x40 [<ffffffffa08ae00c>] ldlm_pools_shrink+0x6c/0x330 [ptlrpc] [<ffffffffa08ae2eb>] ldlm_pools_cli_shrink+0x1b/0x20 [ptlrpc] [<ffffffffa022be76>] shrinker_debugfs_count_show+0x106/0x200 [libcfs] [<ffffffff8126e115>] seq_read+0x135/0x470 [<ffffffff81244899>] vfs_read+0xb9/0x1c0 [<ffffffff812457cf>] SyS_read+0x7f/0xf0 [<ffffffff817f400c>] system_call_fastpath+0x1f/0x24 This is due to the debugfs interface taking its own mutex lock and our own ldlm pools using a mutex lock as well. Replace our mutex lock with RCU list handling. Special note is that their is no list_empty_rcu(). We have to use list_first_or_null_rcu() instead. This is due to list_empty() and the next list operation performing separate READ_ACCESS which can give different results. Change-Id: I175f345b5a8cf7d29e32c7e192620f9c896e6a9d Signed-off-by: James Simmons <jsimmons@infradead.org>
56527
master
J !B ✓T ✗10R 0/2
LU-13118 lustre: use UUID for naming instead of internal pointers
enforced failed: review-dne-part-4, review-dne-part-5, review-dne-part-7, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-5, review-dne-zfs-part-7, review-ldiskfs
upstream
stalled 325d
7 unresolved
M +58 −50
325d
LU-13118 lustre: use UUID for naming instead of internal pointers
enforced failed: review-dne-part-4, review-dne-part-5, review-dne-part-7, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-5, review-dne-zfs-part-7, review-ldiskfs
upstream
stalled 325d
7 unresolved
M +58 −50
325d
enforced failed: review-dne-part-4, review-dne-part-5, review-dne-part-7, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-5, review-dne-zfs-part-7, review-ldiskfs
7 unresolved thread(s) await your reply — last from Aurelien Degremont
janitor run: 5 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-4 | RHEL 9.4 / x86_64 | ran 9 tests. 1 tests failed: sanity-hsm. | session |
| review-dne-part-5 | RHEL 8.10 / x86_64 | ran 8 tests. 1 tests failed: recovery-small. | session |
| review-dne-part-5 | RHEL 9.4 / x86_64 | ran 8 tests. 1 tests failed: recovery-small. | session |
| review-dne-part-7 | RHEL 8.10 / x86_64 | ran 4 tests. 1 tests failed: sanity-pcc. | session |
| review-dne-part-7 | RHEL 9.4 / x86_64 | ran 4 tests. 1 tests failed: sanity-pcc. | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 7 tests. 1 tests failed: recovery-small. | session |
| review-dne-zfs-part-1 | RHEL 8.10 / x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-5 | RHEL 8.10 / x86_64 | ran 8 tests. 2 tests failed: sanityn, recovery-small. | session |
| review-dne-zfs-part-7 | RHEL 8.10 / x86_64 | ran 4 tests. 1 tests failed: sanity-pcc. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, SLES 15.5 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
5 optional test failure(s) — informational
build #112739 SUCCESS · tests all Maloo sessions
no vote yet: Arshad Hussain, Shaun Tancheff, Andreas Dilger, Timothy Day
patchsets:
PS4 10-15
PS5 12-03
PS6 01-11
PS7 03-08
PS8 04-24
+3 earlier
PS1 09-28 PS2 09-28 PS3 10-01threads: 7 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Aurelien Degremont COMMIT_MSG:13 — would be nice to have some examples of the new names, or before/after
Aurelien Degremont
would be nice to have some examples of the new names, or before/after
reply Shaun Tancheff llite_lib.c:1371 — Do the extra embedded '-' separators cause parsing issues later on?
Shaun Tancheff
Do the extra embedded '-' separators cause parsing issues later on?
reply Shaun Tancheff llite_lib.c:1513 — %pU is not correct here as sbi->ll_sb_uuid.uuid is a max 40 byte string.
Shaun Tancheff
%pU is not correct here as sbi->ll_sb_uuid.uuid is a max 40 byte string.
reply Shaun Tancheff mdc_changelog.c:731 — It is safe to require the '-mdc-' naming? Probably but I have not looked to be positive.
Shaun Tancheff
It is safe to require the '-mdc-' naming? Probably but I have not looked to be positive.
reply Andreas Dilger obd_config.c:1900 — That is my concern as well if the format of the parameters is suddenly getting much longer and having extra dashes in them. In the past we
Shaun Tancheff
Extra '-' separators ... do the confuse a parser somewhere?
Andreas Dilger
That is my concern as well if the format of the parameters is suddenly getting much longer and having extra dashes in them. In the past we had to deal with fsname that contained multiple '-' in them, so some code is using "strrchr()" to find the fsname from the end of the instance name. The current parameters look like: # lctl list_param llite.*.max* llite.myth-ffff909824e7f800.max_easize llite.myth-ffff909824e7f800.max_read_ahead_async_active llite.myth-ffff909824e7f800.max_read_ahead_mb llite.myth-ffff909824e7f800.max_read_ahead_per_file_mb llite.myth-ffff909824e7f800.max_read_ahead_whole_mb llite.myth-ffff909824e7f800.max_cached_mb but with this patch they would become: # lctl list_param llite.*.max* llite.myth-f1da1f0c-f89b-473e-b604-8c265d1c1ecd.max_easize llite.myth-f1da1f0c-f89b-473e-b604-8c265d1c1ecd.max_read_ahead_async_active llite.myth-f1da1f0c-f89b-473e-b604-8c265d1c1ecd.max_read_ahead_mb llite.myth-f1da1f0c-f89b-473e-b604-8c265d1c1ecd.max_read_ahead_per_file_mb llite.myth-f1da1f0c-f89b-473e-b604-8c265d1c1ecd.max_read_ahead_whole_mb llite.myth-f1da1f0c-f89b-473e-b604-8c265d1c1ecd.max_cached_mb which not only makes them longer and harder to parse, but also much less readable. If the main concern here is ASLR then we can avoid printing the raw pointer in the parameter name and work out something else. For example, the kernel could save a random 64-bit number at startup time and XOR with that, and if it needs the original pointer back it can XOR again.
reply Aurelien Degremont liblustreapi_util.c:484 — you probably wants to update this comment to be inline with the syntax.
Aurelien Degremont
you probably wants to update this comment to be inline with the syntax.
reply Shaun Tancheff liblustreapi_util.c:467 — The check could be done before trying the copy
Shaun Tancheff
The check could be done before trying the copy
owner James Simmons · uploader James Simmons · PS8 uploaded 559d ago · NEW · open in Gerrit ↗
commit message
LU-13118 lustre: use UUID for naming instead of internal pointers According to ASLR it is considered a security violation to publish internal kernel addresses to user land. Currently lustre uses internal pointer addresses to create an unique identifier that ends up being used to build the sysfs tree. This patch switches this to using the UUID generated. The reason for using UUID is that in the ptlrpc layer there is a mapping between NIDs and UUIDs and many client interfaces have the same UUIDs so we could cheat and use the device name instead. Change-Id: Id91ceece847402658d1e2a364b3602572daaef87 Signed-off-by: James Simmons <jsimmons@infradead.org>
58304
master
J !B ✓T ✗1R -1/2−
LU-18657 pcc: invalidate instead of truncate inode mapping
enforced failed: custom-1001
stalled 330d
1 unresolved
XS +2 −2
330d
LU-18657 pcc: invalidate instead of truncate inode mapping
enforced failed: custom-1001
stalled 330d
1 unresolved
XS +2 −2
330d
enforced failed: custom-1001
Jian Yu voted -1
1 unresolved thread(s) await your reply — last from Jian Yu
janitor run: 2 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 crashed | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity-pcc. %% THIS TEST SESSION CRASHED %% | session |
1 optional test failure(s) — informational
build #119366 SUCCESS · tests all Maloo sessions
reviews:
Jian Yu -1
no vote yet: Qian Yingjin, Neil Brown, Sebastien Buisson, Timothy Day
patchsets:
PS4 03-11
PS5 03-11
PS6 03-11
PS7 04-25
PS8 12-05
+3 earlier
PS1 03-05 PS2 03-05 PS3 03-06threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Jian Yu patchset comment — [ 2231.421259] ------------[ cut here ]------------
Jian Yu
[ 2231.421259] ------------[ cut here ]------------ [ 2231.422249] kernel BUG at fs/jbd2/transaction.c:2148! [ 2231.423289] invalid opcode: 0000 [#1] SMP PTI [ 2231.424158] CPU: 0 PID: 129424 Comm: ldlm_bl_03 Kdump: loaded Tainted: G OE -------- - - 4.18.0-553.85.1.el8_10.x86_64 #1 [ 2231.426385] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011 [ 2231.427473] RIP: 0010:jbd2_journal_try_to_free_buffers+0xfa/0x100 [jbd2] [ 2231.428770] Code: 00 75 f4 eb a7 5b 4c 89 ef 5d 41 5c 41 5d 41 5e 41 5f e9 f9 7f ef de 5b 31 c0 5d 41 5c 41 5d 41 5e 41 5f c3 cc cc cc cc 0f 0b <0f> 0b 0f 1f 40 00 66 66 66 66 90 41 56 41 55 41 54 55 53 4c 8b 2f [ 2231.432135] RSP: 0018:ffffa4c40584b9e8 EFLAGS: 00010246 [ 2231.433142] RAX: 000fffffc001206d RBX: ffffedd9006f92c0 RCX: 0000000000000000 [ 2231.434497] RDX: 0000000000000000 RSI: ffffedd9006f92c0 RDI: ffff9313873d5000 [ 2231.435845] RBP: ffff9312ac220b80 R08: 0000000000000000 R09: ffffa4c40584b9b8 [ 2231.437180] R10: ffffffffffffffff R11: 000000000000003f R12: 0000000000000000 [ 2231.438513] R13: ffffedd9006f92c0 R14: 0000000000000000 R15: 0000000000000000 [ 2231.439846] FS: 0000000000000000(0000) GS:ffff9313bbc00000(0000) knlGS:0000000000000000 [ 2231.441346] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 2231.442443] CR2: 00005654730b7f44 CR3: 000000001ee10005 CR4: 00000000000606f0 [ 2231.443776] Call Trace: [ 2231.444312] ? __die_body+0x1a/0x60 [ 2231.445060] ? die+0x2a/0x50 [ 2231.445662] ? do_trap+0xe7/0x110 [ 2231.446327] ? jbd2_journal_try_to_free_buffers+0xfa/0x100 [jbd2] [ 2231.447503] ? do_invalid_op+0x36/0x40 [ 2231.448243] ? jbd2_journal_try_to_free_buffers+0xfa/0x100 [jbd2] [ 2231.449410] ? invalid_op+0x14/0x20 [ 2231.450127] ? jbd2_journal_try_to_free_buffers+0xfa/0x100 [jbd2] [ 2231.451286] invalidate_inode_page+0x72/0x90 [ 2231.452153] __invalidate_mapping_pages+0x156/0x3c0 [ 2231.453100] ? vsnprintf+0x340/0x520 [ 2231.453821] ? snprintf+0x49/0x70 [ 2231.454488] pcc_inode_put+0x118/0x140 [lustre] [ 2231.455579] pcc_layout_invalidate+0x12a/0x550 [lustre] [ 2231.456629] vvp_conf_set+0xbc/0xe0 [lustre] [ 2231.457505] cl_conf_set+0x62/0x140 [obdclass] [ 2231.458613] ll_layout_conf+0x14d/0x420 [lustre] [ 2231.459553] ? ll_lock_cancel_bits+0x484/0x9b0 [lustre] [ 2231.460612] ll_lock_cancel_bits+0x484/0x9b0 [lustre] [ 2231.461630] ll_md_blocking_ast+0x2d9/0x450 [lustre] [ 2231.462624] ldlm_cancel_callback+0x7b/0x260 [ptlrpc] [ 2231.463897] ldlm_cli_cancel_local+0xa3/0x490 [ptlrpc] [ 2231.464949] ldlm_cli_cancel_list_local+0x113/0x330 [ptlrpc] [ 2231.466082] ldlm_bl_thread_main+0x74b/0x8b0 [ptlrpc] [ 2231.467122] ? finish_wait+0x80/0x80 [ 2231.467875] ? ldlm_handle_bl_callback+0x400/0x400 [ptlrpc] [ 2231.468993] kthread+0x134/0x150 [ 2231.469678] ? set_kthread_struct+0x50/0x50 [ 2231.470499] ret_from_fork+0x35/0x40 [ 2231.471222] Modules linked in: loop mgc(OE) lustre(OE) mdc(OE) lov(OE) osc(OE) lmv(OE) fid(OE) fld(OE) ksocklnd(OE) ptlrpc(OE) obdclass(OE) lnet(OE) libcfs(OE) rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfs lockd grace fscache intel_rapl_msr intel_rapl_common crct10dif_pclmul crc32_pclmul ghash_clmulni_intel joydev pcspkr i2c_piix4 virtio_balloon sunrpc ext4 mbcache jbd2 ata_generic ata_piix libata virtio_net crc32c_intel serio_raw net_failover virtio_blk failover
owner James Simmons · uploader James Simmons · PS8 uploaded 334d ago · NEW · open in Gerrit ↗
commit message
LU-18657 pcc: invalidate instead of truncate inode mapping
When releasing the PCC inode the current code releases the pages
related to both the pcc inode and original inode. It is possible
additional references exist for these inode so we are not
allowed to flush all the pages. Instead use the function
invalidate_mapping_pages() that only handles pages that can be
cleaned up.
Fixes: 9e37963fa0 ("LU-10499 sec: support of PCC-RO for encrypted files")
Test-Parameters: trivial testlist=sanity-pcc
Change-Id: If979b19d68004221909450641de461b92818d243
Signed-off-by: James Simmons <jsimmons@infradead.org>
48231
master
J –B ✓T ✗1R +1/2
LU-14799 tests: run stand along mgs test
enforced failed: custom-1001
stalled 365d
1 unresolved
XS +1 −1
365d
LU-14799 tests: run stand along mgs test
enforced failed: custom-1001
stalled 365d
1 unresolved
XS +1 −1
365d
enforced failed: custom-1001
1 unresolved thread(s) await your reply — last from Colin Faber
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 9.3 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. This build will be scored -1 since fortestonly was specified. | session |
build #108444 SUCCESS · tests all Maloo sessions
reviews:
Colin Faber +1
no vote yet: Andreas Dilger
patchsets:
PS1 08-16
PS2 08-16
PS3 08-17
PS4 10-22
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Colin Faber patchset comment — Sure
Colin Faber
Sure
owner James Simmons · uploader James Simmons · PS4 uploaded 742d ago · NEW · open in Gerrit ↗
commit message
LU-14799 tests: run stand along mgs test See what breaks for maloo setup. Test-Parameters: fortestonly testlist=conf-sanity standalonemgs=true Change-Id: I0588dc958af7c37b120f146753e898949d9cb599 Signed-off-by: James Simmons <jsimmons@infradead.org>
60909
master
J ✗2B ✓T ✗3R -1/2−
LU-18544 utils: handle special lnetctl import for route setup
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
2 unique failures
IPv6
stalled 392d
2 unresolved
M +155 −0
392d
LU-18544 utils: handle special lnetctl import for route setup
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
2 unique failures
IPv6
stalled 392d
2 unresolved
M +155 −0
392d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 2 test failures unique to this patch — sanity-lnet@ldiskfs+DNE:test_255, sanity-lnet@zfs:test_255
enforced failed: custom-1001, review-ldiskfs-dne
2 unresolved thread(s) await your reply — last from Chris Horn
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-lnet@ldiskfs+DNE:test_255 | NEW unique failure for this branch in the last 30 days, and was seen 1 times across 1 other branches 1 reviews |
| sanity-lnet@zfs:test_255 | NEW unique failure for this branch in the last 30 days, and was seen 1 times across 1 other branches 1 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-dne | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-dne | RHEL 9.5 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
build #116068 SUCCESS · tests all Maloo sessions
patchsets:
PS1 08-26
PS2 08-26 Janitor Bot
PS3 08-27
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Chris Horn COMMIT_MSG:9 — It would be better to say something like:
Chris Horn
It would be better to say something like: The lnetctl tool supports gateways specified with a nidrange syntax. For example: gateway: 10.151.0.[1,2,3,4,5,6,7,8]@o2ib
reply Chris Horn lnetctl.c:5375 — Is strncmp needed vs. strcmp? We use strcmp everywhere else.
Chris Horn
Is strncmp needed vs. strcmp? We use strcmp everywhere else.
I would prefer you remove "route" from the cmd_mappings array (line 4363), and then move this conditional block to same level as the ip2nets conditional:
```
if (mapping) {
...
} else if (!strcmp(scalar_value, "route")) {
...
} else if (!strcmp(scalar_value, "ip2nets")) {
```
The cmd_mappings array should only be for items that don't require a custom handler.
owner James Simmons · uploader James Simmons · PS3 uploaded 433d ago · NEW · open in Gerrit ↗
commit message
LU-18544 utils: handle special lnetctl import for route setup The lnetctl tool supports the following: gateway: 10.151.0.[1,2,3,4,5,6,7,8]@o2ib in YAML config files as a short hand to setup many gateways. This actually voilates the YAML spec and our code doesn't handle this correctly. We need to support this incorrect behavior since it was allowed with cYAML for a long time. To do this we need to intercept route handling and unroll the gateway entries. The good news is that the '/' used by netmask will not break the YAML spec. Support for netmask has not been implemented yet. Test-Parameters: trivial testlist=sanity-lnet Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I6a14659f62ab50d0cb521a2b8e34b1638e4f980d
31407
master
J !B ✓T ✗5R 0/2
LU-10756 ptlrpc: send uevents when import state changes
enforced failed: review-dne-part-2, review-dne-selinux-ssk-part-2, review-dne-zfs-part-2, review-ldiskfs-arm, review-ldiskfs-ubuntu
stalled 456d
L +297 −19
456d
LU-10756 ptlrpc: send uevents when import state changes
enforced failed: review-dne-part-2, review-dne-selinux-ssk-part-2, review-dne-zfs-part-2, review-ldiskfs-arm, review-ldiskfs-ubuntu
stalled 456d
L +297 −19
456d
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 crashed | CentOS 8.3/x86_64 | ran 7 tests. 1 tests failed: sanity-sec. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-selinux-ssk-part-2 crashed | CentOS 8.3/x86_64 | ran 7 tests. 1 tests failed: sanity-sec. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-2 crashed | CentOS 8.3/x86_64 | ran 7 tests. 1 tests failed: sanity-sec. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs-arm crashed | CentOS 8.3/aarch64, CentOS 8.3/x86_64 | ran 6 tests. 1 tests failed: sanity-sec. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs-ubuntu | CentOS 8.3/x86_64, Ubuntu 20.04/x86_64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
build #23252 SUCCESS · tests all Maloo sessions
no vote yet: Neil Brown, Joe Grund, Andreas Dilger, Oleg Drokin, Ben Evans
owner James Simmons · uploader James Simmons · PS27 uploaded 1862d ago · NEW · open in Gerrit ↗
commit message
LU-10756 ptlrpc: send uevents when import state changes When the import for a client changes state such as when the client is evicted send a uevent to make user land so it can be aware that the import state has changed. This allows the use of udev rules to perform site specific actions. Change-Id: I959700f13bca9ee7889244e1cf75eda4d128c8ca Signed-off-by: James Simmons <jsimmons@infradead.org>
33363
master
J –B ✓T ✓R +2/2
LU-11058 obd: manage checksum state
Verified -1 veto by Oleg Drokin
Verified -1
stalled 456d
M +61 −24
456d
LU-11058 obd: manage checksum state
Verified -1 veto by Oleg Drokin
Verified -1
stalled 456d
M +61 −24
456d
1 optional test failure(s) — informational
build #2303 SUCCESS
reviews:
Andreas Dilger +1 · Li Xi +1
no vote yet: Emoly Liu, Qian Yingjin, Oleg Drokin
owner James Simmons · uploader James Simmons · PS3 uploaded 2885d ago · NEW · open in Gerrit ↗
commit message
LU-11058 obd: manage checksum state Currently the checksum dump, checksum tunable and the checksum mount options don't affect each other. With this patch: 1) mount option checksum/nochecksum will turn on or off both checksumming and checksum dump. Additionally it will control access to all checksum related sysfs files. 2) Disabling the checksums sysfs file will also disable checksum_dump as well as prevent enabling checksum_dump. Change-Id: I0781cda49933b0f9f19f968ca211872ab3b34692 Signed-off-by: James Simmons <uja.ornl@yahoo.com>
34954
master
J !B ✓T ✗2R 0/2
LU-8585 utils: enable fileset use with liblustreapi HSM handling
enforced failed: review-dne-part-4, review-dne-zfs-part-4
stalled 456d
S +4 −9
456d
LU-8585 utils: enable fileset use with liblustreapi HSM handling
enforced failed: review-dne-part-4, review-dne-zfs-part-4
stalled 456d
S +4 −9
456d
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-4 | RHEL 9.3/x86_64 | ran 9 tests. 1 tests failed: sanity-hsm. | session |
| review-dne-zfs-part-4 | RHEL 8.9/x86_64 | ran 9 tests. 1 tests failed: sanity-hsm. | session |
5 optional test failure(s) — informational
build #108370 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Minh Diep, John Hammond, Timothy Day
patchsets:
PS10 03-22
PS11 03-23
PS12 10-16
owner James Simmons · uploader James Simmons · PS12 uploaded 749d ago · NEW · open in Gerrit ↗
commit message
LU-8585 utils: enable fileset use with liblustreapi HSM handling Currently using the special .lustre/fid/X path doesn't work with filesets but the llapi_fid_* API in liblustreapi does. Move the HSM handling in liblustreapi to the llapi_fid_* handling. While sites that need to use fileset can create their own copy agent that uses the llapi_fid_* most sites are reluctant to replace liblustreapi with their own version that can work with fileset. Note sanity-hsm test will not work FILESET since the copy agent for testing will not be updated to use the llapi_fid_* API. Change-Id: Iaa37d0c585f84c15769e415e0fd73be7b25dd296 Signed-off-by: James Simmons <jsimmons@infradead.org>
35422
master
J –B ✗T –R 0/2
LU-9897 zfs: migrate autoconf detection to pkgconfig
build failure (#78732)
stalled 456d
S +10 −36
456d
LU-9897 zfs: migrate autoconf detection to pkgconfig
build failure (#78732)
stalled 456d
S +10 −36
456d
build #78732 FAILURE
no vote yet: Minh Diep, Alex Zhuravlev
owner James Simmons · uploader James Simmons · PS8 uploaded 2119d ago · NEW · open in Gerrit ↗
commit message
LU-9897 zfs: migrate autoconf detection to pkgconfig Currently we have extra complexity to determine where packages are installed. This approach is also fragile if packages are not installed in the standard location. This can be handled in a much cleaner way with pkgconfig. Update ZFS handling to use its supplied pkgconfig files it provides. Test-Parameter: trivial Change-Id: I752997a940b0a8c56772bd737f42a5acbd010abb Signed-off-by: James Simmons <jsimmons@infradead.org>
37033
master
J ✗282B ✓T ✗11R 0/2
LU-8066 obd: remove server sysfs symlinks handling
janitor: 282 test failures unique to this patch — conf-sanity2@ldiskfs+DNE:test_48, conf-sanity2@ldiskfs+DNE:test_66, conf-sanity2@ldiskfs+DNE:test_68 +279 more
282 unique failures
stalled 456d
M +4 −151
456d
LU-8066 obd: remove server sysfs symlinks handling
janitor: 282 test failures unique to this patch — conf-sanity2@ldiskfs+DNE:test_48, conf-sanity2@ldiskfs+DNE:test_66, conf-sanity2@ldiskfs+DNE:test_68 +279 more
282 unique failures
stalled 456d
M +4 −151
456d
janitor: 282 test failures unique to this patch — conf-sanity2@ldiskfs+DNE:test_48, conf-sanity2@ldiskfs+DNE:test_66, conf-sanity2@ldiskfs+DNE:test_68 +279 more
enforced failed: review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-ldiskfs, review-ldiskfs-arm, review-zfs
janitor flagged test failures unique to this patch
| unique failing test | history |
|---|---|
| conf-sanity2@ldiskfs+DNE:test_48 | seen in 1 other review |
| conf-sanity2@ldiskfs+DNE:test_66 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity2@ldiskfs+DNE:test_68 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity3@ldiskfs+DNE:test_103 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity3@ldiskfs+DNE:test_108b | seen in 1 other review |
| conf-sanity3@ldiskfs+DNE:test_109a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity3@ldiskfs+DNE:test_109b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity3@ldiskfs+DNE:test_112 | seen in 2 other reviews |
| conf-sanity-slow@ldiskfs+DNE:test_32a | seen in 2 other reviews |
| conf-sanity-slow@ldiskfs+DNE:test_32d | seen in 2 other reviews |
| conf-sanity-slow@ldiskfs+DNE:test_32e | seen in 2 other reviews |
| conf-sanity3@zfs:test_103 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity3@zfs:test_108a | seen in 1 other review |
| conf-sanity3@zfs:test_112 | seen in 1 other review |
| conf-sanity3@zfs:test_117 | seen in 6 other reviews |
| conf-sanity3@zfs:test_123aa | seen in 6 other reviews |
| conf-sanity3@zfs:test_123ab | seen in 6 other reviews |
| conf-sanity3@zfs:test_123ac | seen in 6 other reviews |
| conf-sanity3@zfs:test_123ad | seen in 6 other reviews |
| conf-sanity3@zfs:test_123ae | seen in 5 other reviews |
| conf-sanity3@zfs:test_123F | seen in 5 other reviews |
| conf-sanity-slow@zfs:test_32a | seen in 2 other reviews |
| conf-sanity-slow@zfs:test_32d | seen in 2 other reviews |
| conf-sanity-slow@zfs:test_32e | seen in 2 other reviews |
| ost-pools@ldiskfs+DNE:test_1a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_1b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_1c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_1m | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_1n | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_2c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_2d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_2e | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_3d | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_4c | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_5a | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_5b | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_6 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_7a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_7c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_11 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_15 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_16 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_17 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_18 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_19 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_20 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_21 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_22 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_23a | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_23b | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_24 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_25 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@ldiskfs+DNE:test_27 | seen in 1 other review |
| ost-pools@ldiskfs+DNE:test_28 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_1a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_1b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_1c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_1m | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_1n | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_2c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_2d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_2e | seen in 1 other review |
| ost-pools@zfs:test_3d | seen in 1 other review |
| ost-pools@zfs:test_4c | seen in 1 other review |
| ost-pools@zfs:test_5a | seen in 1 other review |
| ost-pools@zfs:test_5b | seen in 1 other review |
| ost-pools@zfs:test_6 | seen in 1 other review |
| ost-pools@zfs:test_7a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_7c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_11 | seen in 1 other review |
| ost-pools@zfs:test_15 | seen in 1 other review |
| ost-pools@zfs:test_16 | seen in 1 other review |
| ost-pools@zfs:test_17 | seen in 1 other review |
| ost-pools@zfs:test_18 | seen in 1 other review |
| ost-pools@zfs:test_19 | seen in 1 other review |
| ost-pools@zfs:test_20 | seen in 1 other review |
| ost-pools@zfs:test_21 | seen in 1 other review |
| ost-pools@zfs:test_22 | seen in 1 other review |
| ost-pools@zfs:test_23a | seen in 1 other review |
| ost-pools@zfs:test_23b | seen in 1 other review |
| ost-pools@zfs:test_24 | seen in 1 other review |
| ost-pools@zfs:test_25 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_27 | seen in 1 other review |
| ost-pools@zfs:test_28 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@ldiskfs+DNE:test_27Ce | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@ldiskfs+DNE:test_27D | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@ldiskfs+DNE:test_27G | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@ldiskfs+DNE:test_27I | seen in 1 other review |
| sanity1@ldiskfs+DNE:test_27L | seen in 1 other review |
| sanity1@ldiskfs+DNE:test_27M | seen in 1 other review |
| sanity1@ldiskfs+DNE:test_56wb | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_65n | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_134a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_134b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_140 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_150 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_151 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_154A | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_154B | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_154a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_154b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_154f | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_154g | seen in 5 other reviews |
| sanity2@ldiskfs+DNE:test_155e | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_155f | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_155g | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_155h | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_156 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160d | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160e | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160f | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160g | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160h | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160i | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160j | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_160k | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_161a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_161b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_161c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_161d | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_162a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_162b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_162c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_169 | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_180a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_181 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_183 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_185 | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_185a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_187a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_187b | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_200 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_204a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_204b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_204c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_204d | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_204e | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_204f | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_204g | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_204h | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_208 | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_218 | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_220 | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_222a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_222b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_223 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_224c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_226a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_226b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_228a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_228b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_228c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_229 | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_230a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_230b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_230c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_230d | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_230e | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_230f | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_230i | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_230j | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_230l | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_230m | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_231a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_232a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_232b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_233a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_233b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_238 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_240 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_241b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_242 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_243 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_244a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_244b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_248b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_250 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_252 | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_257 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_270a | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_270b | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_270c | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_270d | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_270e | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_270f | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_271c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_271f | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_272a | seen in 4 other reviews |
| sanity2@ldiskfs+DNE:test_272b | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_272c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_272d | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_272e | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_272f | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_275 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_277 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300d | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300e | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300f | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300g | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300h | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300i | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300j | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300k | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300l | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300n | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300q | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_300r | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_310a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_310b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_311 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_313 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_314 | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_315 | seen in 2 other reviews |
| sanity2@ldiskfs+DNE:test_316 | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_317 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_318 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_319 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_399b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_402 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_406 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_409 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_412 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_413a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_413b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_415 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_417 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_418 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_421a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_421b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_421c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_421d | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_421e | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_421f | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_421g | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_422 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_423 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_801a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_801b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_801c | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_803 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_804 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_806 | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_807 | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_808 | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_809 | seen in 4 other reviews |
| sanity2@ldiskfs+DNE:test_810 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_812a | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_812b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_816 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_817 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_818 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_820 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_901 | seen in 1 other review |
| sanity1@zfs:test_27Ce | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@zfs:test_27D | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@zfs:test_27G | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@zfs:test_27I | seen in 1 other review |
| sanity1@zfs:test_27L | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@zfs:test_27M | seen in 1 other review |
| sanity1@zfs:test_56wb | seen in 1 other review |
| sanity-flr@ldiskfs+DNE:test_204f | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-flr@zfs:test_204f | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_3 | seen in 1 other review |
| sanity-quota@ldiskfs+DNE:test_5 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_6 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_7a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_7b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_7c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_12a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@ldiskfs+DNE:test_16 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@ldiskfs+DNE:test_17 | seen in 1 other review |
| sanity-sec@ldiskfs+DNE:test_18 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@ldiskfs+DNE:test_19 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@ldiskfs+DNE:test_20 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@ldiskfs+DNE:test_21 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@ldiskfs+DNE:test_22 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | CentOS 7.0/x86_64 | ran 8 tests. 1 tests failed: sanity. | session |
| review-dne-part-2 | CentOS 7.0/x86_64 | ran 11 tests. 3 tests failed: sanity-sec, ost-pools, runtests. | session |
| review-dne-part-3 | CentOS 7.0/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-4 | CentOS 7.0/x86_64 | ran 14 tests. 6 tests failed: insanity, replay-ost-single, sanity-quota, sanity-flr, sanity-pfl, replay-singl | session |
| review-dne-zfs-part-1 | CentOS 7.0/x86_64 | ran 8 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-2 | CentOS 7.0/x86_64 | ran 11 tests. 1 tests failed: ost-pools. | session |
| review-dne-zfs-part-3 | CentOS 7.0/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-4 | CentOS 7.0/x86_64 | ran 16 tests. 4 tests failed: sanity-quota, sanity-flr, sanity-pfl, replay-single. | session |
| review-ldiskfs | CentOS 7.0/x86_64 | ran 7 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-arm | CentOS 7.0/x86_64, CentOS 8.0/aarch64 | ran 7 tests. 1 tests failed: sanity. | session |
| review-zfs | CentOS 7.0/x86_64 | ran 9 tests. 2 tests failed: replay-single, sanity-flr. | session |
build #72814 SUCCESS
owner James Simmons · uploader James Simmons · PS4 uploaded 2419d ago · NEW · open in Gerrit ↗
commit message
LU-8066 obd: remove server sysfs symlinks handling Before the lustre 2.4 OSD work the lov and osc code was used on both servers and clients. With the OSD layer work we saw the new lod and osp layers created that are server specific. To avoid breakage symlinks were created that went from the lod / osp to lov / osc directories in the proc tree on the server side. This required some extra complex code to handle this. It has been a very long time since that change so we can now safely remove all the extra symlink handling to make life easier. Change-Id: I41fd5abab3d648db6d4fa1a355bd7147a34ee478 Signed-off-by: James Simmons <jsimmons@infradead.org>
37407
master
J !B ✓T ✗6R 0/2
LU-8066 mgc: remove no longer needed class_del_profiles()
enforced failed: review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4
stalled 456d
S +0 −29
456d
LU-8066 mgc: remove no longer needed class_del_profiles()
enforced failed: review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4
stalled 456d
S +0 −29
456d
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 | CentOS 7.0/x86_64 | ran 11 tests. 6 tests failed: sanity-pcc, large-scale, mds-survey, sanity-sec, sanity-lfsck, sanity-scrub. | session |
| review-dne-part-3 | CentOS 7.0/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-4 | CentOS 7.0/x86_64 | ran 10 tests. 8 tests failed: insanity, replay-ost-single, sanity-quota, sanity-dom, sanity-flr, sanity-pfl, | session |
| review-dne-zfs-part-2 | CentOS 7.0/x86_64 | ran 11 tests. 6 tests failed: sanity-pcc, large-scale, mds-survey, sanity-sec, sanity-lfsck, sanity-scrub. | session |
| review-dne-zfs-part-3 | CentOS 7.0/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-4 | CentOS 7.0/x86_64 | ran 10 tests. 1 tests failed: mmp. | session |
build #11671 SUCCESS
no vote yet: Andreas Dilger
owner James Simmons · uploader James Simmons · PS1 uploaded 2466d ago · NEW · open in Gerrit ↗
commit message
LU-8066 mgc: remove no longer needed class_del_profiles() While cleaning up obd_type handling some code to handle lustre 1.14 was found in mgc_cleanup(). This code is obsolete so lets remove class_del_profiles() handling. Change-Id: Ib1e9f9cec060667972b9fa97b1a737f7dbe7edfe Signed-off-by: James Simmons <jsimmons@infradead.org>
44114
master
J ✓B ✓T ✗1R +1/2
LU-14799 test: setup and tear down stand alone MGS for conf-sanity
enforced failed: custom-102
stalled 456d
XS +4 −1
456d
LU-14799 test: setup and tear down stand alone MGS for conf-sanity
enforced failed: custom-102
stalled 456d
XS +4 −1
456d
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-102 | CentOS 8.3/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
build #81635 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
no vote yet: Elena
owner James Simmons · uploader James Nunez · PS3 uploaded 1952d ago · NEW · open in Gerrit ↗
commit message
LU-14799 test: setup and tear down stand alone MGS for conf-sanity While running conf-sanity I found if I have a stand alone MGS server it doesn't even run. For setup() just start the MGS server if stand alone and shut down the stand alone MGS when stop_mds() is called just in case someone forgets to call stop_mgs(). Test-Parameters: trivial testlist=conf-sanity Test-Parameters: standalonemgs=true testlist=conf-sanity Change-Id: Ifc8794e2c9fbb489183e4f205f0b8b9766e13160 Signed-off-by: James Simmons <jsimmons@infradead.org>
49165
master
J !B ✓T ✗24R 0/2
LU-12514 ptlrpc: move thread creation out of module initialization
enforced failed: review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-part-7, review-dne-part-8, review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-ldiskfs, review-ldiskfs-arm, review-zfs
stalled 456d
M +86 −34
456d
LU-12514 ptlrpc: move thread creation out of module initialization
enforced failed: review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-part-7, review-dne-part-8, review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-ldiskfs, review-ldiskfs-arm, review-zfs
stalled 456d
M +86 −34
456d
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 8.8/x86_64 | ran 6 tests. 2 tests failed: sanity-pfl, sanity. | session |
| review-dne-part-2 | RHEL 8.8/x86_64 | ran 13 tests. 4 tests failed: sanity-sec, sanity-lfsck, runtests, replay-dual. | session |
| review-dne-part-3 | RHEL 8.8/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-4 | RHEL 8.8/x86_64 | ran 13 tests. 3 tests failed: sanity-quota, mmp, insanity. | session |
| review-dne-part-5 | RHEL 8.8/x86_64 | ran 8 tests. 2 tests failed: sanityn, sanity-scrub. | session |
| review-dne-part-6 | RHEL 8.8/x86_64 | ran 6 tests. 2 tests failed: ost-pools, replay-single. | session |
| review-dne-part-7 | RHEL 8.8/x86_64 | ran 4 tests. 1 tests failed: sanity-pcc. | session |
| review-dne-part-8 | RHEL 8.8/x86_64 | ran 4 tests. 1 tests failed: replay-dual. | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.8/x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.8/x86_64 | ran 7 tests. 2 tests failed: sanity-selinux, sanity-sec. | session |
| review-dne-zfs-part-1 | RHEL 8.8/x86_64 | ran 6 tests. 2 tests failed: sanity-pfl, sanity. | session |
| review-dne-zfs-part-2 | RHEL 8.8/x86_64 | ran 13 tests. 4 tests failed: sanity-sec, sanity-lfsck, runtests, replay-dual. | session |
| review-dne-zfs-part-3 | RHEL 8.8/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-4 | RHEL 8.8/x86_64 | ran 13 tests. 3 tests failed: sanity-quota, mmp, insanity. | session |
| review-dne-zfs-part-5 | RHEL 8.8/x86_64 | ran 8 tests. 2 tests failed: sanityn, sanity-scrub. | session |
| review-dne-zfs-part-6 | RHEL 8.8/x86_64 | ran 6 tests. 2 tests failed: ost-pools, replay-single. | session |
| review-dne-zfs-part-7 | RHEL 8.8/x86_64 | ran 4 tests. 1 tests failed: sanity-pcc. | session |
| review-ldiskfs | RHEL 8.8/x86_64 | ran 7 tests. 2 tests failed: sanity-lnet, sanity. | session |
| review-ldiskfs | RHEL 9.2/x86_64 | ran 7 tests. 2 tests failed: sanity-lnet, sanity. | session |
| review-ldiskfs | RHEL 8.8/x86_64, SLES 15.4/x86_64 | ran 7 tests. 2 tests failed: sanity-lnet, sanity. | session |
| review-ldiskfs | RHEL 8.8/x86_64, SLES 15.5/x86_64 | ran 7 tests. 2 tests failed: sanity-lnet, sanity. | session |
| review-ldiskfs | RHEL 8.8/x86_64, RHEL 9.2/x86_64 | ran 7 tests. 2 tests failed: sanity-lnet, sanity. | session |
| review-ldiskfs-arm | RHEL 8.8/aarch64, RHEL 8.8/x86_64 | ran 10 tests. 3 tests failed: sanity-sec, sanity-lnet, sanity. | session |
| review-zfs | RHEL 8.8/x86_64 | ran 18 tests. 6 tests failed: sanity-lsnapshot, insanity, replay-ost-single, replay-single, sanity-flr, sanit | session |
4 optional test failure(s) — informational
build #100841 SUCCESS · tests all Maloo sessions
no vote yet: Serguei Smirnov, Neil Brown
patchsets:
PS7 05-21
PS8 05-22
PS9 05-22
PS10 12-13
PS11 12-14
+6 earlier
PS1 11-15 PS2 12-08 PS3 12-12 Neil Brown PS4 02-05 PS5 02-05 PS6 04-05owner James Simmons · uploader James Simmons · PS11 uploaded 1056d ago · NEW · open in Gerrit ↗
commit message
LU-12514 ptlrpc: move thread creation out of module initialization When the ptlrpc module is loaded, it calls ptlrpc_init_portals() which starts ptlrpcd threads, and starts the pinger work-queue. We don't need these threads until the module is actually being used, such as when a lustre filesystem is mounted. So move the thread creation into new ptlrpc_inc_ref() (modelled on ptlrpcd_incref()), and call that when needed, such as at mount time. Linux-commit: 26f7a294e5ecd46856cb9f5b718e995f1ec46779 Linux-commit: ffd87a7b1efeb8f56a229d2ab06d71be7d932d52 Change-Id: Iee077c7dfdeb67ceeeacefc4e6c7f70efef2a864 Signed-off-by: Mr. NeilBrown <neilb@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
40878
master
J –B ✓T ✓R -2/2−
LU-9897 build: add real versioning to liblustreapi
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 456d
XS +7 −2
456d
LU-9897 build: add real versioning to liblustreapi
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 456d
XS +7 −2
456d
needs rebase — checkpatch: cannot be cherry-picked
Andreas Dilger voted -1
no vote yet from Olaf Weber
build #18099 SUCCESS
reviews:
Andreas Dilger -1
no vote yet: Olaf Weber
owner James Simmons · uploader James Simmons · PS2 uploaded 2159d ago · NEW · open in Gerrit ↗
commit message
LU-9897 build: add real versioning to liblustreapi Originally we added -version-info to increment liblustreapi version every time a new abi was added or changed. This never happened so lets number liblustreapi based the Lustre sovftware version. Test-Parameters: trivial Change-Id: I9f638c0a95b72329325b774d23f73239fcbade03 Signed-off-by: James Simmons <jsimmons@infradead.org>
32475
master
J ✗2B ✓T ✗9R -1/2−
LU-2096 sysfs: symlinks for forward compatibility
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
2 unique failures
stalled 456d
M +101 −12
456d
LU-2096 sysfs: symlinks for forward compatibility
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
2 unique failures
stalled 456d
M +101 −12
456d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 2 test failures unique to this patch — conf-sanity3@ldiskfs+DNE:test_76a, conf-sanity3@zfs:test_76a
enforced failed: review-dne-part-4, review-dne-part-5, review-dne-selinux-ssk-part-2, review-dne-zfs-part-4, review-dne-zfs-part-5, review-ldiskfs-ubuntu, review-zfs
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity3@ldiskfs+DNE:test_76a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity3@zfs:test_76a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-4 | RHEL 8.10 / x86_64 | ran 9 tests. 3 tests failed: sanity-quota, sanity-flr, replay-ost-single. | session |
| review-dne-part-4 | RHEL 9.4 / x86_64 | ran 9 tests. 3 tests failed: sanity-quota, sanity-flr, replay-ost-single. | session |
| review-dne-part-5 | RHEL 9.4 / x86_64 | ran 6 tests. 2 tests failed: sanityn, recovery-small. | session |
| review-dne-part-5 | RHEL 8.10 / x86_64 | ran 6 tests. 1 tests failed: recovery-small. | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: recovery-small. | session |
| review-dne-zfs-part-4 | RHEL 8.10 / x86_64 | ran 9 tests. 3 tests failed: sanity-quota, sanity-flr, replay-ost-single. | session |
| review-dne-zfs-part-5 | RHEL 8.10 / x86_64 | ran 6 tests. 1 tests failed: recovery-small. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
| review-zfs | RHEL 8.10 / x86_64 | ran 10 tests. 3 tests failed: replay-ost-single, sanity-flr, sanity-quota. | session |
4 optional test failure(s) — informational
build #111003 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Mikhail Pershin, Alex Zhuravlev
patchsets:
PS5 01-03
PS6 01-07
PS7 01-15
PS8 01-17
PS9 02-14
owner James Simmons · uploader James Simmons · PS9 uploaded 628d ago · NEW · open in Gerrit ↗
commit message
LU-2096 sysfs: symlinks for forward compatibility
Currently, the "ofd" device is still named "obdfilter" in the Lustre
configuration and in /sys/fs/lustre. It would be better to name it
"ost" which is has been the long term goal.
The per-OST device statistics should really be under "ost/{target}",
like the per-MDT statistics are under "mdt/{target}" already in 2.x.
Similarly, the "OSS" statistics have always been under "ost/OSS", but
would be better in their own "oss" subdirectory much like what is done
for "MDS" statistics.
Add symlinks for "oss -> ost/OSS" and "ost -> obdfilter" to keep
older compatibility. In time we can remove those symlinks.
Change-Id: I8c4c81eb55f2880edf1d7811395c4837f50e01d5
Signed-off-by: James Simmons <jsimmons@infradead.org>
58599
master
J !B ✓T ✗31R 0/2
LU-18041 msg: use UUIDs instead of NIDs for client setup
enforced failed: review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-part-7, review-dne-part-8, review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-ldiskfs, review-ldiskfs-ubuntu, review-zfs
IPv6
stalled 463d
S +10 −18
463d
LU-18041 msg: use UUIDs instead of NIDs for client setup
enforced failed: review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-part-7, review-dne-part-8, review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-5, review-dne-zfs-part-6, review-dne-zfs-part-7, review-ldiskfs, review-ldiskfs-ubuntu, review-zfs
IPv6
stalled 463d
S +10 −18
463d
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-1 | RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-2 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-2 | RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-3 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-3 | RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-4 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-4 | RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-5 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-5 | RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-6 | RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-6 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-7 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-7 | RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-8 | RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-8 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-1 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-2 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-3 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-4 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-5 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-6 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-7 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-ldiskfs | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-ldiskfs | RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 9.4 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-ldiskfs | RHEL 8.10 / x86_64, SLES 15.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-zfs | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
13 optional test failure(s) — informational
build #112103 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Mikhail Pershin
owner James Simmons · uploader James Simmons · PS1 uploaded 583d ago · NEW · open in Gerrit ↗
commit message
LU-18041 msg: use UUIDs instead of NIDs for client setup For client setups we are sending NID strings instead of actual UUIDs. This is incorrect. Change-Id: I7ebd1bfe29a5e59c989b9fa5e4166f19cb2336ce Signed-off-by: James Simmons <jsimmons@infradead.org>
50900
master
J ✓B ✓T ✗1R 0/2
LU-0000 test: base code
enforced failed: custom-102
stalled 463d
XS +1 −1
463d
LU-0000 test: base code
enforced failed: custom-102
stalled 463d
XS +1 −1
463d
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-102 failed 2× | CentOS 7.9/x86_64, RHEL 8.7/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
build #94728 SUCCESS · tests all Maloo sessions
patchsets:
PS1 05-10
PS2 05-10
PS3 05-10
owner James Simmons · uploader James Simmons · PS3 uploaded 1274d ago · NEW · open in Gerrit ↗
commit message
LU-0000 test: base code test patch on this Test-Parameters: trivial testlist=sanity-lnet Test-Parameters: serverversion=2.12 serverdistro=el7.9 testlist=runtests Test-Parameters: clientversion=2.12 testlist=runtests Change-Id: Ic52e9934283f34fc635d41a656b6cc0dff088a58 Signed-off-by: James Simmons <jsimmons@infradead.org>
52199
master
J !B ✓T ✗3R 0/2
LU-17060 tests: verify conf-sanity 21c passes
enforced failed: custom-1001, review-dne-part-4, review-dne-part-8
stalled 463d
XS +1 −1
463d
LU-17060 tests: verify conf-sanity 21c passes
enforced failed: custom-1001, review-dne-part-4, review-dne-part-8
stalled 463d
XS +1 −1
463d
janitor run: 1 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 9.3/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-4 | RHEL 9.3/x86_64 | ran 9 tests. 1 tests failed: replay-ost-single. | session |
| review-dne-part-8 | RHEL 9.3/x86_64 | ran 4 tests. 1 tests failed: replay-dual. | session |
1 optional test failure(s) — informational
build #105391 SUCCESS · tests all Maloo sessions
patchsets:
PS1 08-31
PS2 11-30
PS3 04-10
PS4 05-31
PS5 06-11
owner James Simmons · uploader James Simmons · PS5 uploaded 875d ago · NEW · open in Gerrit ↗
commit message
LU-17060 tests: verify conf-sanity 21c passes Make sure patch 52053 fixes the issue. Test-Parameters: testlist=conf-sanity env=ONLY=21c,ONLY_REPEAT=100 Change-Id: I1092c90b15d0cdc464e251dc07ea310828ce4d15 Signed-off-by: James Simmons <jsimmons@infradead.org>
55878
master
J ✗97B ✓T ✗25R 0/2
LU-18041 msg: use UUIDs instead of NIDs for OSP setup
janitor: 97 test failures unique to this patch — conf-sanity1@ldiskfs+DNE:test_1, conf-sanity1@ldiskfs+DNE:test_2, conf-sanity1@ldiskfs+DNE:test_3 +94 more
97 unique failures
IPv6
stalled 463d
S +4 −9
463d
LU-18041 msg: use UUIDs instead of NIDs for OSP setup
janitor: 97 test failures unique to this patch — conf-sanity1@ldiskfs+DNE:test_1, conf-sanity1@ldiskfs+DNE:test_2, conf-sanity1@ldiskfs+DNE:test_3 +94 more
97 unique failures
IPv6
stalled 463d
S +4 −9
463d
janitor: 97 test failures unique to this patch — conf-sanity1@ldiskfs+DNE:test_1, conf-sanity1@ldiskfs+DNE:test_2, conf-sanity1@ldiskfs+DNE:test_3 +94 more
enforced failed: review-dne-part-1, review-dne-part-2, review-dne-part-3, review-dne-part-4, review-dne-part-5, review-dne-part-6, review-dne-part-7, review-dne-part-8, review-dne-selinux-ssk-part-1, review-dne-selinux-ssk-part-2, review-dne-zfs-part-2, review-dne-zfs-part-3, review-dne-zfs-part-4, review-dne-zfs-part-6, review-dne-zfs-part-7, review-ldiskfs-ubuntu
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity1@ldiskfs+DNE:test_1 | seen in 5 other reviews |
| conf-sanity1@ldiskfs+DNE:test_2 | seen in 8 other reviews |
| conf-sanity1@ldiskfs+DNE:test_3 | seen in 12 other reviews |
| conf-sanity1@ldiskfs+DNE:test_4 | seen in 18 other reviews |
| conf-sanity1@ldiskfs+DNE:test_5a | seen in 21 other reviews |
| conf-sanity1@ldiskfs+DNE:test_5c | seen in 16 other reviews |
| conf-sanity1@ldiskfs+DNE:test_5d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@ldiskfs+DNE:test_5e | seen in 19 other reviews |
| conf-sanity1@ldiskfs+DNE:test_5h | seen in 24 other reviews |
| conf-sanity1@ldiskfs+DNE:test_5i | seen in 26 other reviews |
| conf-sanity1@ldiskfs+DNE:test_6 | seen in 28 other reviews |
| conf-sanity1@ldiskfs+DNE:test_7 | seen in 33 other reviews |
| conf-sanity1@ldiskfs+DNE:test_8 | seen in 34 other reviews |
| conf-sanity1@ldiskfs+DNE:test_9 | seen in 36 other reviews |
| conf-sanity1@ldiskfs+DNE:test_10a | seen in 39 other reviews |
| conf-sanity1@ldiskfs+DNE:test_17 | seen in 41 other reviews |
| conf-sanity1@ldiskfs+DNE:test_23a | seen in 12 other reviews |
| conf-sanity1@ldiskfs+DNE:test_23b | seen in 14 other reviews |
| conf-sanity1@ldiskfs+DNE:test_25 | seen in 3 other reviews |
| conf-sanity1@ldiskfs+DNE:test_26 | seen in 4 other reviews |
| conf-sanity1@ldiskfs+DNE:test_27a | seen in 2 other reviews |
| conf-sanity1@ldiskfs+DNE:test_27b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@ldiskfs+DNE:test_28A | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@ldiskfs+DNE:test_28a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@ldiskfs+DNE:test_28b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@ldiskfs+DNE:test_28c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@ldiskfs+DNE:test_29 | seen in 2 other reviews |
| conf-sanity1@ldiskfs+DNE:test_30a | seen in 2 other reviews |
| conf-sanity1@ldiskfs+DNE:test_30b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity-slow@ldiskfs+DNE:test_69 | seen in 6 other reviews |
| sanity2@ldiskfs+DNE:test_134a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_134b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_150a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_150bb | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_150c | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_150d | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_150e | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_150g | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_151 | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_154A | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_154B | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_154a | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_154b | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_154f | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_154g | seen in 8 other reviews |
| sanity2@ldiskfs+DNE:test_154h | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_154i | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_155e | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_155f | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_155g | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_155h | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_156 | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_160a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160e | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160f | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160g | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160h | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160i | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160j | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160k | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160l | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160m | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160n | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160o | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160p | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160q | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160s | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160t | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_160u | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_161a | seen in 8 other reviews |
| sanity2@ldiskfs+DNE:test_161b | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_161c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_161d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_162a | seen in 4 other reviews |
| sanity2@ldiskfs+DNE:test_162b | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_162c | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_165b | seen in 4 other reviews |
| sanity2@ldiskfs+DNE:test_165d | seen in 4 other reviews |
| sanity2@ldiskfs+DNE:test_165e | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_169 | seen in 5 other reviews |
| sanity2@ldiskfs+DNE:test_170a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_170b | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_172 | seen in 3 other reviews |
| sanity2@ldiskfs+DNE:test_182b | seen in 5 other reviews |
| sanity2@ldiskfs+DNE:test_183 | seen in 4 other reviews |
| sanity2@ldiskfs+DNE:test_185 | seen in 10 other reviews |
| sanity2@ldiskfs+DNE:test_185a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_187a | seen in 4 other reviews |
| sanity2@ldiskfs+DNE:test_187b | seen in 4 other reviews |
| sanity3@ldiskfs+DNE:test_901 | seen in 1 other review |
| sanity3@ldiskfs+DNE:test_904 | seen in 1 other review |
| sanity3@ldiskfs+DNE:test_905 | seen in 2 other reviews |
| sanity3@ldiskfs+DNE:test_907 | seen in 7 other reviews |
| sanity3@ldiskfs+DNE:test_908b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-1 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-part-2 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-2 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-3 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-3 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-4 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-4 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-5 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-5 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-6 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-6 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-7 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-7 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-8 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-part-8 | RHEL 9.5 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-2 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-3 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-4 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-6 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-dne-zfs-part-7 | RHEL 8.10 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% NODE-PROVISIONING AND/OR LUSTRE-INIT FAILED MULTIPLE T | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
2 optional test failure(s) — informational
build #114199 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Mikhail Pershin, Timothy Day
patchsets:
PS4 01-14
PS5 01-15
PS6 06-08
PS7 06-08 Janitor Bot
PS8 06-11
+3 earlier
PS1 07-28 PS2 08-05 PS3 08-17owner James Simmons · uploader James Simmons · PS8 uploaded 511d ago · NEW · open in Gerrit ↗
commit message
LU-18041 msg: use UUIDs instead of NIDs for OSP setup The mgs when processing logs for OSP uses NIDs instead of UUIDs for LCFG_SETUP. This is wrong and NIDs can easily over flow the obd_uuid structure. A side effect of this mistake is that the ptlrpc conn to UUID mapping just ends up being a NID looking up a NID which happens to be itself. That is very wrong. Change from NID string to the real UUID. Test-Parameters: env=FORCE_LARGE_NID=true,LOAD_MODULES_REMOTE=true Change-Id: Ie291b2fd85b6096779d7cf5ee94060edc0e3a590 Signed-off-by: James Simmons <jsimmons@infradead.org>
53594
master
J ✗4B ✓T ✗2R -1/2−
LU-10391 tests: debug ping failures
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
4 unique failures
IPv6
stalled 670d
XS +1 −1
670d
LU-10391 tests: debug ping failures
needs rebase — checkpatch: cannot be cherry-picked
needs rebase
4 unique failures
IPv6
stalled 670d
XS +1 −1
670d
needs rebase — checkpatch: cannot be cherry-picked
janitor: 4 test failures unique to this patch — sanity-lnet@ldiskfs+DNE:test_253, sanity-lnet@ldiskfs+DNE:test_254, sanity-lnet@zfs:test_253 +1 more
enforced failed: custom-1001, review-ldiskfs-dne
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-lnet@ldiskfs+DNE:test_253 | seen in 1 other review |
| sanity-lnet@ldiskfs+DNE:test_254 | seen in 1 other review |
| sanity-lnet@zfs:test_253 | seen in 1 other review |
| sanity-lnet@zfs:test_254 | seen in 1 other review |
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 9.3 / x86_64 | ran 3 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-dne | RHEL 9.3 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
build #108441 SUCCESS · tests all Maloo sessions
no vote yet: Chris Horn
patchsets:
PS2 01-04
PS3 01-05
PS4 04-04
PS5 06-25
PS6 10-22
+1 earlier
PS1 01-04owner James Simmons · uploader James Simmons · PS6 uploaded 743d ago · NEW · open in Gerrit ↗
commit message
LU-10391 tests: debug ping failures Re-enable failing test. Test-Parameters: trivial testlist=sanity-lnet env=ONLY=253,ONLY_REPEAT=10 Change-Id: I1a55149adbc1413dc26eb004d2832baf96ead3fd Signed-off-by: James Simmons <jsimmons@infradead.org>
15713
master
J –B ✓T ✗0R 0/2
LU-6034 lnet: Create a checksum value for LNet package data
Maloo voted -1 — tests failed (details on the change)
stalled 4115d
L +194 −74
4115d
LU-6034 lnet: Create a checksum value for LNet package data
Maloo voted -1 — tests failed (details on the change)
stalled 4115d
L +194 −74
4115d
no vote yet: Frank Zago
owner James Simmons · uploader James Simmons · PS1 uploaded 4120d ago · NEW · open in Gerrit ↗
commit message
LU-6034 lnet: Create a checksum value for LNet package data Using the check sum selected by the adminstrator for a LNet interface check sum the data being handled by the LNet layer. Change-Id: I069fc3a83ec8392174a5b1c6bfe1fca223e3a3af Signed-off-by: James Simmons <uja.ornl@yahoo.com>
▶Review feedback — your turn
(13)
70328
master
J –B ✓T ✓R 0/2
LU-18687 fid: handle CONFIG_LUSTRE_FS_SERVER tristate
2 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
2 unresolved
S +8 −6
5h
LU-18687 fid: handle CONFIG_LUSTRE_FS_SERVER tristate
2 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
2 unresolved
S +8 −6
5h
build #135242 SUCCESS · tests all Maloo sessions
patchsets:
PS1 11-02
PS2 11-02
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (style) The body doesn't mention the new `#include <lu_target.h>` in fid_internal.h or why fid needs it. It may also help to say that the co
Gerrit AI review for Lustre
(style) The body doesn't mention the new `#include <lu_target.h>` in fid_internal.h or why fid needs it. It may also help to say that the configure build defines both CONFIG_LUSTRE_FS_SERVER and CONFIG_LUSTRE_FS_SERVER_MODULE, so this changes nothing there and only matters for an in-tree `CONFIG_LUSTRE_FS_SERVER=m` build.
reply Gerrit AI review for Lustre fid_internal.h:20 — (minor) Nothing declared in this block uses lu_target.h. The users are elsewhere: fid_handler.c needs `struct tgt_session_info` and `struct
Gerrit AI review for Lustre
(minor) Nothing declared in this block uses lu_target.h. The users are elsewhere: fid_handler.c needs `struct tgt_session_info` and `struct tgt_handler`, and lproc_fid.c and fid_lib.c need the dt_* types, which lu_target.h pulls in through lustre_update.h and lustre_lfsck.h. Those files compile today because obd_class.h includes lu_target.h, obd_target.h and dt_object.h under `#ifdef CONFIG_LUSTRE_FS_SERVER`. That guard is false for an in-tree `=m` build, and this include works around it. This isn't a bug, but would it be cleaner to convert the guard in obd_class.h (lustre_disk.h and lustre_fid.h also still use `#ifdef`), or to include dt_object.h and lu_target.h in the .c files that need them? Otherwise the workaround will be left redundant in this shared header once obd_class.h is converted.
owner James Simmons · uploader James Simmons · PS2 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-18687 fid: handle CONFIG_LUSTRE_FS_SERVER tristate Convert fid to tristate CONFIG_LUSTRE_FS_SERVER Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Ia362acb03ed3f8b0cf5b53aee9dc4c052f1cb951
70329
master
J –B ✓T ✓R 0/2
LU-18687 mgc: handle CONFIG_LUSTRE_FS_SERVER tristate
4 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
4 unresolved
S +19 −19
5h
LU-18687 mgc: handle CONFIG_LUSTRE_FS_SERVER tristate
4 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
4 unresolved
S +19 −19
5h
build #135248 SUCCESS · tests all Maloo sessions
patchsets:
PS1 11-02
PS2 11-02
threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre mgc_internal.h:64 — (minor) `cld_is_barrier()` still uses `#ifdef` while `cld_is_nodemap()` just above was converted. With =m it always returns false, so `mgc_p
Gerrit AI review for Lustre
(minor) `cld_is_barrier()` still uses `#ifdef` while `cld_is_nodemap()` just above was converted. With =m it always returns false, so `mgc_process_log()` would send a barrier cld through `mgc_process_cfg_log()`. Convert it as well?
reply Gerrit AI review for Lustre mgc_internal.h:71 — (defect) This block of prototypes (`mgc_fs_clear()`, `mgc_set_info_async_server()`, `mgc_process_server_cfg_log()`, `mgc_process_nodemap_log
Gerrit AI review for Lustre
(defect) This block of prototypes (`mgc_fs_clear()`, `mgc_set_info_async_server()`, `mgc_process_server_cfg_log()`, `mgc_process_nodemap_log()`, `mgc_process_config_server()`, `mgc_fs_setup()`) is still under `#ifdef CONFIG_LUSTRE_FS_SERVER`, along with the matching `#else`/`#endif` comments. Their callers in mgc_request.c are now under `IS_ENABLED()`. With CONFIG_LUSTRE_FS_SERVER=m only CONFIG_LUSTRE_FS_SERVER_MODULE is defined. The prototypes disappear and `mgc_barrier_glimpse_ast` becomes NULL, but the calls are still compiled, so the build fails with implicit function declarations. Should this be `#if IS_ENABLED(CONFIG_LUSTRE_FS_SERVER)` too?
reply Gerrit AI review for Lustre mgc_request.c:241 — (defect) This `mgc_fs_setup()` block in `do_config_log_add()` was left as `#ifdef`, but its error label `err_env:` below was changed to `IS_
Gerrit AI review for Lustre
(defect) This `mgc_fs_setup()` block in `do_config_log_add()` was left as `#ifdef`, but its error label `err_env:` below was changed to `IS_ENABLED()`. With =m, `err_env` is defined but never used. That is a -Wunused-label warning, and an error under -Werror. Servers would also never set up `cld_los`, so they get no local config copy. Should this one be converted too?
reply Gerrit AI review for Lustre mgc_request.c:459 — (defect) Same problem in `config_log_add()`. The nodemap/barrier setup here is still `#ifdef`, while the declarations of `nodemap_cld`/`barr
Gerrit AI review for Lustre
(defect) Same problem in `config_log_add()`. The nodemap/barrier setup here is still `#ifdef`, while the declarations of `nodemap_cld`/`barrier_cld`, the `GOTO(out_barrier, rc)` and the `out_barrier:`/`out_nodemap:` labels were all converted. With =m, `out_nodemap` is defined but never used. Also, no target would ever add the nodemap log and no MDT the barrier log.
owner James Simmons · uploader James Simmons · PS2 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-18687 mgc: handle CONFIG_LUSTRE_FS_SERVER tristate Convert mgc to tristate CONFIG_LUSTRE_FS_SERVER Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I20d9475c98f3a3abbedeaf48f021f319eaef1ffa
70327
master
J –B ✓T ✓R 0/2
LU-18687 ldlm: handle CONFIG_LUSTRE_FS_SERVER tristate
1 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
1 unresolved
M +40 −40
5h
LU-18687 ldlm: handle CONFIG_LUSTRE_FS_SERVER tristate
1 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
1 unresolved
M +40 −40
5h
build #135246 SUCCESS · tests all Maloo sessions
patchsets:
PS1 11-02
PS2 11-02
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre ldlm_lock.c:117 — (defect) lustre/ldlm/ldlm_inodebits.c was not converted. It still has `#ifdef CONFIG_LUSTRE_FS_SERVER` at line 38, around ldlm_reprocess_ino
Gerrit AI review for Lustre
(defect) lustre/ldlm/ldlm_inodebits.c was not converted. It still has `#ifdef CONFIG_LUSTRE_FS_SERVER` at line 38, around ldlm_reprocess_inodebits_queue() and ldlm_process_inodebits_lock().
When Kconfig sets CONFIG_LUSTRE_FS_SERVER=m it defines only CONFIG_LUSTRE_FS_SERVER_MODULE. In that case these tables are built (IS_ENABLED() is true), but the two functions they point to are not:
[LDLM_IBITS] = ldlm_process_inodebits_lock,
...
[LDLM_IBITS] = ldlm_reprocess_inodebits_queue,
Wouldn't that give an undefined-symbol link error for ptlrpc? Out-of-tree builds still work only because lustre-build.m4 defines both macros. Should ldlm_inodebits.c:38 use `#if IS_ENABLED(CONFIG_LUSTRE_FS_SERVER)` as well, so that ldlm is fully converted as the commit message says?
owner James Simmons · uploader James Simmons · PS2 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-18687 ldlm: handle CONFIG_LUSTRE_FS_SERVER tristate Convert ldlm to tristate CONFIG_LUSTRE_FS_SERVER Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I04fa91c00b5dc2cacb2919e046dcf2adce866262
69027
master
J –B ✓T ✓R 0/2
LU-18687 build: handle CONFIG_LUSTRE_FS_SERVER tristate
6 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
6 unresolved
M +80 −67
5h
LU-18687 build: handle CONFIG_LUSTRE_FS_SERVER tristate
6 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
6 unresolved
M +80 −67
5h
build #135235 SUCCESS · tests all Maloo sessions
no vote yet: Arshad Hussain, Shaun Tancheff, Andreas Dilger, Timothy Day
patchsets:
PS6 09-29
PS7 10-07
PS8 10-21
PS9 10-29
PS10 11-02
+5 earlier
PS1 09-17 PS2 09-18 PS3 09-22 PS4 09-22 PS5 09-23threads: 6 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:17 — (minor) This patch adds no headers and converts no code to IS_ENABLED(). Those parts appear to have moved to the per-subsystem patches in th
Gerrit AI review for Lustre
(minor) This patch adds no headers and converts no code to IS_ENABLED(). Those parts appear to have moved to the per-subsystem patches in the series. What this patch does now is: add the four ifdef/ifndef checkpatch rules (dropping the old HAVE_SERVER_SUPPORT rule), switch wirecheck and the userspace wiretest.c to HAVE_SERVER_SUPPORT, add CONFIG_LUSTRE_FS_SERVER_MODULE, and add a second copy of SERVER_ONLY/SERVER_ONLY_EXPORT_SYMBOL() in include/lustre_compat/linux/module.h. Could the message describe those changes instead?
reply Gerrit AI review for Lustre COMMIT_MSG:18 — (typo) "jus" -> "just"
Gerrit AI review for Lustre
(typo) "jus" -> "just"
reply Gerrit AI review for Lustre COMMIT_MSG:22 — (suggestion) The userspace part undoes the switch of wirecheck.c and lustre/utils/wiretest.c from HAVE_SERVER_SUPPORT to CONFIG_LUSTRE_FS_SE
Gerrit AI review for Lustre
(suggestion) The userspace part undoes the switch of wirecheck.c and lustre/utils/wiretest.c from HAVE_SERVER_SUPPORT to CONFIG_LUSTRE_FS_SERVER. That switch came in with the wiretest regeneration in the commit below. CONFIG_LUSTRE_FS_SERVER is defined only when modules are enabled, so since that commit a server build of the utilities without modules silently skips the server wire checks. If that counts as a bug, consider adding:
Fixes: 39b5d59f8612 ("LU-18847 mdt: cleanup reint structs")
reply Gerrit AI review for Lustre module.h:12 — (minor) lustre/include/obd_class.h still defines SERVER_ONLY and SERVER_ONLY_EXPORT_SYMBOL() under the same condition, so after this patch t
Gerrit AI review for Lustre
(minor) lustre/include/obd_class.h still defines SERVER_ONLY and SERVER_ONLY_EXPORT_SYMBOL() under the same condition, so after this patch there are two copies. The compiler accepts them only because both have the same tokens. If one copy is later changed (for example to IS_ENABLED()) and the other is not, the build gets a macro-redefinition error. None of the patches in the LU-18687 series touches obd_class.h. Should the obd_class.h copy be removed here, or this copy be dropped until the move happens?
reply Gerrit AI review for Lustre wirecheck.c:324 — (minor) `make newwiretest` writes this same output to both lustre/utils/wiretest.c and lustre/ptlrpc/wiretest.c. With HAVE_SERVER_SUPPORT he
Gerrit AI review for Lustre
(minor) `make newwiretest` writes this same output to both lustre/utils/wiretest.c and lustre/ptlrpc/wiretest.c. With HAVE_SERVER_SUPPORT here, the next regeneration (needed by any wire change) puts `#ifdef HAVE_SERVER_SUPPORT` into lustre/ptlrpc/wiretest.c. That is a problem on the kernel side in three ways: - HAVE_SERVER_SUPPORT comes only from the autoconf config.h, so in the in-tree Kbuild build this series targets every server wire check in ptlrpc/wiretest.c would be compiled out without any warning. - The new spelling.txt rule in this patch flags `ifdef HAVE_SERVER_SUPPORT` in kernel files, so every regenerated wiretest would trip checkpatch. - It would undo the `#if IS_ENABLED(CONFIG_LUSTRE_FS_SERVER)` conversion of ptlrpc/wiretest.c in the ptlrpc patch of this series. The kernel copy needs IS_ENABLED(CONFIG_LUSTRE_FS_SERVER) and the userspace copy needs HAVE_SERVER_SUPPORT, and no single CHECK_COND_START() argument gives both. One option is to emit the CONFIG_ form here and have lustre/utils/wirehdr.c map HAVE_SERVER_SUPPORT onto it. Another is to give wirecheck a kernel/userspace switch so each copy gets its own guard.
reply Gerrit AI review for Lustre wiretest.c:2971 — (typo) This `#endif` comment still says CONFIG_LUSTRE_FS_SERVER, but the `#ifdef` above it was changed to HAVE_SERVER_SUPPORT. wirecheck wou
Gerrit AI review for Lustre
(typo) This `#endif` comment still says CONFIG_LUSTRE_FS_SERVER, but the `#ifdef` above it was changed to HAVE_SERVER_SUPPORT. wirecheck would print HAVE_SERVER_SUPPORT here, so the file looks hand-edited rather than regenerated. The same mismatch is at the LCFG_NODEMAP_* block (the `#endif` after LCFG_NODEMAP_BANLIST_DEL).
owner James Simmons · uploader James Simmons · PS10 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-18687 build: handle CONFIG_LUSTRE_FS_SERVER tristate Lustre treats CONFIG_LUSTRE_FS_SERVER as a boolean but when imported into a Linux kernel it can be a tristate value, turn off, module, or built in. To properly support building in the Linux kernel tree with Kbuild using tristate value we need to use the IS_ENABLED macro. All other lustre CONFIG_* options are boolean so no need to update them. For the IS_ENABLED macro to work we need to define CONFIG_LUSTRE_FS_SERVER_MODULE. We also add headers that are needed to actually build in the linux kernel tree. This is jus the base patch and we need many patches on top to give it a chance to land. Change user land utilities not to use Kbuild options. Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I410a9d2e95dd0edcbfa78ca901d2e904b0b3f2b4
70337
master
J –B ✓T ✓R 0/2
LU-18687 obdecho: handle CONFIG_LUSTRE_FS_SERVER tristate
3 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
3 unresolved
M +50 −50
6h
LU-18687 obdecho: handle CONFIG_LUSTRE_FS_SERVER tristate
3 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
3 unresolved
M +50 −50
6h
build #135256 SUCCESS · tests all Maloo sessions
threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (style) The subject and body say obdecho, but every hunk is under lustre/obdclass/, and lustre/obdecho/ still has about 30 `#ifdef CONFIG_LU
Gerrit AI review for Lustre
(style) The subject and body say obdecho, but every hunk is under lustre/obdclass/, and lustre/obdecho/ still has about 30 `#ifdef CONFIG_LUSTRE_FS_SERVER` lines (echo_client.c, echo_internal.h). Should this be `LU-18687 obdclass: handle CONFIG_LUSTRE_FS_SERVER tristate`?
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (style) If the patch is refreshed, the body could say why the change is needed. With CONFIG_LUSTRE_FS_SERVER=m, Kbuild defines only CONFIG_L
Gerrit AI review for Lustre
(style) If the patch is refreshed, the body could say why the change is needed. With CONFIG_LUSTRE_FS_SERVER=m, Kbuild defines only CONFIG_LUSTRE_FS_SERVER_MODULE, so a plain `#ifdef` silently compiles the server code out. It could also mention that lustre_handles.c changes from HAVE_SERVER_SUPPORT to CONFIG_LUSTRE_FS_SERVER. That one is a different macro, not just a change of form. It is equivalent in practice, because CONFIG_LUSTRE_FS_SERVER is defined whenever server modules are built.
reply Gerrit AI review for Lustre lu_tgt_descs.c:138 — (suggestion) The headers this code depends on still use plain `#ifdef CONFIG_LUSTRE_FS_SERVER`. For example, `lq_rr` in struct lu_qos (lu_ob
Gerrit AI review for Lustre
(suggestion) The headers this code depends on still use plain `#ifdef CONFIG_LUSTRE_FS_SERVER`. For example, `lq_rr` in struct lu_qos (lu_object.h), OBDF_NO_TRANSNO in obd.h, the server includes and SERVER_ONLY in obd_class.h, and lustre_log.h. In a =m in-kernel build, this block would be compiled but `qos->lq_rr` would not exist. The same applies to `OBDF_NO_TRANSNO` in class_cleanup(). Before this patch, that configuration was at least consistently client-only. There's no in-tree Kconfig yet, so nothing is broken today. Would it make sense to convert lustre/include/ before (or together with) the .c files, so that each patch in the series builds on its own in the target configuration?
owner James Simmons · uploader James Simmons · PS1 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-18687 obdecho: handle CONFIG_LUSTRE_FS_SERVER tristate Convert obdecho to tristate CONFIG_LUSTRE_FS_SERVER Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I13911144ed39a0cba72a9b9a4035569065571833
39910
master
J –B ✓T ✓R 0/2
LU-13745 tests: test splice() reads with PCC-RO
4 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
4 unresolved
M +84 −3
3d
LU-13745 tests: test splice() reads with PCC-RO
4 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
4 unresolved
M +84 −3
3d
4 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
CI green — no vote yet from Wang Shilong, Qian Yingjin, Andreas Dilger
build #134957 SUCCESS · tests all Maloo sessions
no vote yet: Wang Shilong, Qian Yingjin, Andreas Dilger
patchsets:
PS4 02-07
PS5 10-30 Andreas Dilger
threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:19 — (minor) On newer kernels the O_DIRECT runs don't reach pcc_file_splice_read(). In 6.12 (RHEL10), vfs_splice_read() sends O_DIRECT files to c
Gerrit AI review for Lustre
(minor) On newer kernels the O_DIRECT runs don't reach pcc_file_splice_read(). In 6.12 (RHEL10), vfs_splice_read() sends O_DIRECT files to copy_splice_read() before it looks at ->splice_read:
if ((in->f_flags & O_DIRECT) || IS_DAX(...))
return copy_splice_read(in, ppos, pipe, len, flags);
That path is copy_splice_read()->ll_file_read_iter()->pcc_file_read_iter(). So -n and -nr test the PCC read_iter path there, not pcc_file_splice_read(). Should the message say that only el8-era kernels route O_DIRECT splice through pcc_file_splice_read()?
reply Gerrit AI review for Lustre COMMIT_MSG:22 — (suggestion) An earlier patchset asked whether this should use 'trivial'. The kernel difference above is a new reason to ask. The el8.10/el9
Gerrit AI review for Lustre
(suggestion) An earlier patchset asked whether this should use 'trivial'. The kernel difference above is a new reason to ask. The el8.10/el9.8 sessions that trivial now runs won't cover the 6.12 copy_splice_read() path. Would adding a RHEL10 client run, e.g. 'clientdistro=el10.2', be worthwhile here?
reply Gerrit AI review for Lustre sanity-pcc.sh:2269 — (minor) Can this check pass when splice skips PCC? `lfs pcc attach` fills the Lustre page cache:
Gerrit AI review for Lustre
(minor) Can this check pass when splice skips PCC? `lfs pcc attach` fills the Lustre page cache:
pcc_readonly_attach()->pcc_attach_data_archive() clears O_DIRECT, then pcc_copy_data() reads the whole file with kernel_read(). That happens after pcc_layout_rdonly_set(), and nothing drops those pages afterward.
For -nd and -ndr, a splice that fell back to the normal Lustre path would read from that cache. That sends no ost_read RPCs, and cmp still matches. Dropping the client's cached pages after the attach would make the check meaningful, e.g.:
do_facet $SINGLEAGT $LCTL set_param -n ldlm.namespaces.*osc*.lru_size=clear
reply Gerrit AI review for Lustre splice-test.c:169 — (minor) With -n, `size` comes from fstat() on the Lustre file, but the data comes from the PCC copy. If that copy is shorter, which is the k
Gerrit AI review for Lustre
(minor) With -n, `size` comes from fstat() on the Lustre file, but the data comes from the PCC copy. If that copy is shorter, which is the kind of bug this test looks for, splice() returns 0 at its EOF. do_splice1() and do_splice2() then loop forever on `while (size)` with spliced == 0. The test hangs until the test session times out instead of failing. The loop is pre-existing, but -n makes it reachable. Could spliced == 0 be treated as an unexpected EOF, as read_from_pipe() already does?
owner James Simmons · uploader Andreas Dilger · PS5 uploaded 4d ago · NEW · open in Gerrit ↗
commit message
LU-13745 tests: test splice() reads with PCC-RO There is no test that splice() of a PCC-RO cached file reads from the PCC copy through pcc_file_splice_read(). splice-test writes the file before splicing it, which would invalidate a PCC-RO copy. Add a -n option to splice-test to splice an existing file without writing it, and copy the spliced data to stdout, so that it can be compared with the expected data. Also count the bytes actually read from the pipe, not the requested size. Add sanity-pcc test_21k to splice a PCC-RO cached file, with and without O_DIRECT and a concurrent pipe reader, and check that no read RPCs are sent to the OSTs and the data matches the PCC copy. Test-Parameters: trivial testlist=sanity-pcc Signed-off-by: James Simmons <jsimmons@infradead.org> Signed-off-by: Andreas Dilger <adilger@thelustrecollective.com> Assisted-by: ClaudeCode:claude-opus-5-5 ltvm llm_code_and_review_tools Change-Id: Iae2517110c7332a81d0334232772ef1844d320ae
69872
master
J –B ✓T ✓R +1/2
LU-18687 build: rework Lustre headers for upstreaming
8 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
8 unresolved
M +62 −23
4d
LU-18687 build: rework Lustre headers for upstreaming
8 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
upstream
8 unresolved
M +62 −23
4d
8 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
no vote yet from patrick bot, Arshad Hussain, Andreas Dilger
build #134774 SUCCESS · tests all Maloo sessions
reviews:
Timothy Day +1
no vote yet: patrick bot, Arshad Hussain, Andreas Dilger
patchsets:
PS1 10-21
PS2 10-22
PS3 10-22
PS4 10-29
threads: 8 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:11 — (style) The biggest change in this patch isn't described: lustre_compat.h is no longer included by lu_object.h or lustre_mdc.h. Through lust
Gerrit AI review for Lustre
(style) The biggest change in this patch isn't described: lustre_compat.h is no longer included by lu_object.h or lustre_mdc.h. Through lustre_net.h, about 200 kernel .c files used to get lustre_compat.h, and now they don't. The fixups in obdo.c, fid_lib.c, dt_object.c and lustre_mdc.h follow from that. Could the body say so, and also name what "headers we need to build against the Linux kernel" means? That part is uapi/linux/lustre/lustre_ver.h for LUSTRE_VERSION_STRING in ec_kmod.c, ec_test.c and kinode.c.
reply Gerrit AI review for Lustre sha2.h:3 — (suggestion) lustre_compat/fs/crypto/hkdf.c and lustre_compat/fs/crypto/keysetup.c still carry the same #ifdef HAVE_CRYPTO_SHA2_HEADER / <cr
Gerrit AI review for Lustre
(suggestion) lustre_compat/fs/crypto/hkdf.c and lustre_compat/fs/crypto/keysetup.c still carry the same #ifdef HAVE_CRYPTO_SHA2_HEADER / <crypto/sha.h> block. Could they include this header instead?
reply Gerrit AI review for Lustre filelock.h:3 — (suggestion) lustre/llite/file.c and lustre/ldlm/ldlm_flock.c still open-code the same #ifdef HAVE_LINUX_FILELOCK_HEADER. Since the goal is
Gerrit AI review for Lustre
(suggestion) lustre/llite/file.c and lustre/ldlm/ldlm_flock.c still open-code the same #ifdef HAVE_LINUX_FILELOCK_HEADER. Since the goal is to remove these ifdefs, could they use this header too? Also, filelock.h, sha2.h and mm_types.h have no include guards, while prandom.h and stdarg.h added in the same patch do. This is harmless, but inconsistent.
reply Gerrit AI review for Lustre stdarg.h:10 — (minor) On kernels that have linux/stdarg.h, this header now includes nothing. Before, lu_object.h included <linux/stdarg.h> explicitly, and
Gerrit AI review for Lustre
(minor) On kernels that have linux/stdarg.h, this header now includes nothing. Before, lu_object.h included <linux/stdarg.h> explicitly, and va_list in lu_object.h now only works because some other header pulls it in. The other headers in this patch (prandom.h, filelock.h, sha2.h) include the real header in both branches. Should this one too?
#ifdef HAVE_LINUX_STDARG_HEADER
#include <linux/stdarg.h>
#else
#include <stdarg.h>
#endif
reply Gerrit AI review for Lustre fid_lib.c:21 — (nit) fid_lib.c doesn't seem to use anything from <linux/fs.h>, and obd.h already includes it. Is this include needed? <dt_object.h> makes s
Gerrit AI review for Lustre
(nit) fid_lib.c doesn't seem to use anything from <linux/fs.h>, and obd.h already includes it. Is this include needed? <dt_object.h> makes sense because of struct dt_device.
reply Gerrit AI review for Lustre lu_object.h:887 — (minor) struct lu_rdpg still declares `struct folio **rp_folios`. On kernels without folios (el8), that name only means `struct page` once l
Gerrit AI review for Lustre
(minor) struct lu_rdpg still declares `struct folio **rp_folios`. On kernels without folios (el8), that name only means `struct page` once lustre_compat/linux/folio.h has done `#define folio page`. lu_object.h used to get that header through lustre_compat.h. With that include removed, the header is no longer self-contained. Any file that includes lu_object.h before folio.h now sees this field as a pointer to an opaque `struct folio`. Its own code then uses `struct page`, which gives an incompatible-pointer-type build error on el8. dt_object.c only builds because the new mm_types.h include sits above obd_class.h. Without that line, lu_object.h is processed before folio.h in that file. Would it be more robust for lu_object.h to include lustre_compat/linux/folio.h itself, instead of relying on each user's include order?
reply Gerrit AI review for Lustre lustre_mdc.h:25 — (minor) Nothing in lustre_mdc.h uses the compat fs.h helpers. The include appears to be there so lmv_intent.c gets the compat inode_set_atim
Gerrit AI review for Lustre
(minor) Nothing in lustre_mdc.h uses the compat fs.h helpers. The include appears to be there so lmv_intent.c gets the compat inode_set_atime()/inode_set_mtime(), which lmv_revalidate_slaves() calls. obdo.c got the same fix directly in the .c file. For consistency, and to avoid another hidden transitive dependency, should lmv_intent.c include lustre_compat/linux/fs.h itself, with lustre_mdc.h keeping <linux/fs.h>?
reply Gerrit AI review for Lustre dt_object.c:22 — (style) This isn't a bug, but the new lustre_compat/linux/mm_types.h doesn't include <linux/mm_types.h>. It is only an alias for lustre_comp
Gerrit AI review for Lustre
(style) This isn't a bug, but the new lustre_compat/linux/mm_types.h doesn't include <linux/mm_types.h>. It is only an alias for lustre_compat/linux/folio.h, and what dt_object.c needs from it is ll_kmap_local_folio(). The include also only works because it sits between <linux/list.h> and <linux/module.h>, ahead of obd_class.h (see the lu_object.h comment). If lu_object.h included folio.h itself, could this file include folio.h directly, or nothing extra, and mm_types.h be dropped?
owner James Simmons · uploader James Simmons · PS4 uploaded 5d ago · NEW · open in Gerrit ↗
commit message
LU-18687 build: rework Lustre headers for upstreaming We have many ifdef HAVE_HEADER which makes upstreaming more difficult. Create compat headers to clean up the ifdefs. Also include headers we need to build against the Linux kernel Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I2e32960dc2203f03f348821ffa33f5a169add42a
68228
master
J !B ✓T ✓R 0/2
LU-11850 lov: create Netlink interface for pools
2 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
3 unresolved
XL +980 −361
8d
LU-11850 lov: create Netlink interface for pools
2 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
3 unresolved
XL +980 −361
8d
2 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
CI green, no reviews yet — add reviewers
1 thread(s) waiting on others
janitor run: 2 failing config(s), none unique to this patch — janitor results
build #132342 SUCCESS · tests all Maloo sessions
patchsets:
PS1 08-23
PS2 08-28
PS3 09-01
PS4 09-03
PS5 09-26
threads: 2 need your reply · 1 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:16 — Several hunks aren't accounted for by the description, and it isn't obvious which are deliberate:
Gerrit AI review for Lustre
Several hunks aren't accounted for by the description, and it isn't obvious which are deliberate: - lnet/utils/lnetconfig/liblnetconfig_netlink.c empty-flow-set handling - lov_obd.c switching class_register_type() from enable_proc=true to false - llapi_param_display_value() changing its success return from 0 to the raw yaml rc - llapi_get_poolbuf() gaining `poolname++` - lu_tgt_pool.op_array changing from __u32 to u32 - lod_pool.c setting op_obd_idx (LOD has no .o_pool_find, so nothing reads it yet) Could the message name the new symbols too - LUSTRE_CMD_POOLS, o_pool_find()/lov_pool_list(), lustre_pools_dump() - so the change is findable via git log?
reply Gerrit AI review for Lustre lproc_lov.c:287 — (defect) With pools now living only under obd_debugfs_entry, the old world-readable /proc/fs/lustre/lov/<dev>/pools/<pool> is gone and the o
Gerrit AI review for Lustre
(defect) With pools now living only under obd_debugfs_entry, the old world-readable /proc/fs/lustre/lov/<dev>/pools/<pool> is gone and the only copy is under /sys/kernel/debug, which is mode 0700. llapi_get_poollist() and llapi_get_poolmembers() grew a Netlink fallback for that, but llapi_search_ost() did not - it still does poolpath() -> fopen(), and poolpath() -> get_lustre_param_path() -> cfs_get_param_paths() globs /sys/kernel/debug/lustre/lov/<fs>-*/pools, which a normal user cannot traverse (GLOB_NOMATCH -> -ENOENT). That propagates to llapi_stripe_param_verify(), which turns it into "pool '%s fsname %s' does not exist" and -EINVAL, so `lfs setstripe -p <pool>` fails for an unprivileged user. `lfs df --pool` and llapi_layout_sanity() -> llapi_search_ost() hit the same path. This change is the top of the relation chain, so nothing later picks it up. Should llapi_search_ost() get the same Netlink fallback in this patch?
owner James Simmons · uploader James Simmons · PS5 uploaded 39d ago · NEW · open in Gerrit ↗
commit message
LU-11850 lov: create Netlink interface for pools With the need to move pools handling to debugfs this prevents non-root user land applications and libraries from accessing this information. Create a Netlink interface that provides the same needed information. Update liblustreapi to use the Netlink YAML approach to gather pools information. Pool source defines itself by the obd device source and pool name so its not the typical single collection of data to obd device. This makes pools require its own dump function. Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I769567270e45f2de074fad2fab78a2f0c3a741b4
68164
master
J ✓B ✓T ✓R -1/2−
LU-20587 lnet: expand Netlink support for more peers
Alexey Lyashkov voted -1
7 unresolved
M +102 −0
19d
LU-20587 lnet: expand Netlink support for more peers
Alexey Lyashkov voted -1
7 unresolved
M +102 −0
19d
Alexey Lyashkov voted -1
6 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
1 thread(s) waiting on others
no vote yet from Serguei Smirnov, Chris Horn
build #132251 SUCCESS · tests all Maloo sessions
reviews:
Alexey Lyashkov -1
no vote yet: Serguei Smirnov, Chris Horn
patchsets:
PS1 08-20
PS2 08-27
PS3 08-27
PS4 08-29
PS5 09-24
threads: 6 need your reply · 1 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (style) LU-20587 is filed as "lnetctl peer show -v 2 causes kernel oops", but the body only describes a capacity limit. Could it say that th
Gerrit AI review for Lustre
(style) LU-20587 is filed as "lnetctl peer show -v 2 causes kernel oops", but the body only describes a capacity limit. Could it say that this is fixing a crash, and describe how running out of skb space in lnet_peer_ni_show_dump() leads to the oops? That makes it much easier to decide whether the change needs backporting.
reply Gerrit AI review for Lustre COMMIT_MSG:16 — (defect) This fixes a kernel oops, so it should carry a Fixes: tag. lnet_peer_ni_show_dump() and its single-skb dump came in with:
Gerrit AI review for Lustre
(defect) This fixes a kernel oops, so it should carry a Fixes: tag. lnet_peer_ni_show_dump() and its single-skb dump came in with:
Fixes: f0be00678cc8 ("LU-9680 lnet: collect data about peer_ni by using Netlink")
reply Gerrit AI review for Lustre api-ni.c:7887 — Carrying forward the unbounded-allocation point from patchset 1, which does not look addressed yet: nothing caps cb->min_dump_alloc, and the
Gerrit AI review for Lustre
Carrying forward the unbounded-allocation point from patchset 1, which does not look addressed yet: nothing caps cb->min_dump_alloc, and there is no error when the computed size is unreasonable. The sibling handlers in this file and in obdclass do bound it, e.g. lnet_route_show_start():
len += ROUTER_MSG_VALUES_SIZE * rlist->lgrl_count;
if (len > BIT(sizeof(cb->min_dump_alloc) << 3)) {
NL_SET_ERR_MSG(extack, "Netlink msg is too large");
rc = -EMSGSIZE;
} else {
cb->min_dump_alloc = len;
}
Peers are unbounded (unlike NIs, which are capped by lnet_interfaces_max), so the same guard - or a cap on how many peers one dump covers - seems needed here too.
reply Gerrit AI review for Lustre api-ni.c:7868 — (defect) Nothing caps cb->min_dump_alloc and there is no error when the computed total is unreasonable. This was raised on patchset 1 ("allo
Gerrit AI review for Lustre
(defect) Nothing caps cb->min_dump_alloc and there is no error when the computed total is unreasonable. This was raised on patchset 1 ("allocating an 4G in kernel - very very bad style") and the reply agreed peers still need overflow handling since, unlike NIs, they are not bounded by lnet_interfaces_max - but patchset 4 still accumulates straight into the field.
The sibling handler in this file bounds it, in lnet_route_show_start():
len += ROUTER_MSG_VALUES_SIZE * rlist->lgrl_count;
if (len > BIT(sizeof(cb->min_dump_alloc) << 3)) {
NL_SET_ERR_MSG(extack, "Netlink msg is too large");
rc = -EMSGSIZE;
} else {
cb->min_dump_alloc = len;
}
and lustre/obdclass/kernelcomm.c does the same. Two reasons that guard matters here:
min_dump_alloc is u16 in netlink_callback before v5.7, so on the older supported kernels the += silently wraps modulo 65536 - and can wrap to less than PEER_KEY_TABLE_MSG_SIZE.
On newer kernels the skb head is still one contiguous kmalloc, not a kvmalloc: netlink_dump() calls alloc_skb(alloc_min_size, GFP_KERNEL), and __alloc_skb() -> kmalloc_reserve() ends in kmalloc_node_track_caller(). So above KMALLOC_MAX_SIZE the dump can only fail with -ENOBUFS, and below it every dump invocation is asking for a high-order allocation.
reply Gerrit AI review for Lustre api-ni.c:8233 — (defect) None of the nla_nest_start() results in this handler are checked, and nla_nest_end() writes through the pointer without a NULL test
Gerrit AI review for Lustre
(defect) None of the nla_nest_start() results in this handler are checked, and nla_nest_end() writes through the pointer without a NULL test:
static inline int nla_nest_end(struct sk_buff *skb, struct nlattr *start)
{
unsigned long diff = skb_tail_pointer(skb) - (unsigned char *)start;
start->nla_len = diff;
So once the skb runs out of room, nla_nest_start() returns NULL and the matching nla_nest_end() at the bottom of the loop faults. The nests opened for the -v 2 stats (send/recv/drop/health) are the ones LU-20587 names in its title.
Enlarging the skb makes this less likely, but any residual under-estimate still lands here. Should the dump bail out with -EMSGSIZE when a nest cannot be opened, so a short estimate degrades into a truncated dump instead of an oops?
reply Gerrit AI review for Lustre api-ni.c:7868 — (defect) Nothing caps cb->min_dump_alloc and there is no error return when the computed total is unreasonable - it just accumulates. This is
Gerrit AI review for Lustre
(defect) Nothing caps cb->min_dump_alloc and there is no error return when the computed total is unreasonable - it just accumulates. This is the objection from patchset 1 ("allocating an 4G in kernel - very very bad style. Please use a multipart messages."), which was answered with "I do agree peer needs to still handle overflows since peers unlike NI (lnet_interfaces_max) is not bounded". Patchset 5 still has no bound.
The sibling handler in this file does bound it, lnet_route_show_start():
len += ROUTER_MSG_VALUES_SIZE * rlist->lgrl_count;
if (len > BIT(sizeof(cb->min_dump_alloc) << 3)) {
NL_SET_ERR_MSG(extack, "Netlink msg is too large");
rc = -EMSGSIZE;
} else {
cb->min_dump_alloc = len;
}
At version 4/5 this charges roughly 945 bytes for a single-NI peer, so a few thousand peers already asks for a multi-megabyte buffer on every `lnetctl peer show`. Could the same guard, or a cap on how many peers one dump covers, be applied here?
owner James Simmons · uploader James Simmons · PS5 uploaded 41d ago · NEW · open in Gerrit ↗
commit message
LU-20587 lnet: expand Netlink support for more peers Currently the LNet Netlink peer interface uses the default size of 64K for it struct sk_buf. This limits the number of peers that can be reported with the Netlink layer. We can manually calculate the cb->min_dump_alloc to allocate the struct sk_buf of the needed size. Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I900ae18d6098df0df699df6a64d1d462702c2b4a
13135
master
J –B ✓T ✓R +1/2−
LU-6034 lnet: Enable lnetctl to handle checksum settings for LNet
Oleg Drokin voted -1
stalled 456d
S +33 −7
456d
LU-6034 lnet: Enable lnetctl to handle checksum settings for LNet
Oleg Drokin voted -1
stalled 456d
S +33 −7
456d
reviews:
Doug Oucharek +1 · Oleg Drokin -1 · Liang Zhen +1
no vote yet: Dmitry Eremin, Isaac Huang, Jian Yu, Frank Zago, Amir Shehata
owner James Simmons · uploader James Simmons · PS12 uploaded 4110d ago · NEW · open in Gerrit ↗
commit message
LU-6034 lnet: Enable lnetctl to handle checksum settings for LNet Add the ability for lnetctl to query or set the checksum algorithm for an LNet interface. This patch only enables user land side of setting this. Change-Id: I40ec55e73032d24baf3133703efc59d49446d692 Signed-off-by: James Simmons <uja.ornl@yahoo.com>
39337
master
J !B ✓T ✓R -1/2−
LU-11621 utils: optimize lustre_rsync with copy_file_range()
John Hammond voted -1
stalled 463d
S +16 −1
463d
LU-11621 utils: optimize lustre_rsync with copy_file_range()
John Hammond voted -1
stalled 463d
S +16 −1
463d
John Hammond voted -1
no vote yet from Shaun Tancheff, Andreas Dilger
build #17526 SUCCESS
reviews:
John Hammond -1
no vote yet: Shaun Tancheff, Andreas Dilger
owner James Simmons · uploader James Simmons · PS5 uploaded 2189d ago · NEW · open in Gerrit ↗
commit message
LU-11621 utils: optimize lustre_rsync with copy_file_range() Newer kernels and glibc offer copy_file_range() which avoids a context switch needed with read() + write() for file data copying. In the future Lustre can look to optimize this copy on the server backend. Updating lustre_rsync to use this new functionality which should give a performance boost. Test-Parameters: trivial testlist=lustre-rsync-test Change-Id: Ibd67847f8d876075f77e14e2721d22d4905cb9ff Signed-off-by: James Simmons <jsimmons@infradead.org>
49348
master
J ✓B ✓T –R -1/2−
LU-12251 tests: re-enable running sanity-flr for PPC
Andreas Dilger voted -1
stalled 463d
XS +1 −2
463d
LU-12251 tests: re-enable running sanity-flr for PPC
Andreas Dilger voted -1
stalled 463d
XS +1 −2
463d
Andreas Dilger voted -1
build OK — testing in progress (typically 6–14h)
build #91089 SUCCESS
reviews:
Andreas Dilger -1
no vote yet: xinliang
patchsets:
PS1 12-08
PS2 12-08
PS3 12-08
PS4 12-10
owner James Simmons · uploader James Simmons · PS4 uploaded 1425d ago · NEW · open in Gerrit ↗
commit message
LU-12251 tests: re-enable running sanity-flr for PPC Its been a long time since PPC had issues with FLR test. Re-enable those test. We do keep test 50a disabled since it fails on ARM and PPC platforms. Test-Parameters: trivial clientarch=ppc64 testlist=sanity-flr Change-Id: Ia1007f6213b530d4a5695ff6143be14ac2736a6c Signed-off-by: James Simmons <jsimmons@infradead.org>
49349
master
J ✓B ✓T ✓R -1/2−
LU-12252 tests: re-enable running sanity-hsm for PPC
Andreas Dilger voted -1
stalled 463d
S +0 −22
463d
LU-12252 tests: re-enable running sanity-hsm for PPC
Andreas Dilger voted -1
stalled 463d
S +0 −22
463d
build #91076 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger -1
no vote yet: Etienne AUJAMES, xinliang, Jian Yu
patchsets:
PS1 12-08
PS2 12-08
PS3 12-08
owner James Simmons · uploader James Simmons · PS3 uploaded 1426d ago · NEW · open in Gerrit ↗
commit message
LU-12252 tests: re-enable running sanity-hsm for PPC Its been a long time since PPC had issues with HSM test. Re-enable those test. Test-Parameters: trivial clientdistro=el8.6 clientarch=ppc64le testlist=sanity-hsm Change-Id: Ibe18524f6a1a92b66a2b6f9454374910761e8344 Signed-off-by: James Simmons <jsimmons@infradead.org>
▶In CI
(0)
nothing here right now
▶Needs reviewers
(2)
38883
master
J ✓B ✓T ✓R 0/2
LU-11621 utils: optimize migrate_copy_data() with copy_file_range()
CI green — no vote yet from Andreas Dilger
stalled 456d
S +39 −0
456d
LU-11621 utils: optimize migrate_copy_data() with copy_file_range()
CI green — no vote yet from Andreas Dilger
stalled 456d
S +39 −0
456d
build #18181 SUCCESS
no vote yet: Andreas Dilger
owner James Simmons · uploader James Simmons · PS17 uploaded 2156d ago · NEW · open in Gerrit ↗
commit message
LU-11621 utils: optimize migrate_copy_data() with copy_file_range() Newer kernels and glibc offer copy_file_range() which avoids a context switch needed with read() + write() for file data copying. In the future Lustre can look to optimize this copy on the server backend. Updating migrate_copy_date() to use this new functionality which should give a performance boost. Change-Id: I601fb1e413f243775a464d8145351d772e6c8ff1 Signed-off-by: James Simmons <jsimmons@infradead.org>
40548
master
J !B ✓T ✓R 0/2
LU-11621 utils: add special code to profile performance
CI green — no vote yet from Andreas Dilger
stalled 2188d
M +54 −22
2188d
LU-11621 utils: add special code to profile performance
CI green — no vote yet from Andreas Dilger
stalled 2188d
M +54 −22
2188d
build #17528 SUCCESS
no vote yet: Andreas Dilger
owner James Simmons · uploader James Simmons · PS1 uploaded 2189d ago · NEW · open in Gerrit ↗
commit message
LU-11621 utils: add special code to profile performance
Add the ability to migrate files with copy_file_range() with a
new optional lfs flag. Also add the ability to move different
size chunks for migration to see the performance.
To test this I create two pools and made a file to move between
them. Original the file is created on the 'slow' pool. The
script I used to test this is as follow:
echo "creating file ....."
lfs setstripe -c $((TGT_MAX / 2)) -p $FSNAME.slow $MOUNT/testfile
dd if=/dev/urandom of=$MOUNT/testfile bs=1M conv=fdatasync count=$((512 * TGT_MAX))
echo 3 > /proc/sys/vm/drop_caches
lfs ladvise -a dontneed $MOUNT/testfile
for iosize in 1M 4M 16M 64M; do
echo "migrating file iosize = $iosize for transfer direct I/0"
time lfs migrate --pool $FSNMAE.fast -z $iosize $MOUNT/testfile
for copy in --non-direct --copy-range; do
echo "migrating file iosize = $iosize for transfer $copy"
time lfs migrate --pool $FSNMAE.fast $copy -z $iosize $MOUNT/testfile
printf '\n'
done
done
This patch is only for testing.
Change-Id: I057208d8f9d095a2f652e0e649bd5a77a87c9854
Test-Parameters: trivial
Signed-off-by: James Simmons <jsimmons@infradead.org>
▶Waiting on reviewers
(4)
70331
master
J –B ✓T ✓R 0/2
LU-18687 llite: handle CONFIG_LUSTRE_FS_SERVER tristate
upstream
CI@PS2
XS +1 −1
5h
LU-18687 llite: handle CONFIG_LUSTRE_FS_SERVER tristate
upstream
CI@PS2
XS +1 −1
5h
build #135247 SUCCESS · tests all Maloo sessions
patchsets:
PS1 11-02
PS2 11-02
PS3 11-02
build/test results are from PS2 — PS3…PS3 changed only the commit message (votes copied, CI not re-run)
owner James Simmons · uploader James Simmons · PS3 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-18687 llite: handle CONFIG_LUSTRE_FS_SERVER tristate Convert llite to tristate CONFIG_LUSTRE_FS_SERVER Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Ie27fe74cf8e160286b23f6a79195066857395c6d
70330
master
J –B ✓T ✓R 0/2
LU-18687 obdecho: handle CONFIG_LUSTRE_FS_SERVER tristate
upstream
S +19 −19
6h
LU-18687 obdecho: handle CONFIG_LUSTRE_FS_SERVER tristate
upstream
S +19 −19
6h
build #135251 SUCCESS · tests all Maloo sessions
patchsets:
PS1 11-02
PS2 11-02
PS3 11-02
owner James Simmons · uploader James Simmons · PS3 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-18687 obdecho: handle CONFIG_LUSTRE_FS_SERVER tristate Convert obdecho to tristate CONFIG_LUSTRE_FS_SERVER Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I446451adfca5a797de969041a12c214d6a1a77e8
24560
master
J –B ✓T ✓R 0/2
LU-8980 llite: add tracepoint support for llite layer
stalled 141d
XL +905 −509
141d
LU-8980 llite: add tracepoint support for llite layer
stalled 141d
XL +905 −509
141d
no vote yet: Dmitry Eremin, Jinshan Xiong, Lustre Buildbot
owner James Simmons · uploader James Simmons · PS1 uploaded 3594d ago · NEW · open in Gerrit ↗
commit message
LU-8980 llite: add tracepoint support for llite layer Add initial trace events for debug logs that never get printed to the console for llite layer. Change-Id: Ia15f669271218ae6e79754d9a9ee4080cee7a957 Signed-off-by: James Simmons <uja.ornl@yahoo.com>
48170
b2_15
J ✓B ✓T ✓R +1/2
LU-6864 tests: properly skip sanity/245b in interop
no vote yet from Lai Siyao, Oleg Drokin
stalled 1313d
S +9 −9
1313d
LU-6864 tests: properly skip sanity/245b in interop
no vote yet from Lai Siyao, Oleg Drokin
stalled 1313d
S +9 −9
1313d
build #89256 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Andreas Dilger +1
no vote yet: Lai Siyao, Oleg Drokin
patchsets:
PS1 08-09
PS2 08-26
owner James Simmons · uploader James Simmons · PS2 uploaded 1531d ago · NEW · open in Gerrit ↗
commit message
LU-6864 tests: properly skip sanity/245b in interop
Skip sanity test_245b if the server does not support multi_mod_rpcs.
Lustre-commit: https://review.whamcloud.com/47656
Lustre-commit: c4ebdc96061ae9c24ac471b2866f2087bc3e98d4
Test-Parameters: trivial serverversion=2.14 testlist=sanity env=ONLY=245
Fixes: 23028efcae01 ("LU-6864 osp: manage number of modify RPCs in flight")
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: Ibd73625c64deaa99f6f2a515bc1214cbb83ebbe5
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Lai Siyao <lai.siyao@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
▶Ready to land
(3)
37013
master
J –B ✓T ✓R +2/2
LU-9868 llite: use d_splice_alias for directories.
all green — queued for landing (master-next)
upstream
pw_shepherd
master-next
5 unresolved
M +41 −11
2d
LU-9868 llite: use d_splice_alias for directories.
all green — queued for landing (master-next)
upstream
pw_shepherd
master-next
5 unresolved
M +41 −11
2d
all green — queued for landing (master-next)
5 reviewer comment(s) to address if a respin is needed — last from Andreas Dilger
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanity-sec. | session |
build #134050 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1 · Alex Zhuravlev +1
no vote yet: Qian Yingjin, Neil Brown, Lai Siyao, Timothy Day, Oleg Drokin
patchsets:
PS30 07-23 Oleg Drokin
PS31 07-23 Oleg Drokin
PS32 07-26 Oleg Drokin
PS33 09-04 Oleg Drokin
PS34 10-19 patrick bot
+27 earlier
PS3 02-22 PS4 02-27 PS5 02-27 PS6 03-18 PS7 03-19 PS8 03-22 PS9 03-23 PS10 03-25 PS11 03-26 PS12 03-26 PS13 05-18 PS14 10-10 PS15 10-10 PS16 03-21 PS17 08-06 PS18 04-07 PS19 04-08 PS20 04-08 PS21 04-09 PS22 04-10 PS23 04-14 PS24 04-16 PS25 04-17 PS26 05-01 PS27 05-13 PS28 07-21 Oleg Drokin PS29 07-23 Oleg Drokinyour previous vote: -1 on PS33 (2026-10-19 15:33) — now at PS34
threads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger COMMIT_MSG:21 — The commit message is far too long and should be made more concise. It does not need to list every function modified, only those that are i
Gerrit AI review for Lustre
(minor) The double-iput fix described here lands in revalidate_statahead_dentry(), not ll_statahead_interpret(). The latter only igrab()s the inode into se_inode; it is revalidate_statahead_dentry() that calls ll_splice_alias() and now clears se_inode before the IS_ERR() check. Worth correcting the name so the change stays findable via git log later.
patrick bot
Patrick-Bot: The commit message names revalidate_statahead_dentry() as of PS33.
Andreas Dilger
The commit message is far too long and should be made more concise. It does not need to list every function modified, only those that are important to the main patch functionality.
reply Oleg Drokin patchset comment — so, the OOM is real, it was traced to a longer retention of RPCs in replay list, mostly related to directory-churn workloads it seems.
Alex Zhuravlev
well.... [ 368.091239] Lustre: lustre-MDT0000-mdc-ffff89a08865b000: Force grant RPC slot (1 current) to proc with flag: 208840. [ 368.091527] Lustre: Skipped 3 previous similar messages [ 370.228394] Lustre: lustre-MDT0000-mdc-ffff89a041f49000: Force grant RPC slot (1 current) to proc with flag: 208840. [ 374.536843] Lustre: lustre-MDT0000-mdc-ffff89a041f49000: Force grant RPC slot (1 current) to proc with flag: 208840. [ 374.536967] Lustre: Skipped 2 previous similar messages [ 382.893306] Lustre: lustre-MDT0000-mdc-ffff89a041f49000: Force grant RPC slot (8 current) to proc with flag: 208840. [ 382.893500] Lustre: Skipped 51 previous similar messages [ 399.281310] Lustre: lustre-MDT0000-mdc-ffff89a08865b000: Force grant RPC slot (4 current) to proc with flag: 208840. [ 399.282289] Lustre: Skipped 140 previous similar messages [ 402.163522] obd_memory max: 4662112620, obd_memory current: 4661744265 [ 402.163950] kthreadd invoked oom-killer: gfp_mask=0x400dc0(GFP_KERNEL_ACCOUNT|__GFP_ZERO), order=2, oom_score_adj=0 [ 402.164047] CPU: 0 PID: 2 Comm: kthreadd Tainted: G O ------- --- 5.14.0 #26 [ 402.164115] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.17.0-9.fc43 06/10/2025 [ 402.164175] Call Trace: [ 402.165043] <TASK> [ 402.166569] dump_stack_lvl+0x57/0x7d [ 402.167511] dump_header+0x4f/0x486 [ 402.167545] ? ___ratelimit+0x83/0x100 [ 402.167578] oom_kill_process.cold+0x54/0x79 [ 402.167614] ? lock_release+0x1c7/0x2e0 [ 402.167648] ? _raw_spin_unlock+0x1a/0x30 [ 402.167679] out_of_memory+0xc8/0x510 [ 402.167712] __alloc_pages_slowpath.constprop.0+0x6d3/0xcb0 [ 402.167751] __alloc_pages+0x2ba/0x2d0 [ 402.167781] copy_process+0x1fd/0x24b0 [ 402.167813] ? update_load_avg+0x60/0x260 [ 402.167845] ? lock_acquire+0x15c/0x2f0 [ 402.167875] ? __update_load_avg_se+0x153/0x380 [ 402.167913] ? trace_pelt_se_tp+0x29/0xc0 [ 402.167945] ? lock_release+0x1c7/0x2e0 [ 402.167976] kernel_clone+0x86/0x340 [ 402.168005] ? do_raw_spin_unlock+0x46/0x90 [ 402.168051] ? finish_task_switch.isra.0+0xef/0x330 [ 402.168088] kernel_thread+0x4a/0x50 [ 402.168118] ? kthread_park+0x80/0x80 [ 402.168151] kthreadd+0xc5/0x110 [ 402.168185] ? kthread_is_per_cpu+0x20/0x20 [ 402.168220] ret_from_fork+0x1f/0x30 [ 402.168290] </TASK> [ 402.168321] Mem-Info: [ 402.168347] active_anon:255934 inactive_anon:234092 isolated_anon:0 [ 402.168347] active_file:236 inactive_file:1651 isolated_file:214 [ 402.168347] unevictable:0 dirty:0 writeback:192 [ 402.168347] slab_reclaimable:9149 slab_unreclaimable:1153520 [ 402.168347] mapped:875 shmem:467586 pagetables:2320 [ 402.168347] sec_pagetables:0 bounce:0 [ 402.168347] kernel_misc_reclaimable:0 [ 402.168347] free:30537 free_pcp:910 free_cma:0
Oleg Drokin
so, the OOM is real, it was traced to a longer retention of RPCs in replay list, mostly related to directory-churn workloads it seems. It is also affected by Alex's case of not carrying the previous patch in the series (67391) so with 2000 stripes seen the normally relatively small RPCs blow up to 256k greatly exacerbating the memory consumption. the problem is open requests are leaked because somehow atomic open machinery returns IT_OPEN_OPEN that sets rq_replay that is never cleared.
reply patrick bot namei.c:637 — Patrick-Bot: Since PS33 the patch no longer discards d_lustre_invalid() aliases: the legacy branch d_move()s and reuses them as before, for
Oleg Drokin
after some more thinking, this looks wrong. For regular files we absolutely want to reuse these stale dentries, all this means is we lost the lookup bit some time ago, so what? I guess for DIRECTORIES we don't and if it's an open by fid we can have a directory here, so we should also check if we found a directory before we throw it away. Or should we only throw away for the by_fid regardless of mode? Aliases for regular files don't really much do they so probably not? Though in instrumentation this is NOT a big signal compared to the leak (200 hits here for 8000 rq_replay requests stuck)
patrick bot
Patrick-Bot: Since PS33 the patch no longer discards d_lustre_invalid() aliases: the legacy branch d_move()s and reuses them as before, for files and by-FID directories alike.
reply Gerrit AI review for Lustre namei.c:615 — (minor) This isn't a bug, but this function comment no longer describes the function. Directories in the normal namespace and negative dentr
Gerrit AI review for Lustre
(minor) This isn't a bug, but this function comment no longer describes the function. Directories in the normal namespace and negative dentries now go straight through d_splice_alias(); only non-directories and by-FID directories get the invalid-alias reuse. If the patch is refreshed, it would be worth updating.
reply Gerrit AI review for Lustre namei.c:637 — (defect) Only the immediate parent is tested here, so lookups one level below .lustre/fid/<FID> take the d_splice_alias() path. The commit m
Gerrit AI review for Lustre
(defect) Only the immediate parent is tested here, so lookups one level below .lustre/fid/<FID> take the d_splice_alias() path. The commit message accepts this, but the cases go beyond what it describes. With the old d_add(), all of these simply created a duplicate dentry: - openat(fd_of(.lustre/fid/<aFID>), "b") on a directory b: __d_unalias() takes the cross-parent path. It returns -ESTALE whenever the s_vfs_rename_mutex or the a inode i_rwsem trylock fails. When it succeeds, it moves b's real dentry under .lustre/fid/<aFID>, so the cwd of any process in $MOUNT/a/b, and any mount stacked on b, now reports a by-FID path. - .lustre/fid/<ROOT-FID>/.lustre: the parent is the duplicate root dentry created by the by_fid branch. The real .lustre dentry is a d_ancestor() of the new dentry, so this returns -ELOOP, and the VFS does not retry -ELOOP. - The same thing happens for any top-level directory under .lustre/fid/<ROOT-FID>/: its real dentry is moved there. The commit message says covering this needs new dentry state. Would walking de->d_parent towards the root and testing fid_is_obf() at each level (under rcu_read_lock()/rename_lock) be enough? Every dentry the by_fid branch creates is hashed under the .lustre/fid dentry, so the whole by-FID subtree can be recognised by ancestry alone.
tags: pw_shepherd
owner James Simmons · uploader patrick bot · PS34 uploaded 15d ago · NEW · open in Gerrit ↗
commit message
LU-9868 llite: use d_splice_alias for directories.
In the Linux dcache a directory only ever has one dentry,
so d_splice_alias() can be used by ll_splice_alias() for
directories. It will find the one dentry whether it is
DCACHE_DISCONNECTED or IS_ROOT() or d_lustre_invalid().
Separating out the directories from non-directories will
allow us to simplify the non-directory code.
A negative lookup (@inode NULL) takes the new branch as
well, where it used to reach d_add(de, NULL):
d_splice_alias(NULL, de) does the same __d_add(), with the
BUG_ON(!d_unhashed(de)) it opens with. No caller passes a
hashed dentry: ll_atomic_open() either hands over a
d_in_lookup() dentry or d_drop()s it first.
Unlike the old ll_splice_alias() d_add() path,
d_splice_alias() consumes the passed inode reference in
every case (including on its error returns -ELOOP/-ESTALE)
and can now return an error. Adjust the callers to the new
contract:
- revalidate_statahead_dentry() transferred the sa_entry
inode reference to the dentry (se_inode = NULL) only on
the success path, so on the d_splice_alias() error path
the reference it already dropped was iput() a second
time when the sa_entry was freed, underflowing i_count
(WARNING at fs/inode.c ihold, hit under an rm workload
with statahead active). Transfer ownership away from
the sa_entry before inspecting the result.
- A by-FID (.lustre/fid/) directory lookup must not d_move
the directory's real (connected) dentry onto the fid
path. d_splice_alias() does exactly that for an ordinary
directory: __d_find_any_alias() returns its connected
dentry, which is neither an ancestor of the new
.lustre/fid/<FID> dentry nor IS_ROOT(), so __d_unalias()
moves it there and the normal path to the directory
stops working. ($MOUNT itself and .lustre are ancestors,
so they come back -ELOOP instead, equally fatal to
sanity 233a/233b.) Keep the legacy alias handling for
OBF-parented directory lookups; use d_splice_alias()
only for normal-namespace lookups, where it keeps a
directory to a single dentry (LU-17536).
The test is on the immediate parent's FID, so it
recognises the entries directly under .lustre/fid/ and
nothing else about the by-FID namespace. Two cases are
therefore left as d_splice_alias() handles them, both of
them consequences of the OBF namespace giving a
directory a second dentry in the first place:
* .lustre/fid/<dir-FID>/<name>: the parent is the
duplicate dentry this branch made for <dir-FID>, so
the child takes the d_splice_alias() path and
__d_unalias() moves its real dentry into the by-FID
tree.
* $MOUNT/<path>/<dir> for a directory that already has
a by-FID dentry: __d_find_any_alias() hands that
dentry back, and __d_unalias() moves it into the
normal namespace. That is the useful direction, but
one the old d_add() never took.
In both, __d_unalias() takes its cross-parent path and
can return -ESTALE: it mutex_trylock()s
s_vfs_rename_mutex, which any rename on the filesystem
holds, and inode_trylock_shared()es the alias's parent,
which any create, unlink, mkdir, rmdir or setattr in
that directory holds exclusively. The VFS retries once
with LOOKUP_REVAL, but a lookup that could not fail
before now can, and under a directory-churn workload it
will meet those holders. Covering these means
recognising the whole by-FID subtree (marking the
dentries this branch creates), which is new dentry state
and is left for its own patch.
The by-FID test does not bound that -ESTALE exposure: a
directory renamed on another client keeps an in-use
dentry under its old parent, and a lookup of the new
path takes the same cross-parent path. That is ordinary
d_splice_alias() behaviour.
The legacy branch is otherwise left exactly as it was: an
alias that ll_find_alias() returns is still d_move()d onto
the new dentry and reused, whether it is d_lustre_invalid()
or not. d_lustre_invalid() only means the LOOKUP lock was
dropped at some point, which is the common case, and
reusing the dentry is the whole point of ll_find_alias();
discarding it instead would replace the dentry that open
files and mounts are attached to on every lookup that races
a lock cancellation. It would also be a behaviour change
for regular files, which this patch is not about.
Linux-commit: e9d4f0b9f55920821845b8e063ed593422c18d8a
Linux-commit: 1d6e65bedf5878c8dd5b089d3f034b619bbb8a77
Test-Parameters: optional testlist=racer
Signed-off-by: NeilBrown <neil@brown.name>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Oleg Drokin <green@whamcloud.com>
Assisted-by: ClaudeCode:Opus-5 llm_code_and_review_tools
Change-Id: If80a02b77c4fc62cdb90e86cdb8a0f9eba21193b
69023
master
J –B ✓T ✓R +2/2
LU-18687 build: remove some lnet abstractions for Linux kernel tree
all green — ready to land (not in master-next yet)
upstream
3 unresolved
M +103 −47
5d
LU-18687 build: remove some lnet abstractions for Linux kernel tree
all green — ready to land (not in master-next yet)
upstream
3 unresolved
M +103 −47
5d
all green — ready to land (not in master-next yet)
3 reviewer comment(s) to address if a respin is needed — last from Gerrit AI review for Lustre
build #134643 SUCCESS · tests all Maloo sessions
reviews:
Arshad Hussain +1 · Timothy Day +1
no vote yet: Serguei Smirnov, Shaun Tancheff, Chris Horn, Andreas Dilger
patchsets:
PS8 09-23
PS9 09-29
PS10 10-22
PS11 10-22
PS12 10-28
+7 earlier
PS1 09-17 PS2 09-18 PS3 09-22 PS4 09-22 PS5 09-22 PS6 09-22 PS7 09-23threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (style) This isn't a bug, but the summary is wrapped onto a second line (" kernel tree") with no blank line after it, so git joins the two a
Gerrit AI review for Lustre
(style) This isn't a bug, but the summary is wrapped onto a second line (" kernel tree") with no blank line after it, so git joins the two and the subject becomes "LU-18687 build: remove some lnet abstractions for Linux kernel tree": 68 characters with a double space, over the 62-character limit. The patch also touches lustre/obdclass and lustre/osc, so it isn't only LNet. Something like "LU-18687 build: drop compat ifdefs for Linux kernel tree" would fit on one line.
reply Arshad Hussain moduleparam.h:10 — This is to avoid searching from lustre_compat/linux (from top) and find actual linux kernel include/linux this #include_next is used. Your c
Serguei Smirnov
Why don't we use regular #include? Doesn't #include_next cause us to make assumptions about the order in which directories are processed?
Arshad Hussain
This is to avoid searching from lustre_compat/linux (from top) and find actual linux kernel include/linux this #include_next is used. Your concern is correct, but here it is the design.
reply Gerrit AI review for Lustre lnet_rdma.c:15 — (minor) If the patch is refreshed: <lustre_compat/linux/pci-p2pdma.h> is now included above and already pulls in <linux/pci-p2pdma.h> when H
Gerrit AI review for Lustre
(minor) If the patch is refreshed: <lustre_compat/linux/pci-p2pdma.h> is now included above and already pulls in <linux/pci-p2pdma.h> when HAVE_IS_PCI_P2PDMA_PAGE is set, so this include is redundant. <linux/pci.h> and <linux/memremap.h> are still needed for pci_p2pdma_distance() and page_pgmap().
owner James Simmons · uploader James Simmons · PS12 uploaded 6d ago · NEW · open in Gerrit ↗
commit message
LU-18687 build: remove some lnet abstractions for Linux kernel tree Dropping the current LNet tree without any compat macros breaks the native build. Resolve those build issues with the following: 1) HAVE_MODULE_LOADING_SUPPORT doesn't exist upstream so instead replace it with CONFIG_LUSTRE_FS_COMMON_MODULE and CONFIG_LNET_MODULE which works with the if IS_MODULE macro. 2) Saw build issues with LIBCFS_DEBUG not defined which is the case in the Linux kernel. We need a way to setup in up but for now handle LIBCFS_DEBUG being undefined 3) Move param_set_uint_minmax() to the compat layer since it was colliding. 4) We have a bunch of ifdef to handle missing headers. Make the headers in compat layer so we can drop those ifdefs. The Linux kernel will need lustre_ver.h and it will need to contain LUSTRE_VERSION information which will be done in a later patch. Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Ib686e32d9d1f09f8df8cd4d7bbe21b18e29d6e7e
48169
b2_15
J !B ✓T ✓R +2/2
LU-6864 osp: manage number of modify RPCs in flight
all green — ready to land (not in b2_15-next yet)
stalled 1531d
L +225 −187
1531d
LU-6864 osp: manage number of modify RPCs in flight
all green — ready to land (not in b2_15-next yet)
stalled 1531d
L +225 −187
1531d
janitor run: 1 failing config(s), none unique to this patch — janitor results
build #89213 SUCCESS · tests all Maloo sessions
reviews:
Lai Siyao +1 · Andreas Dilger +1
no vote yet: Gregoire Pichon
patchsets:
PS1 08-09
PS2 08-09
PS3 08-23
owner James Simmons · uploader James Simmons · PS3 uploaded 1533d ago · NEW · open in Gerrit ↗
commit message
LU-6864 osp: manage number of modify RPCs in flight Currently we use a rpc_lock to ensure concurrent in-flight request are handled serially to prevent the execution status from being over written. This patch changes the osp component to send multiple modify RPCs in parallel to the MDT. This will improve metadata performance of cross-MDT operations. For testing replace mkdirmany with createmany -d which does the same thing. Lustre-commit: https://review.whamcloud.com/14375 Lustre-commit: 23028efcae01bf1274a68fd2dd379fbb33300e82 Signed-off-by: Gregoire Pichon <gregoire.pichon@bull.net> Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: Icb601afabd6767463634a4c7943ec4206bc758ec Reviewed-by: Andreas Dilger <adilger@whamcloud.com> Reviewed-by: Lai Siyao <lai.siyao@whamcloud.com>
▶Parked (WIP / self-blocked)
(0)
nothing here right now
Carrying — uploaded by me, owned by others
32 open▶Failed / broken
(14)
66791
master
J –B ✓T ✓R ✗
LU-18687 build: reimplement dist target in plain make
carrying Timothy Day · needs rebase — checkpatch: cannot be cherry-picked
needs rebaseCR -1
9 unresolved
M +92 −74
3d
LU-18687 build: reimplement dist target in plain make
carrying Timothy Day · needs rebase — checkpatch: cannot be cherry-picked
needs rebaseCR -1
9 unresolved
M +92 −74
3d
needs rebase — checkpatch: cannot be cherry-picked
Timothy Day voted -1
8 unresolved thread(s) await your reply — last from Oleg Drokin
1 thread(s) waiting on others
no vote yet from Shaun Tancheff, Andreas Dilger
build #130840 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Arshad Hussain +1 · Timothy Day -1
no vote yet: Shaun Tancheff, Andreas Dilger
patchsets:
PS2 06-22
PS3 06-22
PS4 06-22
PS5 07-10
PS6 09-02 James Simmons
+1 earlier
PS1 06-22your previous vote: +1 on PS5 (2026-07-10 19:34) — now at PS6
threads: 8 need your reply · 1 waiting on others · 0 own notes · 0 bot
reply Oleg Drokin patchset comment — I think we need the answers to the ai review as some of them sound at least somewhat scary?
Oleg Drokin
I think we need the answers to the ai review as some of them sound at least somewhat scary?
reply Gerrit AI review for Lustre Makefile:33 — (minor) This include is unconditional, but `autoMakefile` is still included for every goal outside `ALWAYS_TARGETS`, and automake keeps emit
Gerrit AI review for Lustre
(minor) This include is unconditional, but `autoMakefile` is still included for every goal outside `ALWAYS_TARGETS`, and automake keeps emitting a `dist dist-all:` rule in the top-level Makefile (lib/am/distdir.am, guarded only by `TOPDIR_P`). So `make rpms`, `make srpm` and `make install` now parse two recipes for `dist` and print
config/Makefile.dist:69: warning: overriding recipe for target 'dist'
autoMakefile:NNNN: warning: ignoring old recipe for target 'dist'
which is what the comment above the conditional include exists to prevent. Could the fragment be included only in the branch that skips autoMakefile?
Separately, being unconditional means every invocation - `make help` included - now runs LUSTRE-VERSION-GEN, `git rev-parse`, a tree-wide `find`, and one `git ls-files` fork per `*.in` file at parse time. None of the other `config/Makefile.*` fragments do shell work at parse time.
reply Gerrit AI review for Lustre Makefile.dist:21 — (minor) These three targets (no-lustre.spec, no-lustre-dkms.spec, no-LUSTRE-VERSION-FILE) are never referenced — dist: has no prerequisites
Gerrit AI review for Lustre
(minor) These three targets (no-lustre.spec, no-lustre-dkms.spec, no-LUSTRE-VERSION-FILE) are never referenced — dist: has no prerequisites and nothing else depends on them, so they're dead scaffolding. no-lustre-dkms.spec also substitutes @VERSION@ with $(LVF), which is never defined in this file and expands to empty. If they're leftovers, consider dropping them; if they were meant to generate the specs before archiving, dist: should depend on them and $(LVF) should be $(VERSION).
reply Oleg Drokin Makefile.dist:9 — this probaby deserves at least some comment to refute it if there's anything to refute?
Gerrit AI review for Lustre
(defect) `VERSION` and `PACKAGE` are also defined by `config/Makefile.exports`, which the top-level Makefile includes on the very next line, so `VERSION = @VERSION@` wins for everything downstream. `TARNAME` is `:=`, so it keeps the LUSTRE-VERSION-GEN value. That splits the tarball name in two: `dist` writes `lustre-$(LUSTRE-VERSION-GEN).tar.gz`, while `srpm` runs `rpmbuild -ts $(PACKAGE_TARNAME)-$(VERSION).tar.gz` with the configure-time `@VERSION@`. Touch any tracked file after configure and LUSTRE-VERSION-GEN appends `_dirty`, so the names diverge and `make srpm`/`make rpms` fails on a missing tarball. Committing anything after configure does the same. automake derived distdir from `@VERSION@`, so the two could not drift before. Can this reuse `$(PACKAGE_TARNAME)-$(VERSION)` from Makefile.exports, or at least use names that don't collide with it?
Oleg Drokin
this probaby deserves at least some comment to refute it if there's anything to refute?
reply Gerrit AI review for Lustre Makefile.dist:15 — (minor) This doesn't seem to hold. `Makefile` picks the fragment up with a relative `-include config/Makefile.dist`, and `./LUSTRE-VERSION-G
Gerrit AI review for Lustre
(minor) This doesn't seem to hold. `Makefile` picks the fragment up with a relative `-include config/Makefile.dist`, and `./LUSTRE-VERSION-GEN` plus the `--add-file` paths are relative to the cwd as well:
$ mkdir build && cd build && make -f ../Makefile dist
make: *** No rule to make target 'dist'. Stop.
Run from the top of the checkout, `git rev-parse --git-dir` just prints `.git`, which is what plain `git archive` would use anyway. Is the explicit `--git-dir` buying anything?
reply Gerrit AI review for Lustre Makefile.dist:70 — (defect) `.ONESHELL:` is in effect from the top-level Makefile, so the whole recipe runs in one shell and the exit status comes from the tra
Gerrit AI review for Lustre
(defect) `.ONESHELL:` is in effect from the top-level Makefile, so the whole recipe runs in one shell and the exit status comes from the trailing `echo`, not from `git archive`. A failed archive leaves a 0-byte `$(TAR_DEST)` behind and the target still succeeds:
$ make dist
fatal: File not found: nonexistent
DIST lustre-....tar.gz
$ echo $?
0
`srpm` then feeds that empty file to rpmbuild. config/Makefile.pkg-rpm ends each command with `|| exit 1` for exactly this reason. Should this do the same, and `rm -f $(TAR_DEST)` when the archive fails?
(Same reason the `@` on the echo below has no effect - under .ONESHELL only the first line's prefix counts, so the full git command is echoed.)
reply Gerrit AI review for Lustre Makefile.dist:73 — (minor) `--add-file`, and the "last `--prefix` before it wins" behaviour the ADD_FILES construction relies on, arrived in git 2.38. `lustre/
Gerrit AI review for Lustre
(minor) `--add-file`, and the "last `--prefix` before it wins" behaviour the ADD_FILES construction relies on, arrived in git 2.38. `lustre/kernel_patches/targets/` still carries 4.18-rhel8.x and 5.3/5.14-sles15sp* targets, and those distros ship git 2.31/2.35. On such a host `make dist` fails outright - silently, given the exit-status issue above. Worth a minimum-git check here, or a note in the commit message?
reply Gerrit AI review for Lustre Makefile.dist:77 — (defect) `git archive HEAD` packages the committed tree; the automake `distdir` copied from `$(srcdir)`, i.e. the working tree. Building RPM
Gerrit AI review for Lustre
(defect) `git archive HEAD` packages the committed tree; the automake `distdir` copied from `$(srcdir)`, i.e. the working tree. Building RPMs from a modified checkout is the normal edit/test loop, and the result is now labelled `_dirty` by LUSTRE-VERSION-GEN while the contents come from HEAD. Is dropping uncommitted work intended?
It also makes `dist` git-only. From an unpacked release tarball `git rev-parse --git-dir` fails, `GIT_DIR` is empty, and:
$ git --git-dir= archive --format=tar.gz --prefix=x/ HEAD
fatal: not a git repository: ''
so `make dist`/`make srpm` no longer work there. That's a supported path today - should the commit message call it out?
owner Timothy Day · uploader James Simmons · PS6 uploaded 63d ago · NEW · open in Gerrit ↗
commit message
LU-18687 build: reimplement dist target in plain make Presently, automake handles the dist and install targets. Reimplement the automake dist target in plain make using git archive (along with allowlisting files generated by autotools). Test-Parameters: trivial Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: Ifaacd294a03f9c54279d935f7cbc9b8ab926624d
65204
master
J –B ✗T –R 0/2
LU-19768 mdd: add MDD/changelog genetlink family
carrying Timothy Day · build failure (#134469)
5 unresolved
L +644 −1
6d
LU-19768 mdd: add MDD/changelog genetlink family
carrying Timothy Day · build failure (#134469)
5 unresolved
L +644 −1
6d
build failure (#134469)
5 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
build #134469 FAILURE
patchsets:
PS4 09-29
PS5 09-29
PS6 10-20 James Simmons
PS7 10-23 James Simmons
PS8 10-26 James Simmons
+3 earlier
PS1 04-09 PS2 07-22 PS3 07-29threads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre lustre_kernelcomm.h:550 — This isn't a bug, but the size is hard-coded with the constant only in a comment. CHANGELOG_USER_NAMELEN_FULL is available from uapi/linux/l
Gerrit AI review for Lustre
This isn't a bug, but the size is hard-coded with the constant only in a comment. CHANGELOG_USER_NAMELEN_FULL is available from uapi/linux/lustre/lustre_idl.h; using it keeps the strscpy() in changelog_collect_user_cb() from silently truncating if the constant ever grows. (lustre_user.h has the same literal, but that one can't include lustre_idl.h - this header can.)
reply Gerrit AI review for Lustre kernelcomm.c:399 — (minor) Nothing ever sends on this multicast group - there is no genlmsg_multicast()/genl_notify() call in mdd. Registering it publishes a "
Gerrit AI review for Lustre
(minor) Nothing ever sends on this multicast group - there is no genlmsg_multicast()/genl_notify() call in mdd. Registering it publishes a "changelog" group name that userspace can subscribe to and then never hear anything on. Is it meant to be wired up in a later patch, or can it be dropped until there is a notification to send?
reply Gerrit AI review for Lustre kernelcomm.c:145 — (defect) What keeps ctxt->loc_handle alive while this runs? The llog_ctxt reference from llog_get_context() pins the context, but not the ca
Gerrit AI review for Lustre
(defect) What keeps ctxt->loc_handle alive while this runs? The llog_ctxt reference from llog_get_context() pins the context, but not the catalog handle.
On umount, mdt_stack_fini() sends LCFG_CLEANUP down the stack, and mdd_process_config() -> mdd_device_shutdown() -> mdd_changelog_fini() then does:
ctxt = llog_get_context(obd, LLOG_CHANGELOG_USER_ORIG_CTXT);
llog_cat_close(env, ctxt->loc_handle); /* NULLs loc_handle, llog_close() frees it */
llog_cleanup(env, ctxt); /* only now waits for our ctxt ref */
The MDD obd still has OBDF_SET_UP and no OBDF_STOPPING at that point, and those flags are only checked once before this long, sleeping catalog walk anyway. A dump in progress keeps walking a freed cat_llh. A dump that arrives after llog_cat_close() but before llog_cleanup() finishes gets ctxt->loc_handle == NULL, and llog_cat_process_or_fork() dereferences cat_llh->lgh_hdr on its first line.
The debugfs changelog_users reader avoids this because mdd_procfs_fini() runs before mdd_device_shutdown(). Here, would it work to hold mdd->mdd_changelog_mutex around the llog_get_context()/llog_cat_process() pair and skip the device unless CLM_INIT_DONE is set under the mutex? mdd_changelog_fini() takes the same mutex and resets mc_flags to CLM_CLEANUP_DONE.
reply Gerrit AI review for Lustre kernelcomm.c:406 — (suggestion) Should this op have .flags = GENL_ADMIN_PERM? As written, any local user in init_net can dump it.
Gerrit AI review for Lustre
(suggestion) Should this op have .flags = GENL_ADMIN_PERM? As written, any local user in init_net can dump it. The same data under mdd.*.changelog_users is in debugfs, which only root can read. The LNet family's show dumps (LNET_CMD_NETS, PEERS, ROUTES, STATS, ...) are all GENL_ADMIN_PERM. Each dump also runs a synchronous llog_cat_process() over every MDT's users catalog from .start. For a family without parallel_ops, that runs under genl_mutex. So an unprivileged caller can repeatedly drive disk I/O on every MDT while blocking all other genetlink families, and can also hit the umount window noted above.
reply Gerrit AI review for Lustre mdd_netlink.c:144 — Should this check CLM_INIT_DONE before using `ctxt->loc_handle`? Every other changelog llog consumer in mdd does - mdd_changelog_users_seq_s
Gerrit AI review for Lustre
Should this check CLM_INIT_DONE before using `ctxt->loc_handle`? Every other changelog llog consumer in mdd does - mdd_changelog_users_seq_show()@lustre/mdd/mdd_lproc.c:209 and mdd_changelog_size_seq_show()@:247 both return -ENXIO when the flag is clear, and mdd_changelog_recalc_mask() takes mdd_changelog_mutex. llog_setup() for LLOG_CHANGELOG_USER_ORIG_CTXT happens at mdd_device.c:556 but loc_handle is only assigned by the llog_open_create() that follows at :567, so for the whole duration of that create (and llog_init_handle() after it) the context is registered with loc_handle still NULL. mdd_prepare() runs from server_start_targets() long after class_setup() has set OBDF_SET_UP, so the obd is already visible to this loop during that window. llog_cat_process() -> llog_cat_process_or_fork() dereferences `cat_llh->lgh_hdr` on its first line, so a dump landing in that window is a NULL dereference. The teardown side has the same exposure: mdd_changelog_fini() does llog_cat_close(env, ctxt->loc_handle) then llog_cleanup(env, ctxt) under mdd_changelog_mutex, which this path does not take.
owner Timothy Day · uploader James Simmons · PS8 uploaded 8d ago · NEW · open in Gerrit ↗
commit message
LU-19768 mdd: add MDD/changelog genetlink family Add a new MDD genetlink family that exposes per-MDT changelog consumer state via the table-driven netlink framework. The dump handler iterates MDD devices and reports per-consumer details (endrec index, idle time, event mask). Implement changelog_users and wire it in liblustreapi so the traditional tools continue to work when debugfs is not available. TLC-bug-id: TLU-56 Signed-off-by: Timothy Day <timday@thelustrecollective.com> Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I3ae11dc2a992bc5cd9911e51fec8148cfb1dcfed
66886
master
J !B ✓T ✓R -1/2−
LU-18687 build: iov_iter_iovec to iter_iov_len, iter_iov_addr
carrying Shaun Tancheff · needs rebase — checkpatch: cannot be cherry-picked
needs rebase
7 unresolved
M +42 −31
13d
LU-18687 build: iov_iter_iovec to iter_iov_len, iter_iov_addr
carrying Shaun Tancheff · needs rebase — checkpatch: cannot be cherry-picked
needs rebase
7 unresolved
M +42 −31
13d
needs rebase — checkpatch: cannot be cherry-picked
7 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
CI green — no vote yet from Andreas Dilger, Timothy Day
janitor run: 6 failing config(s), none unique to this patch — janitor results
build #131723 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Timothy Day
patchsets:
PS1 06-26
PS2 06-27
PS3 09-14 James Simmons
threads: 7 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (minor) Nothing in the patch makes an iter_iov_len() available: what is added is compat_iter_iov_len(), under a guard that makes it the only
Gerrit AI review for Lustre
(minor) Nothing in the patch makes an iter_iov_len() available: what is added is compat_iter_iov_len(), under a guard that makes it the only thing vvp_io.c ever calls. Could the body also say that vvp_mmap_locks() gains an iter_is_ubuf() special case, since that is a behaviour change rather than a rename?
reply Gerrit AI review for Lustre lustre-core.m4:2233 — (defect) `len` is not declared - the declaration above is `ssize_t nr`. With -Werror this test fails to compile on every kernel, so HAVE_ITE
Gerrit AI review for Lustre
(defect) `len` is not declared - the declaration above is `ssize_t nr`. With -Werror this test fails to compile on every kernel, so HAVE_ITER_IOV_LEN is never defined and the result is silently "no".
iter_iov_len() returns size_t, so this probably wants the same form as the neighbouring LC_SRC_HAVE_IOVEC_WITH_IOV_MEMBER test:
size_t len __attribute__ ((unused));
reply Gerrit AI review for Lustre uio.h:36 — (typo) `384492c48e6e` does not resolve; the commit is 384492c48e6a ("net: devmem: support single IOV with sendmsg").
Gerrit AI review for Lustre
(typo) `384492c48e6e` does not resolve; the commit is 384492c48e6a ("net: devmem: support single IOV with sendmsg").
reply Gerrit AI review for Lustre uio.h:40 — (defect) Once the autoconf test compiles, a 6.3+ kernel defines both HAVE_ITER_IOV_LEN and HAVE_USER_BACKED_ITER, so this helper is not comp
Gerrit AI review for Lustre
(defect) Once the autoconf test compiles, a 6.3+ kernel defines both HAVE_ITER_IOV_LEN and HAVE_USER_BACKED_ITER, so this helper is not compiled - but vvp_mmap_locks() calls compat_iter_iov_len() unconditionally, so vvp_io.c stops building. Right now the only thing preventing that is the broken test above; fixing either one alone breaks the build. Would it be simpler to follow the iter_iov_addr() pattern just above and supply the upstream name, `#ifndef HAVE_ITER_IOV_LEN` / `static inline size_t iter_iov_len(...)`, and call iter_iov_len() from vvp_io.c? Then the call site really does match upstream, and there is no Lustre-only name to keep in sync.
reply Gerrit AI review for Lustre vvp_io.c:462 — (defect) The advance expression now uses `bytes`, which the loop body modifies: `bytes += addr & ~PAGE_MASK` below, and `bytes -= vma->vm_en
Gerrit AI review for Lustre
(defect) The advance expression now uses `bytes`, which the loop body modifies: `bytes += addr & ~PAGE_MASK` below, and `bytes -= vma->vm_end - addr` in the inner while loop. The old code advanced by `iov.iov_len` from the iovec copy, which the body never touched (it worked on `bytes` instead). So for an unaligned multi-segment iovec the iterator is advanced by `iov_len + (addr & ~PAGE_MASK)` per segment. The following segment is then scanned from a bogus offset, and a segment shorter than the overshoot is skipped completely, so no mmap lock is taken for it. Keeping the segment length in its own variable, used only by iov_iter_advance(), would preserve the old behaviour.
reply Gerrit AI review for Lustre vvp_io.c:463 — (minor) Can this branch be reached? The early return above returns 0 unless the iter is ITER_IOVEC or ITER_KVEC, and iter_is_iovec() is fals
Gerrit AI review for Lustre
(minor) Can this branch be reached? The early return above returns 0 unless the iter is ITER_IOVEC or ITER_KVEC, and iter_is_iovec() is false for ITER_UBUF, so a ubuf iter never gets to the loop. Either the branch is dead code, or the gate above is what needs relaxing - the ubuf iter missing its mmap locks entirely looks like the pre-existing problem here.
reply Gerrit AI review for Lustre vvp_io.c:468 — (minor) compat_iter_iov_len() returns `iov_len - iov_offset`, while the iov_iter_iovec() being replaced returned `min(count, iov_len - iov_o
Gerrit AI review for Lustre
(minor) compat_iter_iov_len() returns `iov_len - iov_offset`, while the iov_iter_iovec() being replaced returned `min(count, iov_len - iov_offset)`. The clamp is reachable: vvp_io_rw_lock() calls vvp_io_update_iov() -> iov_iter_truncate(vui_iter, crw_bytes) immediately before this, and lov_io_rw_iter_init() has already clipped crw_bytes to the current stripe chunk. A 4M read into a single 4M buffer on a 1M-striped file now asks policy_from_vma() for a 4M extent instead of 1M, and that extent can run past the end of the vma. Clamping with the remaining iov_iter_count() would keep the old extent.
owner Shaun Tancheff · uploader James Simmons · PS3 uploaded 50d ago · NEW · open in Gerrit ↗
commit message
LU-18687 build: iov_iter_iovec to iter_iov_len, iter_iov_addr Add HAVE_ITER_IOV_LEN to ensure an iter_iov_len() is available. iov_iter_iovec() is dropped and the address and bytes from the segment are accessed directly. This is done to align with the upstream linux kernel. Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun@tancheff.com> Change-Id: I906b248d03f30a765f27b0916419b88ee178d6a5
37246
master
J ✗14B ✗T –R 0/2
LU-13139 obdclass: collect stats for OSD methods
carrying Alex Zhuravlev · build failure (#131784)
14 unique failures
1 unresolved
L +447 −114
49d
LU-13139 obdclass: collect stats for OSD methods
carrying Alex Zhuravlev · build failure (#131784)
14 unique failures
1 unresolved
L +447 −114
49d
build failure (#131784)
janitor: 14 test failures unique to this patch — ost-pools@ldiskfs+DNE:test_25, ost-pools@zfs:test_25, recovery-small@ldiskfs+DNE:test_29a +11 more
1 unresolved thread(s) await your reply — last from Andreas Dilger
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| ost-pools@ldiskfs+DNE:test_25 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_25 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| recovery-small@ldiskfs+DNE:test_29a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| recovery-small@zfs:test_29a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@ldiskfs+DNE:test_56od | seen in 6 other reviews |
| sanity2@ldiskfs+DNE:test_65k | seen in 2 other reviews |
| sanity2@zfs:test_65k | seen in 2 other reviews |
| sanity-slow@zfs:test_255c | seen in 3 other reviews |
| sanity-lfsck@ldiskfs+DNE:test_43 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-lfsck@ldiskfs+DNE:test_45 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-lfsck@zfs:test_45 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_16c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_80 | seen in 81 other reviews |
| sanity-quota@zfs:test_16c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
build #131784 FAILURE
no vote yet: Andreas Dilger, Timothy Day
patchsets:
PS57 05-30 James Simmons
PS58 06-03 James Simmons
PS59 06-16 James Simmons
PS60 07-13 James Simmons
PS61 09-15 James Simmons
+55 earlier
PS2 01-19 PS3 01-19 PS4 01-30 PS5 02-09 PS6 02-14 PS7 02-17 PS8 02-21 PS9 03-04 PS10 03-27 PS11 04-10 PS12 04-12 PS13 04-24 PS14 05-04 PS15 07-03 PS16 07-05 PS17 08-01 PS18 01-27 PS19 02-12 Andreas Dilger PS20 02-13 PS21 02-14 PS22 02-16 PS23 02-27 PS24 02-29 PS25 04-30 PS26 06-01 PS27 06-21 PS28 07-09 PS29 08-06 PS30 08-11 PS31 08-22 PS32 09-04 PS33 09-09 PS34 10-09 PS35 10-30 PS36 11-24 PS37 12-10 PS38 12-10 PS39 12-23 PS40 01-23 PS41 02-14 PS42 03-27 PS43 04-10 PS44 04-18 PS45 04-28 PS46 05-19 PS47 05-22 PS48 06-05 PS49 06-16 PS50 06-23 PS51 07-08 PS52 07-09 James Simmons PS53 07-24 James Simmons PS54 05-14 PS55 05-19 PS56 05-28your previous vote: +1 on PS53 (2025-07-24 16:49) — now at PS61
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger dt_object.c:1980 — It would be better to have a table declaring the stats, then have a loop iterating over all entries in the table to call lpricfs_counter_ini
Andreas Dilger
It would be better to have a table declaring the stats, then have a loop iterating over all entries in the table to call lpricfs_counter_init() for each entry.
owner Alex Zhuravlev · uploader James Simmons · PS61 uploaded 50d ago · NEW · open in Gerrit ↗
commit message
LU-13139 obdclass: collect stats for OSD methods frequency and time spent in each method is collected, then can be found in os[dp].*.osd_stats and lod.*.osd_stats: osd-ldiskfs.lustre-MDT0000.osd_stats= snapshot_time 1674142976.044241006 secs.nsecs start_time 1674142916.072747822 secs.nsecs elapsed_time 59.971493184 secs.nsecs trans_create 259 samples [usecs] 2 18 2000 18560 trans_start 259 samples [usecs] 0 249 505 64715 trans_stop 259 samples [usecs] 0 1906 11820 10291894 read_lock 332 samples [usecs] 0 1 3 3 write_lock 284 samples [usecs] 0 0 0 0 decl_create 100 samples [usecs] 0 12 57 491 create 94 samples [usecs] 11 96 4060 198414 decl_destroy 2 samples [usecs] 4 12 16 160 attr_get 493 samples [usecs] 0 23 24 530 decl_ref_add 36 samples [usecs] 0 0 0 0 ref_add 24 samples [usecs] 0 1 1 1 decl_ref_del 2 samples [usecs] 0 0 0 0 decl_xattr_set 102 samples [usecs] 0 0 0 0 xattr_set 15 samples [usecs] 0 5 10 32 xattr_get 35 samples [usecs] 0 7 17 91 decl_insert 116 samples [usecs] 0 0 0 0 insert 116 samples [usecs] 0 31 441 5607 ... osp.lustre-MDT0000-osp-MDT0001.osd_stats= snapshot_time 1734959321.493552049 secs.nsecs start_time 1734959257.142508748 secs.nsecs elapsed_time 64.351043301 secs.nsecs trans_create 5 samples [usecs] 0 0 0 0 trans_start 5 samples [usecs] 0 0 0 0 trans_stop 5 samples [usecs] 0 306 324 93870 read_lock 4 samples [usecs] 0 0 0 0 write_lock 13 samples [usecs] 0 0 0 0 decl_create 3 samples [usecs] 0 1 1 1 create 3 samples [usecs] 0 2 2 4 attr_get 16 samples [usecs] 0 34 68 2312 Change-Id: I1efe3eb5e646cd638a5fe558886468faa528a9d1 Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com>
57948
master
J !B ✓T ✗2R +0/2−
LU-18689 ptlrpc: ensure import exist for sec debugfs files
carrying Oleg Drokin · needs rebase — checkpatch: cannot be cherry-picked
needs rebase
M +63 −55
61d
LU-18689 ptlrpc: ensure import exist for sec debugfs files
carrying Oleg Drokin · needs rebase — checkpatch: cannot be cherry-picked
needs rebase
M +63 −55
61d
needs rebase — checkpatch: cannot be cherry-picked
enforced failed: review-dne-part-1, review-dne-selinux-ssk-part-2
janitor run: 2 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 9.5 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanity-selinux. | session |
3 optional test failure(s) — informational
build #114988 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1
no vote yet: Andreas Dilger, Alex Zhuravlev, Timothy Day
patchsets:
PS5 02-18 James Simmons
PS6 03-28 James Simmons
PS7 04-25 James Simmons
PS8 05-24
PS9 07-11 James Simmons
+4 earlier
PS1 02-03 PS2 02-05 James Simmons PS3 02-08 James Simmons PS4 02-10 James Simmonsowner Oleg Drokin · uploader James Simmons · PS9 uploaded 481d ago · NEW · open in Gerrit ↗
commit message
LU-18689 ptlrpc: ensure import exist for sec debugfs files Access sec imports safely under with_imp_locked. This fixes crashes in recovery-small test 57 that look like this: BUG: unable to handle kernel NULL pointer dereference at 00000000000000d0 IP: [<ffffffff81411a45>] do_raw_read_lock+0x5/0x30 RIP: 0010:[<ffffffff81411a45>] [<ffffffff81411a45>] do_raw_read_lock+0x5/0x30 Call Trace: [<ffffffff817e333e>] _raw_read_lock+0x1e/0x20 [<ffffffffa0666f0e>] sptlrpc_import_sec_ref+0x1e/0x40 [ptlrpc] [<ffffffffa06742f0>] srpc_sptlrpc_sepol_seq_show+0x30/0x130 [ptlrpc] [<ffffffff8126f0b5>] seq_read+0x135/0x470 [<ffffffff81245839>] vfs_read+0xb9/0x1c0 [<ffffffff817edf49>] ? system_call_after_swapgs+0x96/0x13a [<ffffffff8124676f>] SyS_read+0x7f/0xf0 [<ffffffff817edf55>] ? system_call_after_swapgs+0xa2/0x13a [<ffffffff817ee00c>] system_call_fastpath+0x1f/0x24 [<ffffffff817edf55>] ? system_call_after_swapgs+0xa2/0x13a Signed-off-by: Oleg Drokin <green@whamcloud.com> Change-Id: Id84c8803317b621cb80a21977eafe5b9cf96a9be
18012
master
J –B ✓T ✗0R 0/2
LU-7672 tests: Update Kerberos set up script
carrying James Nunez · Maloo voted -1 — tests failed (details on the change)
stalled 211d
L +154 −115
211d
LU-7672 tests: Update Kerberos set up script
carrying James Nunez · Maloo voted -1 — tests failed (details on the change)
stalled 211d
L +154 −115
211d
no vote yet: Sebastien Buisson, Nathan Lavender, Chris Hanna
owner James Nunez · uploader James Simmons · PS4 uploaded 3442d ago · NEW · open in Gerrit ↗
commit message
LU-7672 tests: Update Kerberos set up script Update and clean up the Kerberos set up script setup_kerberos.sh. Test-Parameter: forbuildonly Signed-off-by: James Nunez <james.a.nunez@intel.com> Change-Id: Iae7b1a7a524759c524bc0a69f4755a8c6eed3f9a
27028
master
J ✗1B ✓T ✗1R 0/2
LU-8875 lnet: Change to new RDMA done callback mechanism
carrying Doug Oucharek · janitor: 1 test failure unique to this patch — sanity-quota@zfs+DNE:test_12b
1 unique failure
stalled 292d
M +221 −5
292d
LU-8875 lnet: Change to new RDMA done callback mechanism
carrying Doug Oucharek · janitor: 1 test failure unique to this patch — sanity-quota@zfs+DNE:test_12b
1 unique failure
stalled 292d
M +221 −5
292d
janitor: 1 test failure unique to this patch — sanity-quota@zfs+DNE:test_12b
enforced failed: review-dne-zfs-part-2
janitor flagged test failures unique to this patch
| unique failing test | history |
|---|---|
| sanity-quota@zfs+DNE:test_12b | seen in 100 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-zfs-part-2 | CentOS 7.0/x86_64 | ran 13 tests. 1 tests failed: sanity-sec. | session |
2 optional test failure(s) — informational
build #13782 SUCCESS
no vote yet: Alexey Lyashkov, Ian Ziemba, Doug Oucharek, Serguei Smirnov, Amir Shehata, Sonia Sharma
owner Doug Oucharek · uploader James Simmons · PS8 uploaded 2379d ago · NEW · open in Gerrit ↗
commit message
LU-8875 lnet: Change to new RDMA done callback mechanism Adapt to changes made to the RDMA API: - change call to ib_create_cq() to ib_alloc_cq() (use SOFTIRQ for callbacks) - change call to ib_destroy_cq() to ib_free_cq() - introduce a new struct kib_sched_element as the items we put on the kib scheduler work list (rather than putting connections to be processed) - added a kib_sched_element to kib_tx and kib_rx so they can be scheduled to be processed by the kib scheduler - have separate callbacks for each CQ operation type - set the proper callback to be called when setting up CQ elements - change kiblnd_scheduler() to process work items (kib_sched_element) rather than process connections All of this means we are making good use of the new RDMA CQ callback mechanism and focusing our scheduler to process complete items rather than letting it process connections and have to poll for completions. Test-Parameter: trivial nettype=o2ib Signed-off-by: Doug Oucharek <dougso@me.com> Change-Id: I4ba719578086fedb68ca554eeec191c839ceaca2
59802
master
J ✓B ✓T ✓R +2/2
LU-18162 obdclass: standardize class_(un)register_type
carrying Timothy Day · needs rebase — checkpatch: cannot be cherry-picked
needs rebaseVerified -1
stalled 293d
2 unresolved
L +216 −201
293d
LU-18162 obdclass: standardize class_(un)register_type
carrying Timothy Day · needs rebase — checkpatch: cannot be cherry-picked
needs rebaseVerified -1
stalled 293d
2 unresolved
L +216 −201
293d
needs rebase — checkpatch: cannot be cherry-picked
Verified -1 veto by Oleg Drokin
2 reviewer comment(s) to address if a respin is needed — last from Oleg Drokin
2 optional test failure(s) — informational
build #115316 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Shaun Tancheff +1 · Andreas Dilger +1
no vote yet: Oleg Drokin
patchsets:
PS1 06-17
PS2 06-17 Janitor Bot
PS3 06-17
PS4 06-17
PS5 07-27 James Simmons
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Oleg Drokin patchset comment — I am really suspicious about this patch.
Oleg Drokin
I am really suspicious about this patch. current master-next on boilpot started to get strange use after free problems which seem to be accessing OBD device that's already freed. Four distinct trace so far: https://knox.linuxhacker.ru/crashdb_ui_external.py.cgi?newid=73710 https://knox.linuxhacker.ru/crashdb_ui_external.py.cgi?newid=73714 https://knox.linuxhacker.ru/crashdb_ui_external.py.cgi?newid=73724 https://knox.linuxhacker.ru/crashdb_ui_external.py.cgi?newid=73725 I am going to omit it next time over and we'll see how it works. Not setting -1 just yet
reply Timothy Day patchset comment — Odd. I wonder if this is exposing an issue introduced in a previous patch somehow?
Oleg Drokin
dropping this patch resulted in total disappearance of the problems reported in the latest master-next over the last week
Timothy Day
Odd. I wonder if this is exposing an issue introduced in a previous patch somehow?
owner Timothy Day · uploader James Simmons · PS5 uploaded 465d ago · NEW · open in Gerrit ↗
commit message
LU-18162 obdclass: standardize class_(un)register_type Rather than passing many arguments to class_register_type(), statically define all of the fields of the LU type and pass only that LU type to the class register/unregister functions. This makes it easier to see what methods are defined on each LU device type and also aligns more closely with Linux kernel style. This patch precedes the unification of OBD and LU type. Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: Ie33f55abaeaa76d9ede2c11a84a82660827a61f4
51901
master
J !B ✓T ✗1R -1/2−
LU-17022 obdclass: convert more flags to bitops
carrying Neil Brown · needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 405d
M +57 −41
405d
LU-17022 obdclass: convert more flags to bitops
carrying Neil Brown · needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 405d
M +57 −41
405d
needs rebase — checkpatch: cannot be cherry-picked
enforced failed: review-ldiskfs-ubuntu
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
build #111391 SUCCESS · tests all Maloo sessions
patchsets:
PS1 08-09
PS2 11-24
PS3 11-24
PS4 02-27 James Simmons
owner Neil Brown · uploader James Simmons · PS4 uploaded 614d ago · NEW · open in Gerrit ↗
commit message
LU-17022 obdclass: convert more flags to bitops
obd_version_recov:1, /* obd uses version checking */
obd_replayable:1, /* recovery enabled; inform clients */
obd_no_recov:1, /* fail instead of retry messages */
are now
OBDF_VERSION_RECOV, /* obd uses version checking */
OBDF_REPLAYABLE, /* recovery enabled; inform clients */
OBDF_NO_RECOV, /* fail instead of retry messages */
Introduce odb_copy_flag() to copy a flag from one obd to another.
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: Id7827b7739ca16f682ec11a216c2b35028d099de
13243
master
J ✗8B ✓T ✗10R -2/2−
LU-6081 hsm: adding migration support
carrying Frank Zago · janitor: 8 test failures unique to this patch — sanity-hsm@ldiskfs+DNE:test_113a, sanity-hsm@ldiskfs+DNE:test_113b, sanity-hsm@ldiskfs+DNE:test_113c +5 more
8 unique failures
stalled 456d
L +789 −117
456d
LU-6081 hsm: adding migration support
carrying Frank Zago · janitor: 8 test failures unique to this patch — sanity-hsm@ldiskfs+DNE:test_113a, sanity-hsm@ldiskfs+DNE:test_113b, sanity-hsm@ldiskfs+DNE:test_113c +5 more
8 unique failures
stalled 456d
L +789 −117
456d
janitor: 8 test failures unique to this patch — sanity-hsm@ldiskfs+DNE:test_113a, sanity-hsm@ldiskfs+DNE:test_113b, sanity-hsm@ldiskfs+DNE:test_113c +5 more
enforced failed: review-dne-part-1, review-dne-part-2, review-dne-part-4, review-dne-selinux, review-dne-zfs-part-1, review-dne-zfs-part-2, review-dne-zfs-part-4, review-ldiskfs, review-ldiskfs-arm, review-zfs
Qian Yingjin voted -1
janitor flagged test failures unique to this patch
| unique failing test | history |
|---|---|
| sanity-hsm@ldiskfs+DNE:test_113a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-hsm@ldiskfs+DNE:test_113b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-hsm@ldiskfs+DNE:test_113c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-hsm@ldiskfs+DNE:test_113d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-hsm@zfs:test_113a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-hsm@zfs:test_113b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-hsm@zfs:test_113c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-hsm@zfs:test_113d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | CentOS 7.0/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-dne-part-2 | CentOS 7.0/x86_64 | ran 11 tests. 1 tests failed: sanity-hsm. | session |
| review-dne-part-4 | CentOS 7.0/x86_64 | ran 10 tests. 2 tests failed: sanity-flr, sanity-pfl. | session |
| review-dne-selinux | CentOS 7.0/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-1 | CentOS 7.0/x86_64 | ran 6 tests. 2 tests failed: sanityn, sanity. | session |
| review-dne-zfs-part-2 | CentOS 7.0/x86_64 | ran 11 tests. 1 tests failed: sanity-hsm. | session |
| review-dne-zfs-part-4 crashed | CentOS 7.0/x86_64 | ran 12 tests. 2 tests failed: sanity-flr, replay-single. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs | CentOS 7.0/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-arm | CentOS 7.0/x86_64, CentOS 8.0/aarch64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-zfs | CentOS 7.0/x86_64 | ran 8 tests. 1 tests failed: sanity-flr. | session |
4 optional test failure(s) — informational
build #14378 SUCCESS
reviews:
Qian Yingjin -1
no vote yet: jacques-Charles Lafoucriere, Yohan Pipereau, Vitaly Fertman, Henri Doreau, Nikitas Angelinas, Patrick Farrell, Thomas LEIBOVICI, Aurelien Degremont, nathan r, Ben Evans, Shaun Tancheff, Alexander Zarochentsev, Sergey Cheremencev, Andreas Dilger, Quentin Bouget
owner Frank Zago · uploader James Simmons · PS32 uploaded 2360d ago · NEW · open in Gerrit ↗
commit message
LU-6081 hsm: adding migration support Currently file migration is done by "lfs migrate". This has a couple problems. It doesn't scale well to large files and/or large number of files to copy. If an external tool (such as Robinhood) wants to migrate a file, it has to spawn lfs to do the job, for every file, which has a large overhead, or copy the file itself. A solution to this issue is to move the copy operation into the HSM copytool. The copytool already knows how to copy files, and Lustre has control over these files. Migrating a file, from an application point of view, becomes more or less the same as archiving a file. Since the file copy is done by the copytool, this copy can be optimized in one place. This patch adds the ability for HSM to migrate a file within a single Lustre filesystem. The posix copytool is enhanced to support the file migration, and the lfs migrate command now supports that option with --hsm and -a flags. HPE-bug-id: LUS-5669 Signed-off-by: Ben Evans <beevans@whamcloud.com> Change-Id: Id72db5acb3f84292b081efac4657520f0054778b
32941
master
J –B ✓T ✗3R 0/2
LU-7659 hsm: Use netlink for KUC communication
carrying Yohan Pipereau · enforced failed: custom-101, review-dne-part-2, review-dne-zfs-part-2
stalled 456d
L +346 −147
456d
LU-7659 hsm: Use netlink for KUC communication
carrying Yohan Pipereau · enforced failed: custom-101, review-dne-part-2, review-dne-zfs-part-2
stalled 456d
L +346 −147
456d
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-101 | CentOS 7.0/x86_64, RHEL 7.6/x86_64 | ran 5 tests. 1 tests failed: sanity-hsm. | session |
| review-dne-part-2 | CentOS 7.0/x86_64 | ran 12 tests. 1 tests failed: sanity-hsm. | session |
| review-dne-zfs-part-2 | CentOS 7.0/x86_64 | ran 12 tests. 1 tests failed: sanity-hsm. | session |
build #5656 SUCCESS
no vote yet: Nikitas Angelinas, Andreas Dilger, John Hammond, Ben Evans, Quentin Bouget, Sonia Sharma
your previous vote: -1 on PS14 (2019-02-18 18:11) — now at PS16
owner Yohan Pipereau · uploader James Simmons · PS16 uploaded 2710d ago · NEW · open in Gerrit ↗
commit message
LU-7659 hsm: Use netlink for KUC communication Make communications between MDC and copytools rely on asynchronous netlink communications instead of pipe based communication. Currently how the communications is done is considered incorrect as described here: https://www.linuxjournal.com/article/8110 This new netlink API uses generic netlink to avoid taking a dedicated netlink family number. Kernel now initiates communication by creating socket at module load time and message sending from kernel has changed from synchronous vfs writing to asynchronous netlink sending. As for now, copytools subscribe to both netlink & KUC groups. Copytools registration still rely on ioctls to populate KUC groups, but no more file descriptors are sent to the kernel to perform VFS writing. Change-Id: I777a24831ad3ef4bdb2be6deb57ed45be91bcf9e Test-Parameters: testlist=sanity-hsm clientcount=3 osscount=2 mdscount=2 Signed-off-by: Yohan Pipereau <yohan.pipereau.ocre@cea.fr>
36235
master
J !B ✗T –R 0/2
LU-10968 hsm: create external HSM queue interface
carrying Ben Evans · build failure (#86410)
stalled 456d
XL +4700 −204
456d
LU-10968 hsm: create external HSM queue interface
carrying Ben Evans · build failure (#86410)
stalled 456d
XL +4700 −204
456d
janitor run: build failed — no tests ran — janitor results
build #86410 FAILURE
no vote yet: Qian Yingjin, Vitaly Fertman, Nikitas Angelinas, Joe Atzinger, Ellis Wilson, Aurelien Degremont, Sergey Cheremencev, nathan r, Andreas Dilger, Quentin Bouget, Dominique Martinet
patchsets:
PS12 10-05 James Simmons
PS13 03-02 James Simmons
your previous vote: -1 on PS10 (2020-06-17 21:50) — now at PS13
owner Ben Evans · uploader James Simmons · PS13 uploaded 1708d ago · NEW · open in Gerrit ↗
commit message
LU-10968 hsm: create external HSM queue interface Add more, consistent, information to messages including HSM action. Create an interface for an external HSM queue Create a demonstration external HSM coordinator Create llapi calls for external cdt to communicate with Lustre sanity-hsm can be set to use an external coordinator by specifying COORDINATOR=external on the command line You must run the external coordinator on the MDS Handles all current HSM activities. No changes to any other programs are needed. Signed-off-by: Ben Evans <beevans@whamcloud.com> Signed-off-by: James Simmons <jsimmons@infradead.org> Cray-bug-id: LUS-5990 Test-Parameters: env=COORDINATOR=external testlist=sanity-hsm Change-Id: I2cbd2f8b641d8fdca427d6de82f58af58be4a477
41664
master
J ✓B ✗T –R -1/2−
LU-14428 libcfs: replace tracefile buffer with ring_buffer
carrying Neil Brown · build failure (#108522)
stalled 456d
2 unresolved
L +220 −766
456d
LU-14428 libcfs: replace tracefile buffer with ring_buffer
carrying Neil Brown · build failure (#108522)
stalled 456d
2 unresolved
L +220 −766
456d
build failure (#108522)
Alexey Lyashkov voted -1
1 unresolved thread(s) await your reply — last from Oleg Drokin
1 thread(s) waiting on others
build #108522 FAILURE
reviews:
Alexey Lyashkov -1
no vote yet: Thomas Bertschinger, Nikitas Angelinas, Andreas Dilger, Oleg Drokin
patchsets:
PS30 02-05 James Simmons
PS31 02-15 James Simmons
PS32 02-23 James Simmons
PS33 10-23 James Simmons
PS34 10-25 James Simmons
+18 earlier
PS12 11-22 James Simmons PS13 11-30 James Simmons PS14 07-03 PS15 07-03 PS16 07-03 PS17 07-03 PS18 07-03 PS19 07-04 PS20 08-07 PS21 08-08 James Simmons PS22 09-27 PS23 10-17 PS24 11-12 James Simmons PS25 12-13 James Simmons PS26 12-13 James Simmons PS27 12-14 James Simmons PS28 12-20 James Simmons PS29 12-28 James Simmonsyour previous vote: +1 on PS30 (2024-02-05 23:54) — now at PS34
threads: 1 need your reply · 1 waiting on others · 0 own notes · 0 bot
reply Oleg Drokin tracefile.c:189 — I am nto sure where exactly ther's some sort of a calculation error, but I have a whole bunch of this message triggering for seemingly rando
Oleg Drokin
I am nto sure where exactly ther's some sort of a calculation error, but I have a whole bunch of this message triggering for seemingly random prints all around (tend to be longish)in master-next (this is where I am carrying this patch for a while) even though this patch itself did nto trigger it. Example: http://testing.linuxhacker.ru/lustre-reports/35860/testresults/sanity2-ldiskfs-DNE-centos7_x86_64-centos7_x86_64/oleg342-server-console.txt [ 2711.693691] Lustre: DEBUG MARKER: == sanity test 103e: inheritance of big amount of default ACLs ========================================================== 15:41:10 (1695584470) [ 2930.646958] Lustre: lustre-MDT0000: Client 229219ca-e0b5-499a-9ab0-176123ac3994 (at 192.168.203.42@tcp) reconnecting [ 3211.379426] Lustre: format at ldlm_lib.c:3286:target_send_reply_msg doesn't end in newline [ 3211.806304] Lustre: format at service.c:2323:ptlrpc_server_handle_request doesn't end in newline [ 3211.984069] Lustre: format at ldlm_resource.c:1799:ldlm_resource_dump doesn't end in newline [ 3212.219257] Lustre: format at ldlm_resource.c:1660:ldlm_resource_add_lock doesn't end in newline
owner Neil Brown · uploader James Simmons · PS34 uploaded 739d ago · NEW · open in Gerrit ↗
commit message
LU-14428 libcfs: replace tracefile buffer with ring_buffer Linux has a generic ring-buffer API which uses minimal locking and allows entries to be appended from any context. This is essentially the same functionality provided by trace_data abstraction in tracefile.c, though with less locking overhead. This patch removes the trace_data support and switches to use ring_buffer. The API functionality is not identical so some adjustments need to be made. In particular once an entry in the log has been reserved, it is not possible to reduce the size of the reservation, only to use it or discard it, where discarding might result in the space being wasted in the rare case that more space is reserved from a different context (e.g. interrupt). So instead we use a modest sized on-stack buffer to hold the formatted result, and strcpy() that to a ring_buffer. If the on-stack buffer isn't big enough (approximately 20% of messages in some testings) we need to format a second time, though we do that less often than the current code. The strcpy should be fast compared to vsprintf so this should be a net win. ring_buffer doesn't record whether a message was generated in interrupt or process context and the information is not generally useful, so that field in the ptldebug_header is now always set to zero. The pages stored in ring_buffer are not the same format as are expected by user-space, so we cannot extract whole pages and copy them to the file, but instead extract individual entries and write them to the file. Similarly, pages cannot be moved to the daemon_list, but the contents need to be copied. Also discard libcfs_debug_binary as it is ALWAYS 1 and the code would be buggy if it were zero. Signed-off-by: Mr NeilBrown <neilb@suse.de> Change-Id: Iab259c0538e970f5a77d15c453d72bf378c59c32
41683
master
J –B ✗T –R 0/2
LU-14439 utils: skip server mount libs on client
carrying Andreas Dilger · build failure (#111134)
stalled 456d
S +13 −13
456d
LU-14439 utils: skip server mount libs on client
carrying Andreas Dilger · build failure (#111134)
stalled 456d
S +13 −13
456d
build #111134 FAILURE
patchsets:
PS11 01-31
PS12 10-03
PS13 10-04
PS14 10-10
PS15 02-18 James Simmons
+5 earlier
PS6 10-23 PS7 10-24 PS8 10-24 PS9 11-08 PS10 11-08owner Andreas Dilger · uploader James Simmons · PS15 uploaded 623d ago · NEW · open in Gerrit ↗
commit message
LU-14439 utils: skip server mount libs on client Do not include ldiskfs or zfs files in the Makefile when "./configure --disable-server" is used, or if configure does not detect any server-side support. Move server-side utilities under server conditionals. Test-Parameters: trivial Signed-off-by: Andreas Dilger <adilger@whamcloud.com> Change-Id: I244e10dfaee3470e9ad48e78dcb8d0d18f3ebbe5
▶Review feedback — your turn
(4)
61282
master
J –B ✓T ✓R 0/2
LU-16832 lnet: add nanosecond delay latency support
carrying Sohei Koyama · 3 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
pw_shepherd
3 unresolved
L +183 −73
9h
LU-16832 lnet: add nanosecond delay latency support
carrying Sohei Koyama · 3 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
pw_shepherd
3 unresolved
L +183 −73
9h
build #135225 SUCCESS · tests all Maloo sessions
no vote yet: Serguei Smirnov, Chris Horn, Andreas Dilger
patchsets:
PS23 10-20 James Simmons
PS24 10-21 James Simmons
PS25 10-26 James Simmons
PS26 10-31 James Simmons
PS27 11-02 James Simmons
+22 earlier
PS1 09-12 PS2 09-12 PS3 09-12 PS4 09-12 PS5 09-12 Janitor Bot PS6 09-12 PS7 09-12 PS8 09-29 PS9 09-29 PS10 09-29 PS11 02-05 PS12 07-20 James Simmons PS13 09-02 James Simmons PS14 09-03 James Simmons PS15 09-04 James Simmons PS16 09-04 James Simmons PS17 09-04 James Simmons PS18 09-04 James Simmons PS19 09-06 James Simmons PS20 10-09 James Simmons PS21 10-09 James Simmons PS22 10-16 James Simmonsyour previous vote: +1 on PS18 (2026-09-05 15:29) — now at PS27
threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:19 — (minor) If the patch is refreshed: the body doesn't mention that yaml_emitter_get_output_version() is reworked to query the family version o
Gerrit AI review for Lustre
(minor) If the patch is refreshed: the body doesn't mention that yaml_emitter_get_output_version() is reworked to query the family version on its own private netlink socket, rather than the emitter's `ctrl` socket, and now sets the emitter error state on failure. This changes the behaviour of an exported liblnetconfig function, so a sentence about it, and why it was needed, would help.
reply Gerrit AI review for Lustre net_fault.c:979 — (minor) This adds to the overflow point raised on patchset 24. `tmp` is now `s64`, filled by nla_get_s64(), and `la_latency` is a signed `kt
Gerrit AI review for Lustre
(minor) This adds to the overflow point raised on patchset 24. `tmp` is now `s64`, filled by nla_get_s64(), and `la_latency` is a signed `ktime_t`. So a negative value from the netlink request gets past this check. For example, `--latency_ns` goes through strtoull(), and `-1` comes out as -1 ns. delay_rule_match() then sets `msg_delay_send` in the past and calls hrtimer_start() with a negative relative time. The rule is accepted, but messages are not actually delayed. With the old `u32` seconds field this value could not be negative. Should this reject `ktime_to_ns(attr->u.delay.la_latency) <= 0`? Values near KTIME_MAX also wrap when `ktime_get_ns()` is added to them in delay_rule_match(), so an upper bound may be worth adding too.
reply Gerrit AI review for Lustre liblnetconfig_netlink.c:1877 — (defect) `out` is still NULL here; it is only set from `request->write_handler_data` further down. So if genl_connect() fails, this derefere
Gerrit AI review for Lustre
(defect) `out` is still NULL here; it is only set from `request->write_handler_data` further down. So if genl_connect() fails, this dereferences a NULL pointer and lnetctl/lctl segfaults instead of reporting "socket failed to connect". The socket that was just allocated, `sk`, is also leaked. This path runs on every netlink delay add (`lnetctl fault delay add`, and `lctl net_delay_add` through fault_simul_rule_add()). Should this be `nl_socket_free(sk);`?
tags: pw_shepherd
owner Sohei Koyama · uploader James Simmons · PS27 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-16832 lnet: add nanosecond delay latency support Introduce nanosecond-resolution latency for LNet delay fault injection. The previous interface accepted latency only in seconds (u32). This change promotes the field to nanoseconds (ktime) and plumbs it so that sub-second delays in nanoseconds can be expressed precisely. Since this changes the Netlink output we bump the LNet netlink family version. The user land code is updated to accept and process the new latency_ns option for the non ioctl approach. All ioctl usage only accepts seconds. The internal timer is moved to hrtimer for finer level of time resolution. Test-Parameters: trivial Signed-off-by: Sohei Koyama <skoyama@ddn.com> Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I9ed1bd34cef0f0bf647f87d17dd68f05274e2b28
66820
master
J !B ✓T ✓R ✗
LU-20422 lod: fix lockdep bug
carrying Timothy Day · Timothy Day voted -1
CR -1
2 unresolved
S +24 −8
92d
LU-20422 lod: fix lockdep bug
carrying Timothy Day · Timothy Day voted -1
CR -1
2 unresolved
S +24 −8
92d
Timothy Day voted -1
2 unresolved thread(s) await your reply — last from Timothy Day
no vote yet from Andreas Dilger, Alex Zhuravlev
janitor run: 3 failing config(s), none unique to this patch — janitor results
1 optional test failure(s) — informational
build #127623 SUCCESS · tests all Maloo sessions
reviews:
Arshad Hussain +1 · Timothy Day -1
no vote yet: Andreas Dilger, Alex Zhuravlev
patchsets:
PS1 06-23
PS2 07-10 James Simmons
PS3 07-15 James Simmons
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Timothy Day COMMIT_MSG:8 — Sure, I can do that when I refresh.
Arshad Hussain
(comment) Fix lockdep bug by splitting function lod_obj_for_each_stripe() into lock/unlocked version
James Simmons
Could we change this to LU-18658 LU ticket number
Timothy Day
Sure, I can do that when I refresh.
reply Timothy Day lod_qos.c:515 — Nesting the mutexes is fine, as long as they're consistently nested in the same order. I can see if I can rework this - might require a larg
Alex Zhuravlev
what if the layout is changing in another thread at the moment?
James Simmons
Sadly this function is called by both the qos and lod object code using two different mutex. Normally we do nested but I don't think nesting the mutexs in this case would be the right fit. Maybe we can use wait_on_bit() which would tell us when the layout_mutex is in use?
Timothy Day
Nesting the mutexes is fine, as long as they're consistently nested in the same order. I can see if I can rework this - might require a larger refactor.
owner Timothy Day · uploader James Simmons · PS3 uploaded 112d ago · NEW · open in Gerrit ↗
commit message
LU-20422 lod: fix lockdep bug
WARNING: possible circular locking dependency detected
...
mdt_io00_000/394 is trying to acquire lock:
ffff8881b1c26740 (<d->ltd_rw_sem){++++}-{4:4}, at: lod_initialize_objects+0x503/0xba0
but task is already holding lock:
ffff888260077538 (&lod_obj->ldo_layout_mutex){+.+.}-{4:4}, at: lod_striping_load+0x147/0x530
...
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(&lod_obj->ldo_layout_mutex);
lock(<d->ltd_qos.lq_rw_sem);
lock(&lod_obj->ldo_layout_mutex);
rlock(<d->ltd_rw_sem);
*** DEADLOCK ***
...
dump_stack_lvl+0x54/0x70
print_circular_bug+0x2e8/0x300
check_noncircular+0x12e/0x150
__lock_acquire+0x1447/0x2830
? __lock_acquire+0x5d3/0x2830
? __kmalloc_noprof+0x1a1/0x640
? lock_acquire+0xd5/0x290
? lod_initialize_objects+0x503/0xba0
lock_acquire+0xd5/0x290
? lod_initialize_objects+0x503/0xba0
? lock_is_held_type+0xc7/0x120
down_read+0x42/0x160
? lod_initialize_objects+0x503/0xba0
lod_initialize_objects+0x503/0xba0
lod_parse_striping+0x8e5/0x10a0
? lod_get_ea+0x17a/0x350
lod_striping_load+0x20a/0x530
lod_declare_destroy+0xd8/0x670
? lod_declare_attr_set+0xca/0x660
? lod_declare_attr_set+0xca/0x660
mdd_declare_finish_unlink+0x62/0x160
mdd_declare_rename+0x49f/0x4f0
mdd_rename+0x98e/0x1a40
? __mutex_lock+0x283/0xd80
mdt_reint_rename+0x1fda/0x2f60
mdt_reint_rec+0xa2/0x200
mdt_reint_internal+0x605/0x880
mdt_reint+0xaf/0x110
tgt_request_handle+0x1297/0x1990
? obd_export_timed_fini+0xa2/0xb0
ptlrpc_main+0x2b7d/0x3ac0
? lockdep_hardirqs_on+0x7a/0x110
? __pfx_ptlrpc_main+0x10/0x10
kthread+0x11b/0x140
? __pfx_kthread+0x10/0x10
ret_from_fork+0x1a5/0x370
? __pfx_kthread+0x10/0x10
ret_from_fork_asm+0x1a/0x30
Change-Id: I21e38a0b6fe7cda0c0c0566178d3137c792a5fc7
Signed-off-by: Timothy Day <timday@thelustrecollective.com>
66875
master
J –B ✓T ✓R +1/2
LU-20418 build: Move lnet common checks to ksym
carrying Shaun Tancheff · 4 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
4 unresolved
L +96 −179
99d
LU-20418 build: Move lnet common checks to ksym
carrying Shaun Tancheff · 4 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
4 unresolved
L +96 −179
99d
4 unresolved thread(s) await your reply — last from Gerrit AI review for Lustre
no vote yet from Andreas Dilger, Timothy Day
reviews:
James Simmons +1
no vote yet: Andreas Dilger, Timothy Day
patchsets:
PS1 06-26
PS2 06-26
PS3 07-09 James Simmons
PS4 07-09 James Simmons
your previous vote: +1 on PS2 (2026-06-28 14:03) — now at PS4
threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre HAVE_IBDEV_TO_NODE.ksym:9 — (minor) This one is not a pure move. The old check sat inside the `--enable-efa` block and ran with EXTRA_CHECK_INCLUDE set, so with `--with
Gerrit AI review for Lustre
(minor) This one is not a pure move. The old check sat inside the `--enable-efa` block and ran with EXTRA_CHECK_INCLUDE set, so with `--with-o2ib=<MOFED>` it resolved `<rdma/ib_verbs.h>` out of the external OFED tree; the ksym always reads the in-kernel header, and it now runs unconditionally. The new answer looks like the correct one for efalnd, since lnet/klnds/efalnd/Makefile only adds `-I $(EFA_INCLUDE_PATH)` and not the OFED includes. Since it changes what gets detected on MOFED builds, worth a line in the commit message rather than listing it as a plain move.
reply Gerrit AI review for Lustre HAVE_IN_DEV_FOR_EACH_IFA_RTNL.ksym:7 — (minor) The comment being dropped recorded two things this file doesn't: that 4.18.0-193.el8 carries the backport, and why the _rtnl variant
Gerrit AI review for Lustre
(minor) The comment being dropped recorded two things this file doesn't: that 4.18.0-193.el8 carries the backport, and why the _rtnl variant is used instead of _rcu (the current locking is rtnl). ksymfind() has an `extra` field for exactly this kind of note, so the rationale could be carried over.
reply Gerrit AI review for Lustre HAVE_STRUCT_SOCKADDR_UNSIZED.ksym:11 — (suggestion) The test being replaced compiled `kernel_bind(NULL, (struct sockaddr_unsized *)0, 0)` under -Werror, so it proved the prototype
Gerrit AI review for Lustre
(suggestion) The test being replaced compiled `kernel_bind(NULL, (struct sockaddr_unsized *)0, 0)` under -Werror, so it proved the prototype that lnet_sock_bind()/lnet_sock_connect() and gss_svc_upcall.c actually depend on. Grepping for the struct definition only proves the type exists. Upstream split those apart: bf33247a90d3e adds the struct to linux/socket.h, and the `kernel_bind()`/`kernel_connect()` conversions land in later commits (0e50474fa514, 85cb0757d7e1). On a tree carrying only the struct, HAVE_STRUCT_SOCKADDR_UNSIZED is defined, the `sockaddr_unsized` -> `sockaddr` fallback is skipped, and the casts in lnet/lnet/lib-socket.c hit an incompatible pointer type. Would matching the converted prototype in include/linux/net.h be a closer equivalent?
reply Gerrit AI review for Lustre lustre-lnet.m4:946 — (style) Not a bug, but collapsing the double space before `=` in the GNILND/KFILND conditionals has nothing to do with moving the lnet check
Gerrit AI review for Lustre
(style) Not a bug, but collapsing the double space before `=` in the GNILND/KFILND conditionals has nothing to do with moving the lnet checks to ksym, and the commit message doesn't mention it. Drop it or split it out?
owner Shaun Tancheff · uploader James Simmons · PS4 uploaded 117d ago · NEW · open in Gerrit ↗
commit message
LU-20418 build: Move lnet common checks to ksym Move checks for: HAVE_IBDEV_TO_NODE HAVE_IN_DEV_FOR_EACH_IFA_RTNL HAVE_SOCK_INUSE_ADD HAVE_SOCK_NOT_OWNED_BY_ME HAVE_NETDEV_LOCK_OPS HAVE_SENDPAGE_OK HAVE_STRUCT_SOCKADDR_UNSIZED sockaddr_unsized Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: Iaf1759e7d88480254983b2d79c41f12d43974ef6
8027
master
J –B ✓T ✓R +0/2−
LU-5960 lnet: add in functionality of lctl to DLC
carrying Amir Shehata · Christopher J. Morrone voted -1
stalled 456d
XL +1916 −144
456d
LU-5960 lnet: add in functionality of lctl to DLC
carrying Amir Shehata · Christopher J. Morrone voted -1
stalled 456d
XL +1916 −144
456d
reviews:
Christopher J. Morrone -1 · Olaf Weber +1
no vote yet: Doug Oucharek, Isaac Huang, James Shimek, Chuck Fossen, Liang Zhen
owner Amir Shehata · uploader James Simmons · PS23 uploaded 3883d ago · NEW · open in Gerrit ↗
commit message
LU-5960 lnet: add in functionality of lctl to DLC One of the barriers to moving from lctl to lnetctl is the lack of certain functionality. This patch adds some of the feature that are missing back. The following commands have been added: . show peers . add peer . del peer . show connections . close connection . push connection Besides adding in the missing pieces I have added new features such as filtering the listing of peer or connections based on properties such as NID,PID or even LNet type (e.g o2ib1) to the lnetconfig library. From the lnetctl command line one can call lnetctl peer show --nid 10.0.0.1@tcp and it will only show that specific peer. Listing of a grouping of peers is also possible with for example lnetctl peer show --nid o2ib12 which will display all peers belong to the o2ib12 net configuration. Lastly the ability to use DNS hostnames was also added. Signed-off-by: Amir Shehata <amir.shehata@intel.com> Signed-off-by: James Simmons <uja.ornl@yahoo.com> Change-Id: Id102e8a6148d9e2ef8c88880df86e237a14c5ebb
▶In CI
(1)
65199
master
J –B ✓T …R +2/2
LU-19768 obdclass: add table-driven netlink framework
carrying Timothy Day · build OK — testing in progress (typically 6–14h)
2 unresolved
XL +1152 −575
10h
LU-19768 obdclass: add table-driven netlink framework
carrying Timothy Day · build OK — testing in progress (typically 6–14h)
2 unresolved
XL +1152 −575
10h
build OK — testing in progress (typically 6–14h)
2 reviewer comment(s) to address if a respin is needed — last from Gerrit AI review for Lustre
reviews:
Arshad Hussain +1 · Chris Horn +1
no vote yet: Sebastien Buisson, Andreas Dilger, Alex Zhuravlev, Minh
patchsets:
PS17 10-23 James Simmons
PS18 10-27 James Simmons
PS19 10-27 James Simmons
PS20 11-02 James Simmons
PS21 11-03 James Simmons
+16 earlier
PS1 04-09 PS2 07-22 PS3 07-29 PS4 08-14 Minh PS5 08-14 Minh PS6 08-14 Minh PS7 08-14 Minh PS8 08-14 Minh PS9 09-23 PS10 09-29 PS11 09-29 PS12 10-08 PS13 10-15 James Simmons PS14 10-16 James Simmons PS15 10-16 James Simmons PS16 10-20 James Simmonsyour previous vote: -1 on PS1 (2026-04-10 19:43) — now at PS21
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:16 — (minor) Several behavior changes in the diff aren't mentioned here:
Gerrit AI review for Lustre
(minor) Several behavior changes in the diff aren't mentioned here: - config/lustre-libcfs.m4 and lustre_compat/net/genetlink.h: HAVE_GENL_DUMPIT_INFO_FAMILY is replaced by HAVE_GENL_INFO_FAMILY, and the compat condition is inverted. - liblnetconfig_netlink.c: new handling of an empty flow set in yaml_create_nested_list(). - liblustreapi_param.c: print_out_targets() now returns the raw libyaml rc. Before, it returned 0 on success, which the caller treated as a parse error. - lprocfs_stats_scan(): the `filter[strlen(filter) - 1] = '\0'` truncation for `*.` patterns is removed, so the filter matches differently. - lustre_stats_cmd(): the stats references taken by the scan are now dropped, where the old code leaked them. Could these be listed in the body, or split out if they are independent fixes?
reply Misc Code Checks Robot (Gatekeeper helper) kernelcomm.c:999 — warn: lustre_targets_pack_msg():inconsistent returns '<l->ltl_desc->ltd_mutex'.
Misc Code Checks Robot (Gatekeeper helper)
warn: lustre_targets_pack_msg():inconsistent returns '<l->ltl_desc->ltd_mutex'. warn: lustre_targets_pack_msg():inconsistent returns '<l->ltl_desc->ltd_rw_sem'.
owner Timothy Day · uploader James Simmons · PS21 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-19768 obdclass: add table-driven netlink framework
Introduce a reusable table-driven netlink handler framework
(lustre_nl_ctx) that factors out the common start/dump/done
pattern shared by commands that iterate OBD devices.
Each command supplies a descriptor with collect, pack_msg, and
setup / release callbacks.
Also fix several bugs in the existing stats dump path:
- Add missing nla_put return-value checks
- Fix an off-by-one in key-list sizing
- Fix a typo ("togther" -> "together").
TLC-bug-id: TLU-56
Test-Parameters: trivial
Signed-off-by: Timothy Day <timday@thelustrecollective.com>
Signed-off-by: Minh Diep <mdiep@thelustrecollective.com>
Signed-off-by: James Simmons <jsimmons@infradead.org>
Change-Id: Ic3267111785fe79761f0673477149f7fca470a35
▶Needs reviewers
(2)
57548
master
J !B ✓T ✓R 0/2
LU-16565 ldlm: [1] Remove ldlm is,set,clear macros
carrying Timothy Day · CI green, no reviews yet — add reviewers
ldlm_flags_remove
S +23 −23
13d
LU-16565 ldlm: [1] Remove ldlm is,set,clear macros
carrying Timothy Day · CI green, no reviews yet — add reviewers
ldlm_flags_remove
S +23 −23
13d
janitor run: 3 failing config(s), none unique to this patch — janitor results
build #111732 SUCCESS · tests all Maloo sessions
patchsets:
PS1 12-20
PS2 03-13 James Simmons
owner Timothy Day · uploader James Simmons · PS2 uploaded 600d ago · NEW · open in Gerrit ↗
commit message
LU-16565 ldlm: [1] Remove ldlm is,set,clear macros
Replaces ldlm_{is,set,clear} macros with the direct flag
names.
The patch has been generated with the coccinelle script in
contrib/cocci/ldlm_flags.cocci.
Test-Parameters: trivial
Signed-off-by: Timothy Day <timday@amazon.com>
Change-Id: If537e331d52884e75cf0a241cdbb061b7d245f9f
49515
b2_12
J ✗1B ✓T ✓R 0/1
LU-8585 llite: don't cache MDS_OPEN_LOCK for volatile files
CI green — no vote yet from Qian Yingjin, Andreas Dilger, Quentin Bouget
stalled 785d
S +10 −5
785d
LU-8585 llite: don't cache MDS_OPEN_LOCK for volatile files
CI green — no vote yet from Qian Yingjin, Andreas Dilger, Quentin Bouget
stalled 785d
S +10 −5
785d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| replay-single@ldiskfs+DNE:test_65a | seen in 1 other review |
build #91384 SUCCESS · tests all Maloo sessions
no vote yet: Qian Yingjin, Andreas Dilger, Quentin Bouget
patchsets:
PS1 12-26
PS2 12-26
PS3 12-28
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS3 uploaded 1406d ago · NEW · backport · open in Gerrit ↗
commit message
LU-8585 llite: don't cache MDS_OPEN_LOCK for volatile files The kernels knfsd constantly opens and closes files for each access which can result in a continuous stream of open+close RPCs being send to the MDS. To avoid this Lustre created a special flag, ll_nfs_dentry, which enables caching of the MDS_OPEN_LOCK on the client. The fhandles API also uses the same exportfs layer as NFS which indirectly ends up caching the MDS_OPEN_LOCK as well. This is okay for normal files except for Lustre's special volatile files that are used for HSM restore. It is expected on the last close of a Lustre volatile file that it is no longer accessable. To ensure this behavior is kept don't cache MDS_OPEN_LOCK for volatile files. Lustre-change: https://review.whamcloud.com/36641 Lustre-commit: 6a3a842add0e941d901869db195ec0068e69cde3 Change-Id: Ia5d78baf17279c6f268bc0bf443b428d5cbea440 Signed-off-by: James Simmons <jsimmons@infradead.org> Reviewed-by: Andreas Dilger <adilger@whamcloud.com> Reviewed-by: Shaun Tancheff <stancheff@cray.com> Reviewed-by: Quentin Bouget <quentin.bouget@cea.fr> Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
▶Waiting on reviewers
(0)
nothing here right now
▶Ready to land
(10)
66885
master
J –B ✓T ✓R +2/2
LU-20418 build: Move lnet o2ib in-kernel checks to ksym
carrying Shaun Tancheff · all green — ready to land (not in master-next yet)
10 unresolved
M +126 −8
99d
LU-20418 build: Move lnet o2ib in-kernel checks to ksym
carrying Shaun Tancheff · all green — ready to land (not in master-next yet)
10 unresolved
M +126 −8
99d
all green — ready to land (not in master-next yet)
10 reviewer comment(s) to address if a respin is needed — last from Gerrit AI review for Lustre
build #127424 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Timothy Day +1
no vote yet: Andreas Dilger
patchsets:
PS1 06-26
PS2 06-26
PS3 07-09 James Simmons
PS4 07-10 James Simmons
your previous vote: +1 on PS3 (2026-07-10 13:57) — now at PS4
threads: 10 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (style) The body opens straight into the file list; a sentence on what this buys (replacing in-kernel compile tests with header greps) and w
Gerrit AI review for Lustre
(style) The body opens straight into the file list; a sentence on what this buys (replacing in-kernel compile tests with header greps) and why would help. Also, two of the listed items are not moved checks: `ib_uses_virt_dma.ksym` and `ib_dma_virt_map_sg_EXPORTED.ksym` are new, with no m4 predecessor, and exist only to build the HAVE_OFED_IB_DMA_MAP_SG_SANE expression. Worth saying so.
reply Gerrit AI review for Lustre COMMIT_MSG:20 — (minor) `trivial` seems light for a change that alters how o2ib capability detection works on every supported kernel. Would an o2ib-capable
Gerrit AI review for Lustre
(minor) `trivial` seems light for a change that alters how o2ib capability detection works on every supported kernel. Would an o2ib-capable session (both the in-kernel ko2iblnd and an external MOFED build) be worth requesting here?
reply Gerrit AI review for Lustre IN_KERNEL_HAVE_IBK_SG_GAPS_REG.ksym:10 — (typo) This status string looks copy-pasted from HAVE_LINUX_BIO_INTEGRITY_HEADER.ksym. Configure prints
Gerrit AI review for Lustre
(typo) This status string looks copy-pasted from HAVE_LINUX_BIO_INTEGRITY_HEADER.ksym. Configure prints
checking if [in-kernel] header rdma/ib_verbs.h exists ... yes
for what is really an `IBK_SG_GAPS_REG` enum test. Something like "'IBK_SG_GAPS_REG' is defined" would match the other files here.
reply Gerrit AI review for Lustre IN_KERNEL_HAVE_OFED_IB_DEVICE_OPS.ksym:11 — (minor) The m4 test being replaced was `offsetof(struct ib_device_ops, unmap_fmr)`, so it answered no once the FMR members went away in v5.8
Gerrit AI review for Lustre
(minor) The m4 test being replaced was `offsetof(struct ib_device_ops, unmap_fmr)`, so it answered no once the FMR members went away in v5.8; this grep answers yes on anything from v5.0 on (confirmed against v6.12). No effect today - the only user is inside `#ifdef HAVE_OFED_FMR_POOL_API` in o2iblnd.c - but in-kernel and external now answer the same question differently, since LN_SRC_O2IB_IB_DEVICE_OPS_EXISTS still requires unmap_fmr. Intentional?
reply Gerrit AI review for Lustre IN_KERNEL_HAVE_OFED_IB_DMA_MAP_SG_SANE.ksym:16 — (defect) This emits an object-like macro whose *value* carries the answer, so IN_KERNEL_HAVE_OFED_IB_DMA_MAP_SG_SANE ends up defined on ever
Gerrit AI review for Lustre
(defect) This emits an object-like macro whose *value* carries the answer, so IN_KERNEL_HAVE_OFED_IB_DMA_MAP_SG_SANE ends up defined on every kernel that has `ib_dma_map_sg()` in ib_verbs.h - which is all of them.
The only reader tests presence, not value (lnet/klnds/o2iblnd/o2iblnd.h:17, after the in-kernel sed rewrite):
#if defined(EXTERNAL_OFED_BUILD) && !defined(IN_KERNEL_HAVE_OFED_IB_DMA_MAP_SG_SANE)
#undef CONFIG_INFINIBAND_VIRT_DMA
#endif
so `!defined(...)` is now always false. I ran gen_compat.py against a v6.12 tree with the `EXPORT_SYMBOL(ib_dma_virt_map_sg)` line deleted: the expression evaluates to 0, but the `#define` is still emitted. Should the reader switch to `#if !IN_KERNEL_HAVE_OFED_IB_DMA_MAP_SG_SANE`, or should `macro` be a dict so it is only defined when sane?
Two smaller things on the same construct: `defined` produced by macro expansion inside `#if` is undefined behaviour (C99 6.10.1p4) and gcc warns under -Wexpansion-to-defined; and the generated comment block cites the 2006 `v2.6.19-3257-g9b513090a3c5e` DMA-mapping commit while the macro actually encodes the 5.11-era virt-dma condition, which will read oddly in config.h.
reply Gerrit AI review for Lustre IN_KERNEL_HAVE_OFED_RDMA_REJECT_4ARGS.ksym:10 — (minor) The test is for the 4-argument form, but the text reads as a plain availability check - on a pre-5.8 kernel configure will say `'rdm
Gerrit AI review for Lustre
(minor) The test is for the 4-argument form, but the text reads as a plain availability check - on a pre-5.8 kernel configure will say `'rdma_reject()' is available ... no` even though rdma_reject() is there. LN_O2IB_RDMA_REJECT words it "4arg 'rdma_reject' exists"; matching that would be less confusing.
reply Gerrit AI review for Lustre IN_KERNEL_ib_dma_virt_map_sg_EXPORTED.ksym:8 — (typo) Empty `message` leaves a bare comment line with trailing whitespace in the generated header. IN_KERNEL_ib_uses_virt_dma.ksym uses 'RD
Gerrit AI review for Lustre
(typo) Empty `message` leaves a bare comment line with trailing whitespace in the generated header. IN_KERNEL_ib_uses_virt_dma.ksym uses 'RDMA/core: remove use of dma_virt_ops' for this same hash.
reply Gerrit AI review for Lustre IN_KERNEL_ib_dma_virt_map_sg_EXPORTED.ksym:10 — (minor) In device.c that EXPORT_SYMBOL sits inside `#ifdef CONFIG_INFINIBAND_VIRT_DMA`, so a text grep says yes regardless of the kernel's c
Gerrit AI review for Lustre
(minor) In device.c that EXPORT_SYMBOL sits inside `#ifdef CONFIG_INFINIBAND_VIRT_DMA`, so a text grep says yes regardless of the kernel's config, while the Module.symvers fallback answers correctly. ksymfind.check() only falls back to symvers on FileNotFoundError, so against a full kernel source tree the .c is found first and symvers is never consulted - the two paths can disagree for the same kernel. Is the .c grep needed at all here, given symvers is authoritative?
reply Gerrit AI review for Lustre lustre-build-linux.m4:1097 — (style) These two macros are now single-line wrappers, and the header comments still describe "o2ib in-kernel|external" plus a `$7` in_kerne
Gerrit AI review for Lustre
(style) These two macros are now single-line wrappers, and the header comments still describe "o2ib in-kernel|external" plus a `$7` in_kernel mode that no longer exists. Nothing passes `in_kernel` to LB2_LINUX_TEST_SRC() any more either, so the in_kernel branches at 708 (including the HAVE_OFED_COMPAT_RDMA / IN_KERNEL_HAVE_OFED_ sed) and 746 are dead code after this patch. Worth removing them here rather than leaving them to rot.
reply Gerrit AI review for Lustre lustre-build-linux.m4:1122 — (minor) Dropping the in-kernel result here hits every caller, not just the nine ported to .ksym. LN_O2IB_IB_DMA_PCI_P2P_DMA_SUPPORTED in con
Gerrit AI review for Lustre
(minor) Dropping the in-kernel result here hits every caller, not just the nine ported to .ksym. LN_O2IB_IB_DMA_PCI_P2P_DMA_SUPPORTED in config/lustre-lnet.m4 also loses IN_KERNEL_HAVE_OFED_IB_DMA_PCI_P2P_DMA_SUPPORTED, and there is no .ksym for it. Nothing in the tree reads that macro today so it looks harmless, but it isn't mentioned in the commit message - deliberate, or an oversight?
owner Shaun Tancheff · uploader James Simmons · PS4 uploaded 116d ago · NEW · open in Gerrit ↗
commit message
LU-20418 build: Move lnet o2ib in-kernel checks to ksym Perform in-kernel checks: ib_uses_virt_dma.ksym ib_dma_virt_map_sg_EXPORTED.ksym HAVE_IBK_SG_GAPS_REG.ksym HAVE_OFED_RDMA_REJECT_4ARGS.ksym HAVE_OFED_IB_DEVICE_OPS.ksym HAVE_OFED_RDMA_CONNECT_LOCKED.ksym HAVE_OFED_IB_SG_DMA_ADDRESS.ksym HAVE_OFED_FMR_POOL_API.ksym HAVE_OFED_IB_DMA_MAP_SG_SANE.ksym Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: Ie7fd7e31b1c35ef8a6510f8cd2aa30416f251f0b
66848
master
J –B ✓T ✓R +2/2
LU-20418 build: Move core pre-v6.18 checks to ksym checks
carrying Shaun Tancheff · all green — ready to land (not in master-next yet)
8 unresolved
XL +350 −670
99d
LU-20418 build: Move core pre-v6.18 checks to ksym checks
carrying Shaun Tancheff · all green — ready to land (not in master-next yet)
8 unresolved
XL +350 −670
99d
all green — ready to land (not in master-next yet)
8 reviewer comment(s) to address if a respin is needed — last from Gerrit AI review for Lustre
build #127390 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Timothy Day +1
no vote yet: Andreas Dilger
patchsets:
PS1 06-24
PS2 06-26
PS3 06-26
PS4 07-09 James Simmons
your previous vote: +1 on PS3 (2026-06-28 00:27) — now at PS4
threads: 8 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:14 — (typo) Stray `.ksym` suffix here, and this same macro is listed again at the end of the list.
Gerrit AI review for Lustre
(typo) Stray `.ksym` suffix here, and this same macro is listed again at the end of the list.
reply Gerrit AI review for Lustre COMMIT_MSG:30 — (minor) Duplicate of the entry earlier in the list.
Gerrit AI review for Lustre
(minor) Duplicate of the entry earlier in the list. The list is also missing `HAVE_GRAB_CACHE_PAGE_WRITE_BEGIN`, which this patch adds as config/compat.d/HAVE_GRAB_CACHE_PAGE_WRITE_BEGIN.ksym and removes from lustre-core.m4. Worth adding so every hunk is accounted for.
reply Gerrit AI review for Lustre HAVE_LINUX_UNALIGNED_HEADER.ksym:11 — (suggestion) This is a header-existence check, but it anchors on a function body line rather than the include guard. The two sibling existen
Gerrit AI review for Lustre
(suggestion) This is a header-existence check, but it anchors on a function body line rather than the include guard. The two sibling existence checks added by the previous patch use the guard: `_LINUX_BIO_INTEGRITY_H` and `_LINUX_BLK_INTEGRITY_H`. `__LINUX_UNALIGNED_H` would match here and is far more stable than the generic-implementation body of `get_unaligned_le16()`.
A missed match is not a silent no-op: osd_iam.h falls back to
#include <asm/unaligned.h>
and 5f60d5f6bbc1 deleted asm/unaligned.h in the same commit, so a false negative is a build failure.
reply Gerrit AI review for Lustre HAVE_MODULE_IMPORT_USES_EXPORT_SYMBOLS.ksym:11 — (minor) The status text reads as the opposite of the macro it gates. On v6.13+ this prints
Gerrit AI review for Lustre
(minor) The status text reads as the opposite of the macro it gates. On v6.13+ this prints
checking if module import uses export symbols ... yes
yet that is exactly the case where `HAVE_MODULE_IMPORT_USES_EXPORT_SYMBOLS` is *not* defined (the True branch defines `CRYPTO_INTERNAL` instead). The old m4 printed "if MODULE_IMPORT_NS() uses export symbols ... yes" when the macro *was* defined, so the meaning of the configure line flips with this move. Something like "MODULE_IMPORT_NS() needs a string literal" would track the polarity.
reply Gerrit AI review for Lustre HAVE_PAGE_PRIVATE_2.ksym:10 — (typo) "availabe" -> "available". This string is printed during configure.
Gerrit AI review for Lustre
(typo) "availabe" -> "available". This string is printed during configure.
reply Gerrit AI review for Lustre HAVE_PageMlocked.ksym:10 — (minor) Same polarity readability point as the module-import check: the file is named `HAVE_PageMlocked` but a true result means `PageMlocke
Gerrit AI review for Lustre
(minor) Same polarity readability point as the module-import check: the file is named `HAVE_PageMlocked` but a true result means `PageMlocked` is gone and `folio_test_mlocked()` is present. Naming the file after the thing it actually detects (or after `folio_test_mlocked_page`, the macro it defines) would avoid a reader reaching for the wrong branch.
reply Gerrit AI review for Lustre HAVE_WRITE_BEGIN_FOLIO.ksym:8 — This check matches on the `write_begin` prototype, but the recorded commit is the `write_end` conversion. The one that changed `write_begin`
Gerrit AI review for Lustre
This check matches on the `write_begin` prototype, but the recorded commit is the `write_end` conversion. The one that changed `write_begin` is v6.11-rc1-52-g1da86618bdce ("fs: Convert aops->write_begin to take a folio").
The m4 test this replaces carried both commits in its comment; only the less relevant one survived, and it is what ends up in the generated header comment.
reply Gerrit AI review for Lustre HAVE_blk_integrity_with_metadata_size.ksym:8 — (typo) The upstream subject for c6603b1d6556 is "block: rename tuple_size field in blk_integrity to metadata_size" — the "to" is missing her
Gerrit AI review for Lustre
(typo) The upstream subject for c6603b1d6556 is "block: rename tuple_size field in blk_integrity to metadata_size" — the "to" is missing here, which reads as a field named `blk_integrity_metadata_size`. This string is copied verbatim into the generated compat header.
owner Shaun Tancheff · uploader James Simmons · PS4 uploaded 117d ago · NEW · open in Gerrit ↗
commit message
LU-20418 build: Move core pre-v6.18 checks to ksym checks Move checks for: HAVE_D_REVALIDATE_WITH_INODE_NAME HAVE_FILE_KATTR HAVE_HRTIMER_SETUP HAVE_IOPS_MKDIR_RETURNS_DENTRY HAVE_LINUX_UNALIGNED_HEADER.ksym HAVE_MODULE_IMPORT_USES_EXPORT_SYMBOLS HAVE_NETIF_GET_FLAGS HAVE_PAGE_MAPCOUNT_IS_TYPE HAVE_PAGE_PRIVATE_2 HAVE_PG_ERROR HAVE_PageMlocked HAVE_SET_DEFAULT_D_OP HAVE_STRUCT_FILE_F_VERSION HAVE_TRY_LOOKUP_NOPERM HAVE_WAIT_ON_PAGE_LOCKED HAVE_WRITE_BEGIN_FOLIO HAVE_WRITE_BEGIN_KIOCB HAVE_blk_integrity_with_metadata_size HAVE_fs_struct_with_seq HAVE_simple_dentry_operations HAVE_LINUX_UNALIGNED_HEADER Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: I0660a66ac4ca3b7387be7eb87efb376a4394cda6
66836
master
J –B ✓T ✓R +3/2
LU-20418 build: Move core pre-v5.11 checks to ksym checks
carrying Shaun Tancheff · all green — ready to land (not in master-next yet)
6 unresolved
L +294 −546
99d
LU-20418 build: Move core pre-v5.11 checks to ksym checks
carrying Shaun Tancheff · all green — ready to land (not in master-next yet)
6 unresolved
L +294 −546
99d
all green — ready to land (not in master-next yet)
6 reviewer comment(s) to address if a respin is needed — last from Gerrit AI review for Lustre
build #127385 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Andreas Dilger +1 · Timothy Day +1
patchsets:
PS1 06-24
PS2 06-25
PS3 07-09 James Simmons
your previous vote: +1 on PS2 (2026-06-28 00:27) — now at PS3
threads: 6 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:30 — (minor) The body lists 21 macros as moved, but two things in the diff are not covered by that list.
Gerrit AI review for Lustre
(minor) The body lists 21 macros as moved, but two things in the diff are not covered by that list. LC_FSCRYPT_SUPPORT is deleted from config/lustre-core.m4 and has no .ksym replacement - it is not one of the 21. HAVE_KTHREAD_USE_MM.ksym is also not a pure move: it emits kthread_use_mm()/kthread_unuse_mm() compat defines that LC_HAVE_KTHREAD_USE_MM never produced. Both are worth describing so the diff has no surprises.
reply Shaun Tancheff HAVE_FLUSH_DELAYED_FPUT.ksym:11 — Yes [for source only checking, ex lustre-in-tree]
Oleg Drokin
and when they decide this does nto need to be GPL - it'll break? fragile.
Shaun Tancheff
Yes [for source only checking, ex lustre-in-tree] symvers is also checked below so if the kernel is built (lustre is out-of-tree) then we also fall back to Module.symvers which would have the symbol (if it is exported).
reply Gerrit AI review for Lustre HAVE_FLUSH_DELAYED_FPUT.ksym:13 — (defect) Adding evidence on the open question above rather than repeating it: the Module.symvers fallback does not cover the source-tree cas
Gerrit AI review for Lustre
(defect) Adding evidence on the open question above rather than repeating it: the Module.symvers fallback does not cover the source-tree case. In ksymfind.check() (gen_compat.py) the symvers loop lives inside "except FileNotFoundError", so it only runs when the header/source path is missing. When LINUX points at a kernel source tree, fs/file_table.c exists, grep_ex() simply returns no match, errorNoFile stays False, and symvers is never consulted - which is exactly the in-tree/source-only configuration. The old LB_CHECK_EXPORT ran the other way round: Module.symvers first, then grep -E 'EXPORT_SYMBOL.*\(flush_delayed_fput\)' on the source, so it also tolerated the _GPL/_NS spellings. HAVE_ACCOUNT_PAGE_DIRTIED_EXPORT and HAVE_FSCRYPT_D_REVALIDATE have the same shape. Trying symvers first would restore the old behaviour.
reply Gerrit AI review for Lustre HAVE_FSCRYPT_DUMMY_CONTEXT_ENABLED.ksym:11 — (defect) Grepping one header does not follow #include, and on RHEL8 (4.18) include/linux/fscrypt.h is only a 254-line wrapper that includes
Gerrit AI review for Lustre
(defect) Grepping one header does not follow #include, and on RHEL8 (4.18) include/linux/fscrypt.h is only a 254-line wrapper that includes <linux/fscrypt_supp.h> or <linux/fscrypt_notsupp.h>; fscrypt_dummy_context_enabled() is defined in those two, not in fscrypt.h itself. The old LC_SRC_FSCRYPT_DUMMY_CONTEXT_ENABLED compiled #include <linux/fscrypt.h> so it found the notsupp stub and set the macro. This check will report no on RHEL8, which is a primary tested server kernel. Today that is masked in a default build because LC_CONFIG_CRYPTO AC_DEFINEs the macro for the embedded-llcrypt path, but not for --enable-crypto=in-kernel. Can header take a list so fscrypt_supp.h/fscrypt_notsupp.h are covered too?
reply Gerrit AI review for Lustre HAVE_KTHREAD_USE_MM.ksym:17 — (defect) These defines end up in config.h, which is force-included into every translation unit (-include $PWD/config.h in config/lustre-buil
Gerrit AI review for Lustre
(defect) These defines end up in config.h, which is force-included into every translation unit (-include $PWD/config.h in config/lustre-build.m4). lustre/include/cl_object.h:2645 and lustre/obdclass/cl_io.c:1549 already provide the same fallback under #ifndef HAVE_KTHREAD_USE_MM, but spell it use_mm(mm) rather than use_mm((mm)). On a kernel with no kthread_use_mm() (vanilla/Ubuntu 5.4, both listed in lustre/ChangeLog) both fire and the replacement lists differ, so every file that pulls in cl_object.h gets a "kthread_use_mm redefined" diagnostic. Either drop this False branch, or remove the two in-tree fallbacks in the same patch.
reply Gerrit AI review for Lustre lustre-core.m4:3739 — (defect) This patch deletes AC_DEFUN([LC_FSCRYPT_SUPPORT], ...) but leaves this call, and there is no .ksym replacement - it is not in the l
Gerrit AI review for Lustre
(defect) This patch deletes AC_DEFUN([LC_FSCRYPT_SUPPORT], ...) but leaves this call, and there is no .ksym replacement - it is not in the list of checks being moved. With no definition left in the tree, m4 copies the token verbatim into configure and it is executed as a shell command, so has_fscrypt_support is never set. The AS_IF on the next line then always takes the embedded-llcrypt branch, and --enable-crypto=in-kernel can no longer select in-kernel fscrypt. Was this hunk removed by accident along with the neighbouring LC_LM_COMPARE_OWNER_EXISTS/LC_FSCRYPT_DIGESTED_NAME blocks?
owner Shaun Tancheff · uploader James Simmons · PS3 uploaded 117d ago · NEW · open in Gerrit ↗
commit message
LU-20418 build: Move core pre-v5.11 checks to ksym checks Move checks for: GENL_FAMILY_HAS_RESV_START_OP HAVE_ACCOUNT_PAGE_DIRTIED_EXPORT HAVE_BDI_DEBUG_STATS HAVE_BIO_BI_PHYS_SEGMENTS HAVE_BVEC_ITER_ALL HAVE_FLUSH_DELAYED_FPUT HAVE_FSCRYPT_DIGESTED_NAME HAVE_FSCRYPT_DUMMY_CONTEXT_ENABLED HAVE_FSCRYPT_DUMMY_POLICY HAVE_FSCRYPT_D_REVALIDATE HAVE_FSCRYPT_FNAME_ALLOC_BUFFER_NO_INODE HAVE_FSCRYPT_IS_NOKEY_NAME HAVE_FSCRYPT_NOKEY_NAME HAVE_FSCRYPT_PREPARE_READDIR HAVE_FSCRYPT_SET_CONTEXT HAVE_FSCRYPT_SET_TEST_DUMMY_ENC_CHAR_ARG HAVE_ITER_FILE_SPLICE_WRITE HAVE_KEYRING_SEARCH_4ARGS HAVE_KTHREAD_USE_MM HAVE_LM_COMPARE_OWNER HAVE_PRANDOM_H Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: Icdffc743b3acb57a02e663ce67c10cda9e881c9b
66832
master
J –B ✓T ✓R +2/2
LU-20418 build: Move libcfs remaining checks to ksym checks
carrying Shaun Tancheff · all green — ready to land (not in master-next yet)
5 unresolved
L +252 −455
99d
LU-20418 build: Move libcfs remaining checks to ksym checks
carrying Shaun Tancheff · all green — ready to land (not in master-next yet)
5 unresolved
L +252 −455
99d
all green — ready to land (not in master-next yet)
5 reviewer comment(s) to address if a respin is needed — last from Gerrit AI review for Lustre
build #127389 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Timothy Day +1
patchsets:
PS1 06-24
PS2 06-25
PS3 07-09 James Simmons
your previous vote: +1 on PS2 (2026-06-28 00:27) — now at PS3
threads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:27 — (minor) The macro this generates is HAVE_PDE_DATA, not HAVE_pde_data as listed here. The rename itself looks harmless since no C code tests
Gerrit AI review for Lustre
(minor) The macro this generates is HAVE_PDE_DATA, not HAVE_pde_data as listed here. The rename itself looks harmless since no C code tests it, but it is a silent change of a config.h macro name and is worth calling out in the body. Also, "remaining checks" reads as if lustre-libcfs.m4 is now empty of kernel checks; roughly twenty LIBCFS_* tests are still there.
reply Gerrit AI review for Lustre HAVE_BIO_ALLOC_WITH_BDEV.ksym:12 — (defect) `blk_opf_t` did not exist when bio_alloc() gained the bdev argument; it arrives with v6.0 commit 16458cf3bd15 ("block: Use the new
Gerrit AI review for Lustre
(defect) `blk_opf_t` did not exist when bio_alloc() gained the bdev argument; it arrives with v6.0 commit 16458cf3bd15 ("block: Use the new blk_opf_t type"). In v5.18 and v5.19 the second line reads
unsigned short nr_vecs, unsigned int opf, gfp_t gfp_mask)
so the two-line match fails and HAVE_BIO_ALLOC_WITH_BDEV stays undefined on 5.18/5.19, where the removed LIBCFS_BIO_ALLOC_WITH_BDEV compile test defined it (the m4 list it came from grouped it under 5.17).
That is a build failure rather than a silent difference: cfs_bio_alloc() in lustre/include/lustre_compat.h then compiles the `bio_alloc(gfp_mask, nr_vecs)` branch against a bio_alloc() that takes four arguments. The first pattern alone is enough to identify the signature; alternatively relax the type to something like `\w+ opf`.
reply Gerrit AI review for Lustre HAVE_KFREE_SENSITIVE.ksym:11 — (defect) The parameter name `objp` was only added to this prototype in v5.16. From v5.10 (the commit quoted above) through v5.15, include/li
Gerrit AI review for Lustre
(defect) The parameter name `objp` was only added to this prototype in v5.16. From v5.10 (the commit quoted above) through v5.15, include/linux/slab.h has
void kfree_sensitive(const void *);
so the pattern does not match and HAVE_KFREE_SENSITIVE is left undefined on exactly the kernels the old LIBCFS_HAVE_KFREE_SENSITIVE test accepted. Running gen_compat.py over upstream headers gives no for v5.10-v5.15 and yes from v5.16 on, which covers RHEL9 (5.14), SLES15 SP4/SP5 (5.14), Ubuntu 22.04 (5.15) and openEuler 22.03 (5.10).
Nothing includes lustre_compat/linux/slab.h today so nothing breaks yet, but that header maps kfree_sensitive() to kzfree(), which no kernel >= 5.10 still defines. Dropping `objp` from the pattern makes it match both spellings.
reply Shaun Tancheff HAVE_KMAP_LOCAL.ksym:12 — Yes the () should be escaped here.
Oleg Drokin
if you are doing this you also need to escape the () above?
Shaun Tancheff
Yes the () should be escaped here. Not sure why a build did not fail ... will check
reply Gerrit AI review for Lustre HAVE_TIMER_DELETE_SYNC.ksym:7 — (minor) 9a5a30568697 is "timers: Get rid of del_singleshot_timer_sync()"; timer_delete_sync() is introduced by v6.1-rc1-11-g9b13df3fb64e ("t
Gerrit AI review for Lustre
(minor) 9a5a30568697 is "timers: Get rid of del_singleshot_timer_sync()"; timer_delete_sync() is introduced by v6.1-rc1-11-g9b13df3fb64e ("timers: Rename del_timer_sync() to timer_delete_sync()"). The old m4 comment listed both, and this reference ends up in the generated header, so the rename commit is the one to quote here.
owner Shaun Tancheff · uploader James Simmons · PS3 uploaded 117d ago · NEW · open in Gerrit ↗
commit message
LU-20418 build: Move libcfs remaining checks to ksym checks Move checks for: HAVE_BIO_ALLOC_WITH_BDEV HAVE_BLK_INTEGRITY_NOVERIFY HAVE_CIPHER_H HAVE_CONST_CTR_TABLE HAVE_CRYPTO_SHA2_HEADER HAVE_KFREE_SENSITIVE HAVE_KMAP_LOCAL HAVE_LINUX_FORTIFY_STRING_HEADER HAVE_LINUX_STDARG_HEADER HAVE_LIST_CMP_FUNC_T HAVE_NLA_STRLCPY HAVE_PANIC_NOTIFIER_H HAVE_PARAM_SET_UINT_MINMAX HAVE_RB_FIND HAVE_TASK_IS_RUNNING HAVE_TIMER_DELETE HAVE_TIMER_DELETE_SYNC HAVE_pde_data Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: Iaf79673cb47beeb9ce21303765d635d73475789f
66839
master
J –B ✓T ✓R +2/2
LU-20418 build: Move core pre-v6.1 checks to ksym checks
carrying Shaun Tancheff · all green — ready to land (not in master-next yet)
7 unresolved
L +260 −432
99d
LU-20418 build: Move core pre-v6.1 checks to ksym checks
carrying Shaun Tancheff · all green — ready to land (not in master-next yet)
7 unresolved
L +260 −432
99d
all green — ready to land (not in master-next yet)
7 reviewer comment(s) to address if a respin is needed — last from Gerrit AI review for Lustre
build #127388 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Timothy Day +1
no vote yet: Andreas Dilger
patchsets:
PS1 06-24
PS2 06-26
PS3 07-09 James Simmons
your previous vote: +1 on PS2 (2026-06-28 00:27) — now at PS3
threads: 7 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (style) The subject is wrapped onto a second line, so git and Gerrit render it as "...to ksym checks" with a double space. It fits in one l
Gerrit AI review for Lustre
(style) The subject is wrapped onto a second line, so git and Gerrit render it as "...to ksym checks" with a double space. It fits in one line at 55 characters.
reply Gerrit AI review for Lustre COMMIT_MSG:17 — (minor) HAVE_FILEMAP_GET_FOLIOS_CONTIG is listed as moved, but LC_HAVE_FILEMAP_GET_FOLIOS_CONTIG is still defined in config/lustre-core.m4 a
Gerrit AI review for Lustre
(minor) HAVE_FILEMAP_GET_FOLIOS_CONTIG is listed as moved, but LC_HAVE_FILEMAP_GET_FOLIOS_CONTIG is still defined in config/lustre-core.m4 and still called from LC_PROG_LINUX_SRC/LC_PROG_LINUX_RESULTS.
reply Gerrit AI review for Lustre COMMIT_MSG:27 — (typo) There is no HAVE_VFS_SETXATTR_USERNS macro anywhere in the tree; the check moved here is LC_HAVE_VFS_SETXATTR_NON_CONST_VALUE, which
Gerrit AI review for Lustre
(typo) There is no HAVE_VFS_SETXATTR_USERNS macro anywhere in the tree; the check moved here is LC_HAVE_VFS_SETXATTR_NON_CONST_VALUE, which defines VFS_SETXATTR_VALUE(). Same for the .ksym file name.
reply Gerrit AI review for Lustre HAVE_AOPS_MIGRATE_FOLIO.ksym:15 — (minor) This is the only converted check that also emits macros the m4 never defined: folio_migr and migrate_folio are already defined by lu
Gerrit AI review for Lustre
(minor) This is the only converted check that also emits macros the m4 never defined: folio_migr and migrate_folio are already defined by lustre/include/lustre_compat.h under the same #ifdef HAVE_AOPS_MIGRATE_FOLIO. The two copies agree, so the redefinition is benign, but it leaves two places to keep in sync and it also pushes `migrate_folio` -> `migratepage` into config.h for every module rather than just the files that include lustre_compat.h. Either drop these here or drop the lustre_compat.h block, and mention it in the commit message.
reply Gerrit AI review for Lustre HAVE_FILEMAP_GET_FOLIOS_CONTIG.ksym:12 — Unlike the other 16 checks in this patch, the m4 side was not deleted: LC_SRC_HAVE_FILEMAP_GET_FOLIOS_CONTIG / LC_HAVE_FILEMAP_GET_FOLIOS_CO
Gerrit AI review for Lustre
Unlike the other 16 checks in this patch, the m4 side was not deleted: LC_SRC_HAVE_FILEMAP_GET_FOLIOS_CONTIG / LC_HAVE_FILEMAP_GET_FOLIOS_CONTIG are still in config/lustre-core.m4 and still invoked from the 6.1 block of LC_PROG_LINUX_SRC and LC_PROG_LINUX_RESULTS. So the slow compile test still runs, and HAVE_FILEMAP_GET_FOLIOS_CONTIG ends up defined twice in config.h (benign only because both expand to 1). Should the m4 half go away here too?
reply Timothy Day HAVE_IOV_ITER_IS_ALIGNED.ksym:9 — We don't need this symbol - https://review.whamcloud.com/c/fs/lustre-release/+/64387
Timothy Day
We don't need this symbol - https://review.whamcloud.com/c/fs/lustre-release/+/64387
reply Gerrit AI review for Lustre HAVE_VFS_SETXATTR_USERNS.ksym:17 — The True/False branches look swapped relative to the autoconf test they replace.
Gerrit AI review for Lustre
The True/False branches look swapped relative to the autoconf test they replace.
LC_HAVE_VFS_SETXATTR_NON_CONST_VALUE compiled `vfs_setxattr(&init_user_ns, de, name, (const void *)value, 0, 0)`: on success (value arg is `const void *`) it defined VFS_SETXATTR_VALUE(value) as `(value)`, and only on failure (non-const window, v5.19-rc5-17-g0c5fd887d2bb .. v6.0-rc3-6-g6344e66970c6) as `((void *)(value))` -- 0006eb3644 calls that "Cast away const when required".
Here the regex matches when the header declares `const void *`, and that case selects the cast. Running gen_compat.py confirms it:
v6.18 headers (const void *):
checking if vfs_setxattr() has 'const void *' parameter ... yes
#define VFS_SETXATTR_VALUE(value) ((void *)(value))
v6.0 headers (void *):
checking if vfs_setxattr() has 'const void *' parameter ... no
#define VFS_SETXATTR_VALUE(value) (value)
Both are the opposite of what the m4 produced, and the "yes" line contradicts the branch it picks. It happens to be harmless today only because the single user in lustre_compat.h calls __vfs_setxattr(), whose value argument stayed `const void *` on every kernel; the cast becomes a build failure the moment the macro is used with vfs_setxattr() again on a v6.0 kernel.
owner Shaun Tancheff · uploader James Simmons · PS3 uploaded 117d ago · NEW · open in Gerrit ↗
commit message
LU-20418 build: Move core pre-v6.1 checks to ksym checks Move checks for: HAVE_ADD_TO_PAGE_CACHE_LOCKED HAVE_AOPS_MIGRATE_FOLIO HAVE_AOPS_READ_FOLIO HAVE_AOPS_RELEASE_FOLIO HAVE_DQUOT_TRANSFER_WITH_USER_NS HAVE_FILEMAP_GET_FOLIOS HAVE_FILEMAP_GET_FOLIOS_CONTIG HAVE_IOV_ITER_GET_PAGES_ALLOC2 HAVE_IOV_ITER_IS_ALIGNED HAVE_LSMCONTEXT_HAS_ID HAVE_LSMCONTEXT_INIT HAVE_NO_LLSEEK HAVE_READ_CACHE_FOLIO_WANTS_FILE HAVE_REGISTER_SHRINKER_FORMAT_NAMED HAVE_SECURITY_DENTRY_INIT_SECURTY_WITH_CTX HAVE_USER_BACKED_ITER HAVE_VFS_SETXATTR_USERNS Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: I5188c080025534c0d61220dd91cf1dcee6c0e921
40381
b2_12
J ✗1B ✓T ✓R +2/1
LU-13344 lnet: stop using struct timeval
all green — ready to land (not in b2_12-next yet)
stalled 785d
M +78 −82
785d
LU-13344 lnet: stop using struct timeval
all green — ready to land (not in b2_12-next yet)
stalled 785d
M +78 −82
785d
janitor flagged test failures unique to this patch — superseded (tests have since passed)
| unique failing test | history |
|---|---|
| sanity-quota@zfs:test_19 | seen in 1 other review |
build #17202 SUCCESS
reviews:
Andreas Dilger +2
no vote yet: Amir Shehata
owner Jian Yu · uploader Jian Yu · PS1 uploaded 2203d ago · NEW · backport · open in Gerrit ↗
commit message
LU-13344 lnet: stop using struct timeval The struct timeval is not 2038 safe so the Linux kernel is moving away from its use. The use of rpe_stamp hasn't been used since Lustre 2.2 so remove the userland use of this field. This frees use to change rpe_stamp to an equivalent struct timespec64 for future use. Greatly simplify lnet_sock_[read|write] by using jiffies values of sk_sndtimeo, sk_rcvtimeo cached in struct sock. Lustre-commit: 5e4c658c4fea4f2b10c2877394eec824474ecc66 Lustre-change: https://review.whamcloud.com/38105 Change-Id: Ib58193756ec4a526e55bc810c05abd3920b2b269 Signed-off-by: James Simmons <jsimmons@infradead.org>
46164
b2_12
J !B ✓T ✓R +1/1
LU-6174 nrs: perform proper division
all green — ready to land (not in b2_12-next yet)
stalled 785d
S +17 −19
785d
LU-6174 nrs: perform proper division
all green — ready to land (not in b2_12-next yet)
stalled 785d
S +17 −19
785d
janitor run: 2 failing config(s), none unique to this patch — janitor results
1 optional test failure(s) — informational
build #85647 SUCCESS · tests all Maloo sessions
reviews:
Stephane Thiell +1
no vote yet: Andreas Dilger, Li Xi
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS1 uploaded 1751d ago · NEW · backport · open in Gerrit ↗
commit message
LU-6174 nrs: perform proper division For NRS TBF both tr_nsecs and tr_rpc_rate are 64 bit values. The code is wrongly using do_div() which could truncate tr_rpc_rate to a 32 bit value. With current hardware setups the rpc rate is less than the 4 billion limit of u32, currently I see 64K of rpcs with a single IB port. Since this is the case we can change tr_rpc_rate to a 32 bit value. Lustre-commit: c80319213c6dc4ac9826a1bd10c75373e08db837 Lustre-change: https://review.whamcloud.com/36749 Change-Id: I62eabf3a8a30f5c9062aaf4c32fa878710a788c8 Signed-off-by: James Simmons <jsimmons@infradead.org> Reviewed-by: Andreas Dilger <adilger@whamcloud.com> Reviewed-by: Li Xi <lixi@ddn.com> Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
35474
b2_12
B ✓T ✓R +1/1
LU-11838 scrub: handle s_uuid change to uuid_t
all green — ready to land (not in b2_12-next yet)
stalled 785d
M +54 −75
785d
LU-11838 scrub: handle s_uuid change to uuid_t
all green — ready to land (not in b2_12-next yet)
stalled 785d
M +54 −75
785d
build #6709 SUCCESS
reviews:
Shaun Tancheff +1
no vote yet: Andreas Dilger
owner Minh Diep · uploader Minh Diep · PS2 uploaded 2672d ago · NEW · backport · open in Gerrit ↗
commit message
LU-11838 scrub: handle s_uuid change to uuid_t The 4.12 kernel changed the s_uuid field in struct super_block from an character array to an uuid_t. While ldiskfs uses it own s_uuid field in struct ext4_super_block that field is a char array instead of an uuid. Currently on going effort are being down in the linux kernel to move to uuid_t so I suspect this will change in the future. Since this is the case change all the character arrays for uuid handling to uuid_t located in the scrubbing code. Change osd-ldiskfs to use the struct super_block uuid, which is equivalent to s_es version, to handle the uuid_t changes now. Lustre-change: https://review.whamcloud.com/34689 Lustre-commit: 90fd0cd449b9ae3fbff5a99e0edcf288799037c0 Change-Id: I40643d342b5bc17a6ef922e99b3e8524930822de Signed-off-by: James Simmons <uja.ornl@yahoo.com> Reviewed-by: Shaun Tancheff <stancheff@cray.com> Reviewed-by: Andreas Dilger <adilger@whamcloud.com> Signed-off-by: Minh Diep <mdiep@whamcloud.com>
53308
b2_14
B ✓T ✓R +2/1
LU-15420 build: fixes to support building on Ubuntu 22.04 LTS
reviewing Jian Yu · all green — ready to land (not in b2_14-next yet)
stalled 1007d
M +50 −1
1007d
LU-15420 build: fixes to support building on Ubuntu 22.04 LTS
reviewing Jian Yu · all green — ready to land (not in b2_14-next yet)
stalled 1007d
M +50 −1
1007d
build #100626 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Shaun Tancheff +1
owner Jian Yu · uploader Jian Yu · PS1 uploaded 1068d ago · NEW · backport · open in Gerrit ↗
commit message
LU-15420 build: fixes to support building on Ubuntu 22.04 LTS
Lustre uses the glibc stdarg.h instead of the kernel's version which
causes the following build issue.
lustre/include/lu_object.h:35,
/usr/lib/gcc/x86_64-linux-gnu/11/include/stdarg.h:52: note: this is the
location of the previous definition
#define va_copy(d,s) __builtin_va_copy(d,s)
The solution is to use the kernels version of stdarg.h
The second build issue :
update_trans.c:1608:30: error: 'struct task_struct' has no member named
'state'; did you mean '__state'?
is due Linux commit 2f064a59a11ff9bc22e52e9678bc601404c7cb34
(sched: Change task_struct::state). The state field was
changed and the barrier macros READ_ONCE()/WRITE_ONCE()
are used to access it now which is the proper thing to do.
Since the check in update_trans.c is equivalent to testing
if the kernel thread is not running, since TASK_RUNNING == 0,
we can just change the code to use task_is_running(). The
task_is_running() was introduced in 5.13.
Lustre-change: https://review.whamcloud.com/47133
Lustre-commit: c04adbcd76725a360f411f09c63df785bf7db426
Test-Parameters: trivial
Change-Id: Ib5985b187c3013fbc513e9962a5f27bed4996f5b
Signed-off-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
51540
b2_15
J ✗1B ✓T ✓R +1/1
LU-16463 llite: replace lld_nfs_dentry flag with opencache handling
reviewing Etienne AUJAMES · all green — ready to land (not in b2_15-next yet)
stalled 1214d
M +42 −39
1214d
LU-16463 llite: replace lld_nfs_dentry flag with opencache handling
reviewing Etienne AUJAMES · all green — ready to land (not in b2_15-next yet)
stalled 1214d
M +42 −39
1214d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity-quota@zfs:test_1e | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
build #96024 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1
no vote yet: Andreas Dilger
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS1 uploaded 1220d ago · NEW · backport · open in Gerrit ↗
commit message
LU-16463 llite: replace lld_nfs_dentry flag with opencache handling The lld_nfs_dentry flag was created for the case of caching the open lock (opencache) when fetching fhandles for NFSv3. This same path is used by the fhandle APIs. This lighter open changes key behaviors since the open lock is always cached which we don't want. Lustre introduced a way to modify caching the open lock based on the number of opens done on a file within a certain span of time. We can replace lld_nfs_dentry flag with the new open lock caching. This way for fhandle handling we match the open lock caching behavior of a normal file open. In the case of NFS this code path will always be called with the internal kernel thread 'nfsd'. If we are called by this kernel thread set the open threshold to zero which means always cache the open lock. Once Lustre is only supported on Linux kernels above 5.5 we can remove this special NFSv3 work around. Lustre-change: https://review.whamcloud.com/49237 Lustre-commit: d7a85652f4fcb83192262cfc1a0211890f404c7c Change-Id: Iba27f7ad4579fdd1f34e1e35c2cbd547e15f129a Signed-off-by: James Simmons <jsimmons@infradead.org> Reviewed-by: Andreas Dilger <adilger@whamcloud.com> Reviewed-by: Etienne AUJAMES <eaujames@ddn.com> Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
▶Parked (WIP / self-blocked)
(1)
12275
master
J –B ✗T –R -1/2−
LU-4665 utils: Specified OSTs setstripe for directories
carrying Jinshan Xiong · parked by your own -1
XL +685 −570
456d
LU-4665 utils: Specified OSTs setstripe for directories
carrying Jinshan Xiong · parked by your own -1
XL +685 −570
456d
reviews:
James Simmons -1
no vote yet: Andreas Dilger
owner Jinshan Xiong · uploader James Simmons · PS6 uploaded 4384d ago · NEW · open in Gerrit ↗
commit message
LU-4665 utils: Specified OSTs setstripe for directories Set specified OSTs for directories. Signed-off-by: Jinshan Xiong <jinshan.xiong@intel.com> Change-Id: Ia42f017622fc1677d805074c4477269845ee7d07
298 open
▶Re-review needed — new patchset since your vote
(35)
66552
master
J –B ✓T ✓R +1/2
LU-1158 general: rename timestamp fields to _ns
reviewing Sohei Koyama · PS11→PS13 since your +1
11 unresolved
L +327 −320
11h
LU-1158 general: rename timestamp fields to _ns
reviewing Sohei Koyama · PS11→PS13 since your +1
11 unresolved
L +327 −320
11h
build #134743 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
patchsets:
PS9 09-29
PS10 10-15
PS11 10-19
PS12 10-28
PS13 10-29
+8 earlier
PS1 06-09 PS2 06-09 PS3 06-18 PS4 06-18 PS5 06-22 PS6 08-03 PS7 08-17 PS8 09-10your previous vote: +1 on PS11 (2026-10-23 14:13) — now at PS13
threads: 11 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:16 — (minor) The coverage list doesn't quite match the diff. Two more renames are in here: `md_op_data.op_mod_time` -> `op_mod_time_ns` in lustre
Gerrit AI review for Lustre
(minor) The coverage list doesn't quite match the diff. Two more renames are in here: `md_op_data.op_mod_time` -> `op_mod_time_ns` in lustre/include/obd.h, and the helper `memfs_get_btime()` -> `memfs_get_btime_ns()` in lustre/osd-wbcfs/wbcfs.h. Worth adding so nothing in the diff is a surprise.
reply Gerrit AI review for Lustre COMMIT_MSG:18 — (minor) "pure rename with no functional change" isn't strictly true for `lctl getattr`. `OPU()` stringifies the member name, so renaming the
Gerrit AI review for Lustre
(minor) "pure rename with no functional change" isn't strictly true for `lctl getattr`. `OPU()` stringifies the member name, so renaming the macro argument changes the printed labels from `atime:`/`mtime:`/`ctime:` to `atime_ns:`/`mtime_ns:`/`ctime_ns:`. Probably the intent, but it is a user-visible output change and worth calling out here.
reply Gerrit AI review for Lustre COMMIT_MSG:14 — (typo) `ofo_atime_ondisk` isn't an interval tunable. It caches the object's on-disk atime (an epoch timestamp). If the message is refreshed,
Gerrit AI review for Lustre
(typo) `ofo_atime_ondisk` isn't an interval tunable. It caches the object's on-disk atime (an epoch timestamp). If the message is refreshed, list it with the timestamp fields instead.
reply Gerrit AI review for Lustre lustre_idl.h:797 — (minor) This says obdo times are nanoseconds whenever the flag is negotiated, but the obdo packed into DNE update llog records is always in
Gerrit AI review for Lustre
(minor) This says obdo times are nanoseconds whenever the flag is negotiated, but the obdo packed into DNE update llog records is always in seconds, regardless of the flag:
update_records.c: obdo_from_la(obdo, attr, attr->la_valid);
/* LU-1158: update llog keeps seconds, readable by any peer */
obdo_times_to_sec(obdo);
Those records are read from remote MDTs during recovery too. If the patch is refreshed, could the comment mention that update llog records are the exception, so nobody later treats them as negotiated-unit obdos?
reply Andreas Dilger lu_object.h:480 — (minor) should be fixed if patch is refreshed.
Gerrit AI review for Lustre
(style) These four comments still say "in seconds since Epoch" while the fields are now `la_mtime_ns`/`la_atime_ns`/`la_ctime_ns`/`la_btime_ns` and hold nanoseconds. Given the whole point of the patch is making the unit obvious, the comment right above each field contradicting the name is the one place it will mislead someone. Same for the other three below.
Andreas Dilger
(minor) should be fixed if patch is refreshed.
reply Gerrit AI review for Lustre lustre_dlm.h:580 — (suggestion) `ktime_t` is already nanoseconds by definition, so the suffix adds little here, and with the `ns_` namespace prefix it reads as
Gerrit AI review for Lustre
(suggestion) `ktime_t` is already nanoseconds by definition, so the suffix adds little here, and with the `ns_` namespace prefix it reads as `ns_..._ns`. It also splits the field group: `ns_max_age` and `ns_dirty_age_limit` are the same type with the same "stored in ns" comment and keep their names. Either all three or none would be easier to follow.
reply Gerrit AI review for Lustre llite_internal.h:158 — (minor) `lli_btime` is left alone while its three siblings gain `_ns`. It holds nanoseconds too:
Gerrit AI review for Lustre
(minor) `lli_btime` is left alone while its three siblings gain `_ns`. It holds nanoseconds too:
llite_lib.c: lli->lli_btime = body->mbo_btime_ns;
file.c: stat->btime = ns_to_timespec64(lli->lli_btime);
Since `la_btime` and `mbo_btime` both became `_ns`, should this be `lli_btime_ns` as well?
reply Gerrit AI review for Lustre mdc_lib.c:433 — (minor) On the wire the `_ns` suffix is only true when the peer negotiated nanosecond time. Against a pre-2.17 MDS this stores seconds into
Gerrit AI review for Lustre
(minor) On the wire the `_ns` suffix is only true when the peer negotiated nanosecond time. Against a pre-2.17 MDS this stores seconds into a field that now claims to hold nanoseconds:
rec->sa_atime_ns = timespec64_to_ns(...);
if (!imp || !imp_connect_nanosec_time(imp))
rec->sa_atime_ns /= NSEC_PER_SEC;
The same shape shows up at every compat site the patch touches - mdc_create_pack(), mdc_open_pack(), mdc_unlink_pack(), mdc_link_pack(), mdc_rename_pack(), mdc_migrate_pack(), mdc_xattr_common(), mdc_rmfid(), mdt_pack_attr2body(), mdt_lvb2reply(), ofd_lvbo_fill(), mdt_lvbo_fill() and osc_ldlm_glimpse_ast().
The in-memory fields (`la_*_ns`, `cat_*_ns`, `lli_*_ns`) really are always nanoseconds, so those renames read well. For the wire members in `mdt_rec_*`, `mdt_body`, `ost_lvb` and `obdo` the unit depends on the connection, so the name is now slightly misleading in exactly the code that is hardest to get right. Would leaving the wire members unsuffixed, and documenting the unit next to the OBD_CONNECT_NANOSEC_TIME handling instead, be clearer?
reply Gerrit AI review for Lustre mdd_internal.h:174 — (minor) `mod_atime_set` also holds a nanosecond atime (assigned from `la_atime_ns` and `la_ctime_ns` in mdd_fix_attr()) and is the mdd count
Gerrit AI review for Lustre
(minor) `mod_atime_set` also holds a nanosecond atime (assigned from `la_atime_ns` and `la_ctime_ns` in mdd_fix_attr()) and is the mdd counterpart of `ofo_atime_ondisk`, which this patch did rename. Should it get `_ns` too?
reply Gerrit AI review for Lustre ofd_io.c:469 — (style) This comment now reads "refresh atime every ofd_atime_diff_ns seconds" - the name was updated on this line but the unit word below i
Gerrit AI review for Lustre
(style) This comment now reads "refresh atime every ofd_atime_diff_ns seconds" - the name was updated on this line but the unit word below it was not.
reply Gerrit AI review for Lustre obd.c:1845 — (minor) `OPM()` pastes `#member` into the printf, so these three now print `atime_ns:`/`mtime_ns:`/`ctime_ns:` instead of `atime:`/`mtime:`/
Gerrit AI review for Lustre
(minor) `OPM()` pastes `#member` into the printf, so these three now print `atime_ns:`/`mtime_ns:`/`ctime_ns:` instead of `atime:`/`mtime:`/`ctime:`. Anything parsing `lctl getattr` output sees a different key. Also inconsistent with `obdo_print()` above, whose format string still labels the same ns values `atime:`/`mtime:`/`ctime:`. Should both be updated the same way?
owner Sohei Koyama · uploader Sohei Koyama · PS13 uploaded 6d ago · NEW · open in Gerrit ↗
commit message
LU-1158 general: rename timestamp fields to _ns Now that the in-memory timestamp fields hold epoch nanoseconds, rename them from xxx_(a/m/c)time to xxx_(a/m/c)time_ns so the field name reflects the unit. This covers the struct lu_attr and cl_attr fields, the cached llite inode times, md_op_data op_mod_time, and the nanosecond interval tunables (ofd_atime_diff, OFD_DEF_ATIME_DIFF, ofo_atime_ondisk, mdd_atime_diff, MAX_ATIME_DIFF and the ldlm ns_ctime_age_limit). The wire fields of struct obdo, mdt_body, ost_lvb and mdt_rec_* keep their names, since their unit depends on whether the peer negotiated OBD_CONNECT_NANOSEC_TIME; document that at the flag. This patch is a pure rename with no functional change. Assisted-by: ClaudeCode:Opus-5.5 Signed-off-by: Sohei Koyama <skoyama@ddn.com> Change-Id: I41626d75dab0b9735c2a3e33d7f94309afc30510
66551
master
J –B ✓T ✓R +1/2
LU-1158 general: convert timestamps to nanoseconds
reviewing Sohei Koyama · PS11→PS13 since your +1
19 unresolved
XL +1353 −385
11h
LU-1158 general: convert timestamps to nanoseconds
reviewing Sohei Koyama · PS11→PS13 since your +1
19 unresolved
XL +1353 −385
11h
build #134766 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
patchsets:
PS9 09-29
PS10 10-15
PS11 10-19
PS12 10-28
PS13 10-29
+8 earlier
PS1 06-09 PS2 06-09 PS3 06-18 PS4 06-18 PS5 06-22 PS6 08-03 PS7 08-17 PS8 09-10your previous vote: +1 on PS11 (2026-10-23 14:10) — now at PS13
threads: 18 need your reply · 0 waiting on others · 1 own notes · 0 bot
reply Andreas Dilger COMMIT_MSG:102 — These are already run by regular test sessions.
Andreas Dilger
These are already run by regular test sessions.
reply Andreas Dilger COMMIT_MSG:103 — These are already run by regular test sessions.
Andreas Dilger
These are already run by regular test sessions.
reply Andreas Dilger COMMIT_MSG:106 — These are also run by regular test sessions.
Andreas Dilger
These are also run by regular test sessions.
reply Andreas Dilger COMMIT_MSG:107 — These are also run by regular test sessions.
Andreas Dilger
These are also run by regular test sessions.
reply Andreas Dilger COMMIT_MSG:113 — This is already run by a regular test session.
Andreas Dilger
This is already run by a regular test session.
note James Simmons patchset comment — No interop handling :-( I would suggest splitting this patch into 2 new patches. One for clients and one for servers. That way we can see if
James Simmons
No interop handling :-( I would suggest splitting this patch into 2 new patches. One for clients and one for servers. That way we can see if "interop" works properly.
reply Andreas Dilger mdd.atime_diff.4:33 — This is intentional. It doesn't make sense to make the atime diff hundreds of years.
Gerrit AI review for Lustre
(minor) This upper bound doesn't match the code. atime_diff_store() accepts anything up to S64_MAX ns, which is 9223372036.854775807 seconds, and 8589934591 doesn't match any limit in mdd_lproc.c. Should this read 9223372036, or should the store enforce a smaller limit?
Andreas Dilger
This is intentional. It doesn't make sense to make the atime diff hundreds of years.
reply Andreas Dilger llite_lib.c:653 — (style) I would write "truncates times to seconds, so" but not worthwhile to refresh just for that.
Andreas Dilger
(style) I would write "truncates times to seconds, so" but not worthwhile to refresh just for that.
reply Andreas Dilger llite_lib.c:658 — Should we make "0" or ((__u64)INT32_MIN * NSEC_PER_SEC) as the minimum time (Unix Epoch or 1901) to extend the future range by another few h
Andreas Dilger
Should we make "0" or ((__u64)INT32_MIN * NSEC_PER_SEC) as the minimum time (Unix Epoch or 1901) to extend the future range by another few hundred years? I don't think there is much value to storing file timestamps to Medieval times, and for historical documents I think they need to store their origin date in xattrs or other internal metadata instead of the file's timestamps... Not a blocker, just an idea... We have a few hundred years to decide. ;-)
reply Gerrit AI review for Lustre pcc.c:2743 — (style) This isn't a bug, but the braces around the single inode_set_atime_to_ns() statement aren't needed (checkpatch warns about braces on
Gerrit AI review for Lustre
(style) This isn't a bug, but the braces around the single inode_set_atime_to_ns() statement aren't needed (checkpatch warns about braces on a single-statement block). If the patch is refreshed, they can go.
reply Gerrit AI review for Lustre mdd_lproc.c:71 — (minor) The only consumer of mdd_atime_diff is mdd_fix_attr(), which tests:
Gerrit AI review for Lustre
(minor) The only consumer of mdd_atime_diff is mdd_fix_attr(), which tests:
la->la_atime <= (oattr->la_atime + mdd_obj2mdd_dev(obj)->mdd_atime_diff)
With both values now in nanoseconds, that sum overflows s64 well inside the range this store accepts. sysfs_memparse() with "GB" caps the input at 8589934591 seconds (the bound in mdd.atime_diff.4), but with a current atime of about 1.79e18 ns any atime_diff above about 7.4e9 s wraps the sum negative. The filter then never drops an update, so every close writes atime, which is the opposite of what a large value is meant to do. Before this patch the same sum was in seconds and could not overflow for any value a person would enter.
The check here can't trigger either: the largest value sysfs_memparse() can return is about 8.59e18, below S64_MAX. Would it be better to cap atime_diff at something sane here, or to make the comparison in mdd_fix_attr() overflow-safe (for example with check_add_overflow())?
reply Gerrit AI review for Lustre mdt_handler.c:3519 — (minor) mdt_data_sync() fills repbody->oa times from ma_attr, now in nanoseconds, without calling obdo_times_to_sec() for a client lacking O
Gerrit AI review for Lustre
(minor) mdt_data_sync() fills repbody->oa times from ma_attr, now in nanoseconds, without calling obdo_times_to_sec() for a client lacking OBD_CONNECT_NANOSEC_TIME. ofd_sync_hdl() and ofd_fallocate_hdl() were converted. mdt_punch_hdl() and mdt_fallocate_hdl() have the same gap through mdt_dom_obj_lvb_update(), which copies lvb_[amc]time into repbody->oa. Today osc_sync_interpret() and osc_io_setattr_end() only take o_blocks from these replies, so nothing visible breaks yet. Still, the commit message says every timestamp path is converted. If the patch is refreshed, could these be converted too, for consistency with ofd?
owner Sohei Koyama · uploader Sohei Koyama · PS13 uploaded 6d ago · NEW · open in Gerrit ↗
commit message
LU-1158 general: convert timestamps to nanoseconds Switch the in-memory and wire timestamp values from epoch seconds to epoch nanoseconds. The conversion is localised to the edges where timestamps enter or leave Lustre; the internal plumbing just carries the same field values through unchanged. - sources: inode_get_[amc]time_ns() and ktime_get_real_ns() now provide nanoseconds, and the OSD layer reads and writes the on-disk inode timespec at nanosecond resolution. The client superblock sets s_time_gran = 1 when the MDT negotiated nanosecond timestamps, so that current_time() keeps the sub-second part for locally generated timestamps, and keeps whole seconds against an MDT that did not, and the osc layer generates whole seconds for I/O to an OST that did not, so that a cached time never moves backwards once it is fetched again. It sets s_time_min and s_time_max to the s64 nanosecond range so that the VFS clamps out-of-range timestamps. - sinks: the stat/statx paths convert the s64 nanosecond value back to a timespec64 with the standard ns_to_timespec64(). - struct ost_lvb carries full nanoseconds in lvb_[amc]time (s64); its former split-nanosecond u32 companions become lvb_padding_1..4. struct ost_lvb_v1 stays in seconds for wire compatibility. - the changelog cr_time and HSM hui_* user-visible fields keep their existing on-disk and wire formats and are left unchanged. - the ofd and mdd atime-difference thresholds, the mdt ctime age limit and the cached llite inode times are kept in nanoseconds internally, and the atime_diff tunables accept and print fractional seconds and reject unit suffixes. - the llog object mtime keeps its once-per-second update filter and is stored scaled to nanoseconds. - the LFSCK lost+found marker ctime stays 1 second on disk, so objects marked before an upgrade are still recognised. - mdd.atime_diff.4 and ofd.atime_diff.4 document the tunables. All timestamp fields and the related interval knobs keep their historic names here and gain a _ns suffix in the following patch, once they all hold nanoseconds. s64 nanoseconds since the epoch covers timestamps from 1677-09-21 to 2262-04-11. Since the units of the timestamps on the wire change, the same patch carries the compatibility layer so that every commit on master interoperates with peers that still use seconds. Advertise OBD_CONNECT_NANOSEC_TIME from the client MDC and OSC connections, negotiate it on the MDT and OST connections, and add it to the connect flags used by the MDT when connecting to OSTs and other MDTs. A node converts wire timestamps to seconds when sending to a peer that did not negotiate the flag, and back to nanoseconds when receiving from such a peer. The conversion to seconds floors (nsec_time_to_sec()), so that it is the exact inverse of the scaling on receive, also before 1970. The scaling on receive (sec_time_to_nsec()) clamps to the whole seconds that fit in s64 nanoseconds, the same range the client superblock advertises, so a time beyond year 2262 from such a peer is clamped instead of wrapping to a negative value. Conversion is applied on every path that carries a timestamp: the MDT inode times (mdt_pack_attr2body), the setattr, create, open, close, unlink, link, rename, migrate and setxattr reint records, the Data-on-MDT glimpse reply (mdt_lvb2reply / mdc_body2lvb), rmfid, the DNE stripe refresh (lmv), the OST lvb (ofd_lvbo_fill / osc_lock_lvb_update) and the OST obdo (lustre_set/get_wire_obdo, the BRW timestamp refresh in osc_build_rpc and the ofd reply handlers). The DNE update llog records keep their obdo times in seconds, so records written before an upgrade or by another version replay correctly. On the client the inode times are converted where the reply body enters llite. mdc_get_lustre_md() scales them keyed on the import of the request that carried the reply -- the target MDT that answered, which is correct even under LMV where the reply may come from an MDT other than index 0. ll_update_times() and the getstripe ioctl do the same for the bodies they read directly. Keying on the connection flag is exact and avoids the near-epoch and far-future misreads of a magnitude heuristic. Add sanity test_436a-436t, configuration-aware tests that verify timestamps warm and cold, including near-epoch and boundary values (pre-1970 with sub-seconds, y2038, beyond 2262), nanosecond precision, per-MDT directory times, Data-on-MDT, FLR, cross-MDT operations, MDT/OST failover, setattr replay and cross-client coherency. Each test detects the negotiated nanoseconds_times flag per target and asserts exact nanoseconds against a new peer or second granularity against a legacy peer, so it is meaningful on uniform and mixed-version clusters alike. Enable pjdfstest utimensat_08, which checks sub-second times, against an MDT that negotiated nanosecond timestamps, and print the actual and expected times on a sanity test_39m failure. Assisted-by: ClaudeCode:Opus-5.5 Test-Parameters: testlist=sanity env=ONLY="36 39 436" Test-Parameters: mdscount=2 mdtcount=4 testlist=sanity env=ONLY="36 39 436" Test-Parameters: ostcount=4 testlist=sanity env=ONLY="36 39 436" Test-Parameters: fstype=zfs testlist=sanity env=ONLY="36 39 436" Test-Parameters: fstype=zfs mdscount=2 mdtcount=4 testlist=sanity env=ONLY="36 39 436" Test-Parameters: clientcount=2 testlist=sanity env=ONLY="36 39 436" Test-Parameters: serverversion=2.16 testlist=sanity env=ONLY="36 39 436" Test-Parameters: serverversion=2.15 mdscount=2 mdtcount=4 testlist=sanity env=ONLY="36 39 436" Test-Parameters: clientcount=2 serverversion=2.16 testlist=sanity env=ONLY="36 39 436" Test-Parameters: clientversion=2.16 testlist=sanity env=ONLY="36 39" Test-Parameters: clientversion=2.15 mdscount=2 mdtcount=4 testlist=sanity env=ONLY="36 39" Test-Parameters: testlist=pjdfstest Test-Parameters: serverversion=2.16 testlist=pjdfstest Signed-off-by: Sohei Koyama <skoyama@ddn.com> Change-Id: I79570bc5a66e7c15472af90d690d689d3aa36269
66621
master
J –B ✓T …R 0/2
LU-20357 obdclass: clear idle NID statistics on server
reviewing Jinshan Xiong · PS31→PS34 since your +1
9 unresolved
L +653 −105
11h
LU-20357 obdclass: clear idle NID statistics on server
reviewing Jinshan Xiong · PS31→PS34 since your +1
9 unresolved
L +653 −105
11h
no vote yet: Robert Read, Andreas Dilger, Gerrit Gatekeeper, Alex Zhuravlev, Oleg Drokin, Timothy Day
patchsets:
PS30 09-09
PS31 09-10
PS32 10-03
PS33 10-13
PS34 11-04
+29 earlier
PS1 06-12 PS2 06-12 PS3 06-12 PS4 06-12 PS5 06-12 PS6 06-13 PS7 06-14 PS8 06-15 PS9 06-25 PS10 07-01 PS11 07-01 PS12 07-16 PS13 07-16 PS14 07-16 PS15 07-16 PS16 07-20 PS17 07-21 PS18 08-04 PS19 08-04 PS20 08-05 PS21 08-12 PS22 08-12 PS23 08-16 PS24 08-20 PS25 08-26 PS26 08-26 PS27 08-28 PS28 09-03 PS29 09-05your previous vote: +1 on PS31 (2026-09-12 15:04) — now at PS34
threads: 9 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger COMMIT_MSG:47 — The commit message can be edited without upsetting the testing status
Gerrit AI review for Lustre
(minor) This bullet reads as a delta from an earlier revision of this patch rather than a change against master. obd_nid_stats_insert() and its retry loop are introduced here; master's obd_nid_stats_get() has no retry and never sleeps, so there is no pre-existing bug being fixed. If the patch is refreshed, dropping this line (or folding it into the description of the new retry path) would keep the message describing the change against master.
Andreas Dilger
The commit message can be edited without upsetting the testing status
reply Andreas Dilger patchset comment — I agree with Jinshan, it isn't our job to store these stats forever, that is the job of an external tool.
Oleg Drokin
the comments toward the end of the patch (files wise) are really super verbose for no reason whatsoever adnfaithfully replicate the logic that one could see in the code. the ai reviewer noted in some places but there are more. We really don't want that for multiple reasons. The other thing I think this is missing is a permanent storage for evicted records. Not everybody would want it (same as not everybody would want to expire these records or to ever store them) but basically I think we should have 3+1 modes: 1. no stats (we already have them?) 2. stats indefinitely (that we definitely have) 3. stats for a while (this patch is adding) 4. permanence, when an idle expor stats is evicted, we should have some configurable upcall or some other such mechanism that would be invoked and the about to be evicted stats to be dumped into. This would have two-fold benefits: for people that need it - they can store indefinite amount of this dataon storage that is not kernel RAM. Then it's also possible to shrink it some more even for temp stuff (and again save some RAM) and finally we might also want to impose a numerical number of idle exports in addition to timeout-based and that way an attacker that would try to do a DOS attack by overflowing kernel memory with a lot of random connections would also be fended off. I don't know if you'd want to do it as a separate patch or part of this one but seems important enough of a usecase? And yes the explanation / fix about that lack of MGS stats evicting seems needed too?
Jinshan Xiong
1. No, we don't have them 2. Yes, this is what we have before this patch 3. Yes 4. The idea is if people need it, they should poll the metrics periodically - this is the standard solution in industry. It gives them one hour to do so. Having a upcall is more complicated. I tend to think the MGS should not have the nid_stats in the first place, because it is not useful at all. Therefore, I just leave it alone - if I did that to the MGS, I will have to touch a lot of places that will be removed later. > Then it's also possible to shrink ... fended off. I don't know how to identify the temp stuff in the first place. It's probably worth doing it after we have a hit. I agree the AI is wordy about comments but let's land it as-is.
Andreas Dilger
I agree with Jinshan, it isn't our job to store these stats forever, that is the job of an external tool. As for the usefulness of the NID stats, that is environment-specific. On some deployments, the storage admins do not have the ability to monitor the clients directly, so this is the way to determine if there are clients imposing high load on a particular server.
reply Gerrit AI review for Lustre mdt.exports.clear.4:26 — (minor) If the patch is refreshed: ldebugfs_nid_stats_clear_seq_write() only calls lprocfs_stats_clear() on nid_stats. The per-NID nid_ldlm_
Gerrit AI review for Lustre
(minor) If the patch is refreshed: ldebugfs_nid_stats_clear_seq_write() only calls lprocfs_stats_clear() on nid_stats. The per-NID nid_ldlm_stats behind exports/<nid>/ldlm_stats are not touched, so "resets the statistics of every NID" says more than the code does. Maybe say "resets exports/<nid>/stats", or also clear nid_ldlm_stats there?
reply Andreas Dilger mdt.nid_stats_idle_time.4:42 — I don't think anyone cares that much?
Gerrit AI review for Lustre
(minor) The GC pass only runs every PET_GC_PERIOD (60s) in ping_evictor_main(), so reclaim actually happens somewhere in [TIMEOUT, TIMEOUT + 60) seconds and any value below 60 behaves much like 60 - pinger.c calls this "the effective lower bound on nid_stats_idle_time". Since the documented valid range starts at 0/1, it would help an admin to say here that entries are reclaimed on a 60 second scan and not at exactly TIMEOUT.
Andreas Dilger
I don't think anyone cares that much?
reply Andreas Dilger genops.c:553 — Seems reasonable, though could be done in a follow-on patch if needed.
Gerrit AI review for Lustre
(minor) Only mdt and obdfilter get the target mark, so the MGS never gets an idle-stats scan - but mgs_export_stats_init() creates the same nid_stat and mgs.MGS.exports.<nid>/ debugfs tree for every client that ever mounts, mgs_setup() already calls obd_obt_init() (so obt_nid_stats_idle_time is 3600), and mgs_handler.c already starts the ping evictor. In the high-churn cloud case this patch targets, every VM connects to the MGS at mount, so mgs.MGS.exports.* keeps growing while the MDT/OST trees are reclaimed. Was leaving the MGS out deliberate? Adding LUSTRE_MGS_NAME here plus a mgs.*.nid_stats_idle_time attribute in mgs_attrs[] would cover it (and the new exports.clear man page could then name mgs.exports.clear too, since lproc_mgs.c creates that file as well).
James Simmons
Good question. I assume this is the case. If refreshed maybe a comment about this
Andreas Dilger
Seems reasonable, though could be done in a follow-on patch if needed.
reply Andreas Dilger lprocfs_status_server.c:432 — If only the LLM _generating_ the comments in the first place was so concise...
Gerrit AI review for Lustre
(style) This isn't a bug, but the wordiness noted on an earlier patchset was only trimmed at the three flagged spots; the largest blocks are still here. 22 lines of memory-model narration for an atomic_inc_return()/test_bit() pair (and similar blocks at the top of ldebugfs_nid_stats_clear_seq_write(), ldebugfs_exp_export_seq_show() and obd_nid_stats_insert()) is well beyond what the surrounding file does. Something like "increment before testing OBDF_STOPPING; atomic_inc_return() orders the two and pairs with the smp_mb() in class_cleanup()" carries the same information. Worth shortening only if the patch is refreshed for another reason.
Andreas Dilger
If only the LLM _generating_ the comments in the first place was so concise...
reply Gerrit AI review for Lustre lprocfs_status_server.c:886 — (minor) This isn't a bug, but is the second half of this comment accurate? Every obd_nid_lock critical section in the tree (nid_stat_release
Gerrit AI review for Lustre
(minor) This isn't a bug, but is the second half of this comment accurate? Every obd_nid_lock critical section in the tree (nid_stat_release_ref(), obd_nid_stats_insert(), lprocfs_evict_idle_nid_stats(), ldebugfs_nid_stats_clear_seq_write(), lprocfs_free_per_client_stats()) only does list moves, refcount and stats clearing. None of them takes exp_lock, so obd_nid_lock -> exp_lock nesting doesn't seem to exist anywhere. Dropping the ref after spin_unlock() is fine, but if the patch is refreshed, the comment could just say it is done outside exp_lock to keep the two locks unnested. Otherwise a later reader may go looking for an ordering constraint that isn't there.
reply Gerrit AI review for Lustre obd_config.c:843 — (minor) Why does obd_nid_stats_hash need to outlive class_cleanup() now? All three lprocfs_free_per_client_stats() callers run from ldto_dev
Gerrit AI review for Lustre
(minor) Why does obd_nid_stats_hash need to outlive class_cleanup() now? All three lprocfs_free_per_client_stats() callers run from ldto_device_fini(), i.e. inside class_cleanup() before the old destroy point:
class_cleanup()->obd_precleanup()->ldto_device_fini()->mdt_fini()->mdt_tunables_fini()
ofd_device_fini()->ofd_procfs_fini()
mgs_device_fini()->lproc_mgs_cleanup()
By then the evictor and exports.clear have been fenced off by the obd_nid_stats_inprogress wait, and obd_exports_barrier() has drained the exports. If nothing touches the hash after that, the new OBDF_NID_STATS_HASH flag, the class_setup() special case and the exported obd_nid_stats_hash_destroy() (only called from genops.c, inside obdclass) could all go. If there is a path that needs it, could the commit message say which one?
Separately, "if this device was set up before" only holds after a failed setup. OBDF_STARTING is cleared only on the class_setup() error path, so a device that was set up successfully and then cleaned up can't be set up again.
reply Gerrit AI review for Lustre obd_config.c:1183 — (style) This isn't a bug, but obd_nid_stats_hash_destroy() is only called from class_free_dev() in genops.c, which is in the same obdclass m
Gerrit AI review for Lustre
(style) This isn't a bug, but obd_nid_stats_hash_destroy() is only called from class_free_dev() in genops.c, which is in the same obdclass module. It doesn't seem to need an EXPORT_SYMBOL().
owner Jinshan Xiong · uploader Jinshan Xiong · PS34 uploaded 12h ago · NEW · open in Gerrit ↗
commit message
LU-20357 obdclass: clear idle NID statistics on server Per-NID stats on MDTs and OSTs are kept forever after a client goes away, so with high client churn they keep growing in memory and in debugfs. Add nid_stats_idle_time (default 3600s, 0 disables) to free them once no export has used them for that long. - When the last export of a NID goes away, its nid_stat is stamped with nid_last_idle and moved to the time-ordered obd_nid_stats_idle list. A reconnect from that NID takes it back. - The ping evictor now also wakes every 60s and frees expired entries on every MDT and OST, found through a new xarray mark on obd_devs. - An entry being freed is marked NID_STATS_DISPOSE, and a connect that finds it waits for the free to finish. Debugfs is removed before the entry leaves the hash, so the new entry does not hit -EEXIST. - nid_stat is freed with RCU since hash readers may still see it, and obd_nid_stats_hash is now destroyed in class_free_dev(). - class_cleanup() waits for in-flight frees via obd_nid_stats_inprogress. - exports.clear now clears active stats and frees all idle ones, and exports/<nid>/export reports idle_seconds for an idle NID. - Rename obd_nid_stats_get/put() to obd_nid_stats_insert/remove(). - The MGS is not covered: its per-NID stats are of no use and should be removed instead. - Add man pages for nid_stats_idle_time and exports.clear, and sanity test_921. Signed-off-by: Jinshan Xiong <jinshanx@google.com> Change-Id: I511de0c1205105708e9aa89fe9f1cff915dbe2b8
66739
master
J –B ✓T ✓R 0/2
LU-19921 sec: add disable_rootsquash mount option
reviewing wangdi · PS1→PS57 since your -1 — your objection was dropped
pw_shepherd
1 unresolved
L +280 −43
17h
LU-19921 sec: add disable_rootsquash mount option
reviewing wangdi · PS1→PS57 since your -1 — your objection was dropped
pw_shepherd
1 unresolved
L +280 −43
17h
build #135121 SUCCESS · tests all Maloo sessions
no vote yet: Jinshan Xiong, Bruno Faccini, Sebastien Buisson, Andreas Dilger
patchsets:
PS53 08-26
PS54 08-27
PS55 09-07
PS56 10-23
PS57 11-01
+52 earlier
PS1 06-18 PS2 06-19 PS3 06-20 PS4 06-22 PS5 06-22 PS6 07-10 PS7 07-12 PS8 07-20 PS9 07-24 PS10 07-27 PS11 07-29 PS12 07-30 PS13 08-02 PS14 08-02 PS15 08-02 PS16 08-02 PS17 08-02 PS18 08-04 PS19 08-05 PS20 08-05 PS21 08-06 PS22 08-06 PS23 08-07 PS24 08-07 PS25 08-07 PS26 08-07 PS27 08-08 PS28 08-09 PS29 08-09 PS30 08-10 PS31 08-11 PS32 08-13 PS33 08-13 PS34 08-13 PS35 08-13 PS36 08-14 PS37 08-15 PS38 08-16 PS39 08-17 PS40 08-18 PS41 08-18 PS42 08-18 PS43 08-19 PS44 08-20 PS45 08-21 PS46 08-22 PS47 08-22 PS48 08-22 PS49 08-23 PS50 08-24 PS51 08-25 PS52 08-25your previous vote: -1 on PS1 (2026-06-18 21:52) — now at PS57
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Sebastien Buisson tgt_gssiam.c:443 — It looks like this concern is valid?
Gerrit AI review for Lustre
(defect) Is the grant meant to be limited by what the client requested? Right now nothing masks it with the entry's request options (gssiam->gd_options, which also forms part of the cache key). Any helper reply with bit 0x2 set adds GSSIAM_AUTH_DISABLE_ROOT_SQUASH, even when the mount did not pass -o disable_rootsquash.
The PS9 reply to the question about why the client needs a mount option said that a user who holds the no-rootsquash right should still be able to mount with root squash by leaving the option off. The commit message promises the same ("unless explicitly requested at mount and authorized"). With a helper that reports the principal's rights rather than echoing the request, that does not hold:
mount without disable_rootsquash -> lid_options = 0 -> argv[5] = "0"
helper writes "rw:600:2:alice"
-> perm = RW | DISABLE_ROOT_SQUASH
-> tgt_gssiam_info_alloc() keeps it
-> gssiam_get_nodemap() -> nodemap_gssiam_attrs_update(..., allow_root = true)
Only the mock l_gssiam_auth checks the request. The l_gssiam_auth.8 text ("to allow disabling root squash if requested by the client") reads as if the kernel does the check.
Would it be safer to test `val & gssiam->gd_options & GSSIAM_OPT_DISABLE_ROOT_SQUASH` here? The OST/remote-MDT callback path goes through this same parser, so that one check would cover both paths.
Sebastien Buisson
It looks like this concern is valid?
tags: pw_shepherd
owner wangdi · uploader wangdi · PS57 uploaded 2d ago · NEW · open in Gerrit ↗
commit message
LU-19921 sec: add disable_rootsquash mount option
Add the -o disable_rootsquash mount option, allowing users to
explicitly request disabling root squash on GSSIAM mounts when
authorized by the external GSSIAM authority.
Specifically, this patch implements:
- Client Mount Option:
Adds -o disable_rootsquash parsing in lustre/llite/llite_lib.c
and packs GSSIAM_OPT_DISABLE_ROOT_SQUASH in the GSSIAM init ctx
options payload.
- Server Nodemap Privilege Raising:
When authorized by the external GSSIAM server
(GSSIAM_AUTH_DISABLE_ROOT_SQUASH), gssiam_get_nodemap() passes
allow_root=true to nodemap_gssiam_attrs_update(). The per-identity
dynamic child nodemap is permitted to raise allow_root via the
parent 'gssiam' nodemap's pre-configured NODEMAP_RAISE_PRIV_ADMIN
delegation capability. Root squash remains strictly enforced
(allow_root=false) by default unless explicitly requested at mount
and authorized by the GSSIAM server.
- Extended Upcall Downcall Format:
Extends the kernel/userspace downcall contract by adding an
":options" field to the downcall string format parsed in
tgt_gssiam.c ("mount_option:expire:options:principal"), allowing
l_gssiam_auth to pass authorized permission/option flags to the
kernel upcall cache.
- Dedicated GSSIAM Option Flags:
Defines enum gssiam_mount_option_flags (GSSIAM_OPT_RDONLY and
GSSIAM_OPT_DISABLE_ROOT_SQUASH) in lustre_idl.h, cleanly separating
the GSSIAM option space from generic OBD_CONNECT_* connection flags.
Signed-off-by: Di Wang <ddiwang@google.com>
Change-Id: I35af55f4ff4193195028b157758a7b30bb2e0f9d
68021
master
J –B ✓T ✓R +1/2
LU-19921 tests: add GSSIAM security test
reviewing wangdi · PS24→PS25 since your -1 — your objection was dropped
7 unresolved
XL +1368 −22
22h
LU-19921 tests: add GSSIAM security test
reviewing wangdi · PS24→PS25 since your -1 — your objection was dropped
7 unresolved
XL +1368 −22
22h
build #135123 SUCCESS · tests all Maloo sessions
reviews:
Sebastien Buisson +1
no vote yet: Jinshan Xiong, Bruno Faccini, Andreas Dilger
patchsets:
PS21 09-07
PS22 09-09
PS23 10-23
PS24 10-27
PS25 11-01
+20 earlier
PS1 08-14 PS2 08-15 PS3 08-16 PS4 08-17 PS5 08-18 PS6 08-18 PS7 08-18 PS8 08-19 PS9 08-20 PS10 08-21 PS11 08-22 PS12 08-22 PS13 08-22 PS14 08-23 PS15 08-24 PS16 08-25 PS17 08-25 PS18 08-26 PS19 08-27 PS20 09-04your previous vote: -1 on PS24 (2026-10-28 13:57) — now at PS25
threads: 7 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (minor) The subject says "tests:", but the patch also changes server behaviour, and the body doesn't describe it:
Gerrit AI review for Lustre
(minor) The subject says "tests:", but the patch also changes server behaviour, and the body doesn't describe it: - tgt_gssiam_verify() now rejects with -EPERM any principal starting with "mock_gssiam_" unless OBD_FAIL_SEC_GSSIAM_MOCK_TEST or OBD_FAIL_SEC_GSSIAM_EXPIRED_TOKEN is set. - l_gssiam_auth used to approve every token unconditionally. It now returns "deny" for anything other than the four mock tokens. - The new lustre_gssiam_mock.h header is shared by the kernel and the utilities. Together these mean the shipped reference upcall pair no longer authenticates anything on a server without fail_loc set. Could the body say so? It may also be worth choosing a component that covers the target/ptlrpc changes (e.g. "sec:").
reply Gerrit AI review for Lustre COMMIT_MSG:11 — (minor) This patch doesn't change test_300. It was added by the previous patch in the series ("LU-19921 sec: add disable_rootsquash mount op
Gerrit AI review for Lustre
(minor) This patch doesn't change test_300. It was added by the previous patch in the series ("LU-19921 sec: add disable_rootsquash mount option"), and the sanity-sec hunks here only touch dyn_nm_helper() and add test_301-310. Is the "test_300 rootsquash check updates" text left over from an earlier patchset?
reply Gerrit AI review for Lustre COMMIT_MSG:17 — (typo) The patch defines OBD_FAIL_SEC_GSSIAM_EXPIRED_TOKEN (0x1206), not OBD_FAIL_SEC_GSSIAM_EXP_CLIENT, so a `git log` grep for the real na
Gerrit AI review for Lustre
(typo) The patch defines OBD_FAIL_SEC_GSSIAM_EXPIRED_TOKEN (0x1206), not OBD_FAIL_SEC_GSSIAM_EXP_CLIENT, so a `git log` grep for the real name won't find this commit.
reply Gerrit AI review for Lustre COMMIT_MSG:21 — (typo) The constants are named GSSIAM_MOCK_RW, GSSIAM_MOCK_RO, GSSIAM_MOCK_EXPIRED and GSSIAM_MOCK_DENY (in lustre/include/lustre_gssiam_moc
Gerrit AI review for Lustre
(typo) The constants are named GSSIAM_MOCK_RW, GSSIAM_MOCK_RO, GSSIAM_MOCK_EXPIRED and GSSIAM_MOCK_DENY (in lustre/include/lustre_gssiam_mock.h), not MOCK_GSSIAM_*.
reply Gerrit AI review for Lustre l_gssiam_upcall.8:58 — (minor) l_gssiam_upcall.c also registers the long option `--expired` for this. Should the SYNOPSIS and this entry use `.BR -e ", " --expired
Gerrit AI review for Lustre
(minor) l_gssiam_upcall.c also registers the long option `--expired` for this. Should the SYNOPSIS and this entry use `.BR -e ", " --expired`, as the other options do?
reply Gerrit AI review for Lustre lustre_gssiam_mock.h:6 — (minor) tgt_gssiam_verify() and sptlrpc_rule_set_choose() also accept OBD_FAIL_SEC_GSSIAM_EXPIRED_TOKEN as the override, not only OBD_FAIL_S
Gerrit AI review for Lustre
(minor) tgt_gssiam_verify() and sptlrpc_rule_set_choose() also accept OBD_FAIL_SEC_GSSIAM_EXPIRED_TOKEN as the override, not only OBD_FAIL_SEC_GSSIAM_MOCK_TEST. Should this comment mention both?
reply Gerrit AI review for Lustre l_gssiam_auth.c:127 — (minor) With this branch the reference helper denies every real token. The comment above still says "Validate token by external server", and
Gerrit AI review for Lustre
(minor) With this branch the reference helper denies every real token. The comment above still says "Validate token by external server", and l_gssiam_auth(8) still says the helper validates the token against the enterprise GSSIAM service and returns the mapped permissions. If the patch is refreshed, could the comment and the man page say that this helper only recognizes the mock_gssiam_* test tokens? The man page could also note that the target accepts those only with fail_loc 0x1205/0x1206 set.
owner wangdi · uploader wangdi · PS25 uploaded 2d ago · NEW · open in Gerrit ↗
commit message
LU-19921 tests: add GSSIAM security test Add 301-310 for GSSIAM security flavor in sanity-sec security test, including dyn_nm_helper() fileset cleanup and test_300 rootsquash check updates. Add 180a-e in recovery-small and 204, 205 in replay-single.sh for GSSIAM. Add OBD_FAIL_SEC_GSSIAM_MOCK_TEST and OBD_FAIL_SEC_GSSIAM_EXP_CLIENT fail_loc tunables for testing GSSIAM in local node environments. Add -e option to l_gssiam_upcall and update l_gssiam_upcall(8) man page. Add MOCK_GSSIAM_RW, MOCK_GSSIAM_RO, MOCK_GSSIAM_EXPIRED, and MOCK_GSSIAM_DENY mock principal handling in l_gssiam_auth.c. Update sptlrpc_rule_set_choose() loopback selection in sec_config.c and exclude gssiam in flvr_cnt_cli2mdt/cli2ost/mdt2mdt/mdt2ost helpers. Signed-off-by: Di Wang <ddiwang@google.com> Change-Id: Ic2d797ca7c49ac3df06773f96915b563dcd6c0d8
63425
master
J –B ✓T ✓R +2/2
LU-18857 mgs: add timeout mechanism for allow_register
reviewing Chakshu Kansal · PS20→PS48 since your +1
5 unresolved
XL +1485 −42
1d
LU-18857 mgs: add timeout mechanism for allow_register
reviewing Chakshu Kansal · PS20→PS48 since your +1
5 unresolved
XL +1485 −42
1d
6 optional test failure(s) — informational
build #134518 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1 · Sebastien Buisson +1
no vote yet: Chris Hunter, Mikhail Pershin, Oleg Drokin
patchsets:
PS44 10-09
PS45 10-19
PS46 10-23
PS47 10-23
PS48 10-27
+43 earlier
PS1 01-16 PS2 02-20 PS3 02-20 PS4 03-10 PS5 03-10 PS6 03-10 PS7 03-16 PS8 03-17 PS9 03-17 PS10 04-20 PS11 04-22 PS12 04-27 PS13 04-28 PS14 05-04 PS15 05-04 PS16 05-29 PS17 05-29 Andreas Dilger PS18 06-14 Andreas Dilger PS19 06-20 PS20 07-06 PS21 07-07 James Simmons PS22 07-12 PS23 07-12 Oleg Drokin PS24 07-12 Andreas Dilger PS25 07-22 PS26 07-22 PS27 07-29 PS28 07-29 PS29 08-03 PS30 08-04 PS31 08-05 PS32 08-06 PS33 08-10 PS34 08-13 PS35 08-13 PS36 08-27 PS37 09-07 PS38 09-14 PS39 09-23 PS40 09-29 PS41 10-03 PS42 10-06 PS43 10-06your previous vote: +1 on PS20 (2026-07-06 13:22) — now at PS48
threads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger mgs_handler.c:553 — fix if patch is refreshed. I don't think the missing `rc =` is fatal (though against coding style as well)
Gerrit AI review for Lustre
(minor) This tells the admin to watch for `Can't get db for <fsname>: rc = -13`, but that string is never printed. After mgs_erase_logs() the failure comes from the mgs_find_or_make_fsdb() call further down, which prints
CERROR("Can't get db for %s: %d\n", mti->mti_fsname, rc);
so the console shows `Can't get db for testfs: -13`. Other targets are rejected earlier by mgs_check_index() or the `New target registration disabled` message, not with this text. Anyone grepping the logs for the quoted string won't find it. If the patch is refreshed, maybe change that CERROR to the `: rc = %d` form, or quote the message that actually appears.
Andreas Dilger
fix if patch is refreshed. I don't think the missing `rc =` is fatal (though against coding style as well)
reply Andreas Dilger obd_sysfs.c:222 — This message can be fixed later if this patch lands.
Gerrit AI review for Lustre
(minor) The man page's PERSISTENCE section says a dedicated MGS-only node never processes the `params` log, so `lctl set_param -P allow_register=0` has no effect there; it needs `options mgs allow_register=0` instead. On that kind of node this hint suggests a permanent lockdown that won't happen. If the patch is refreshed, consider mentioning the module option too, e.g. "... or 'options mgs allow_register=0' (MGS-only node) / 'lctl set_param -P allow_register=0' to lock down permanently".
Andreas Dilger
This message can be fixed later if this patch lands.
reply Andreas Dilger conf-sanity.sh:2274 — (style) prefer `[[ ... ]]` for bash
Andreas Dilger
(style) prefer `[[ ... ]]` for bash
reply Andreas Dilger conf-sanity.sh:6699 — This shouldn't be `unlimited`. It should be enough to allow an hour, and conf-sanity will almost certainly reformat the filesystem before t
Andreas Dilger
This shouldn't be `unlimited`. It should be enough to allow an hour, and conf-sanity will almost certainly reformat the filesystem before then?
reply Andreas Dilger conf-sanity.sh:13493 — For retroactive version checks, this should use the `git describe` format `v2_17_58-68-g30f46cdfda90` so that the exact commit can be found
Andreas Dilger
For retroactive version checks, this should use the `git describe` format `v2_17_58-68-g30f46cdfda90` so that the exact commit can be found as well. This is only worthwhile to do if the subtest is updated for some other reason, otherwise it burns hours of test time for no real benefit.
owner Chakshu Kansal · uploader Chakshu Kansal · PS48 uploaded 8d ago · NEW · open in Gerrit ↗
commit message
LU-18857 mgs: add timeout mechanism for allow_register
Add automatic timeout functionality to the allow_register
parameter to improve security by limiting the window during
which new filesystems or targets can register.
Values
0 registration disabled, initial default
unlimited registration enabled indefinitely, no timer
N[s|m|h] registration enabled for N seconds/minutes/hours,
default unit is hours when no unit is given
When a timed value is set, a timer disables registration on expiry.
show() reports remaining time with an explicit 's' unit.
Timed windows above 7 days are rejected with -EINVAL.
Use 'unlimited' for an open-ended window.
Automatic default window
- allow_register defaults to 0, disabled
- the first target to register for an unknown filesystem opens a
one-time 24-hour window, but only on a truly fresh MGS with no
existing filesystem config log yet, unless the admin already set
allow_register explicitly via module parameter or lctl set_param
- an MGS already managing at least one filesystem never auto-arms,
even for a later unknown fsname after a reboot or module reload
- the window never re-arms again during the same module load
- suppressing the automatic window entirely requires setting
allow_register explicitly, e.g. 'options mgs allow_register=0'
Concurrent first registration
- arming the one-time window is serialized under
allow_register_mutex. A losing thread waits for the winner to
finish arming, then rechecks allow_register.
Boot-time module parameter
- new mgs.allow_register=<value> module parameter applies the same
policy at module load time via class_allow_register_set(), so it
gets identical validation, locking, and timer arming as the sysfs
attribute
Compatibility changes from the original boolean allow_register
- initial default is now 0 (disabled, see automatic default window
above) instead of 1 (enabled)
- allow_register=1 set at runtime means enabled for 1 hour, not
enabled
Persistent set_param -P
- allow_register=0 and allow_register=unlimited may be persisted
- timed values cannot use -P, replaying a duration would open a
fresh registration window on every mount
- on config apply, bare 1 (old boolean on) maps to unlimited, other
non-steady values are rejected
Also
- mgs_check_target only treats rc > 0 as index in use. Negative
error codes propagate instead of being overwritten to 0
- mgs_check_index handles peer-supplied LDD_F_NEED_INDEX and range
checks the peer-supplied target index
- test-framework opens a bounded allow_register window around
target format/add and writeconf
- Warn on console when writeconf erases logs with allow_register=0
- Documentation/man4/allow_register.4
- writeconf/allow_register interaction in tunefs.lustre(8)
- SEE ALSO allow_register(4) in mkfs.lustre(8) and mount.lustre(8)
- conf-sanity 157a/157b changed allow_register=1 to 'unlimited'
- conf-sanity 157c timeout window coverage
- conf-sanity 157d param persistence and legacy 1 to unlimited
- conf-sanity 157e mgs module parameter boot-time enforcement
- conf-sanity 157f auto-arm 24 hour registration window
- explicitly reopen the allow_register window in test scripts as
needed
- mutex around timer/value updates in store/show
Fixes: f96f38c9e1e3 ("LU-18857 mgs: add allow_register tunable parameter")
Signed-off-by: Chakshu Kansal <ckansal@ddn.com>
Change-Id: I8ce969db3e06f82d97da47b11421a2b8833c5656
66253
master
J –B ✓T ✓R +2/2
LU-19712 utils: Add only and not-pool options to lfs pool pin
reviewing Nikos Papakonstantinou · PS24→PS30 since your -1 — your objection was dropped
master-next
L +718 −154
2d
LU-19712 utils: Add only and not-pool options to lfs pool pin
reviewing Nikos Papakonstantinou · PS24→PS30 since your -1 — your objection was dropped
master-next
L +718 −154
2d
build #134249 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1 · Sebastien Buisson +1
patchsets:
PS26 09-23
PS27 10-01
PS28 10-08
PS29 10-14
PS30 10-22
+25 earlier
PS1 05-28 PS2 05-28 PS3 05-29 PS4 06-04 PS5 06-05 PS6 06-08 PS7 06-10 PS8 06-14 PS9 06-15 PS10 06-22 PS11 07-09 PS12 07-10 PS13 07-14 PS14 07-15 PS15 07-16 PS16 07-30 PS17 07-30 PS18 07-31 PS19 08-20 PS20 08-26 PS21 08-27 PS22 09-01 PS23 09-04 PS24 09-04 PS25 09-14your previous vote: -1 on PS24 (2026-09-12 15:01) — now at PS30
owner Nikos Papakonstantinou · uploader Nikos Papakonstantinou · PS30 uploaded 13d ago · NEW · open in Gerrit ↗
commit message
LU-19712 utils: Add only and not-pool options to lfs pool pin Introduce --only and --not-pool options to lfs pool pin. The --only option makes the pin exclusive to the set of pools the target is already positively pinned to (including the one this operation itself pins), while the --not-pool option prevents the file from being migrated or mirrored to the specified pool. Also add a matching --not-pool option to lfs pool unpin, via a new llapi_pool_undeny_fd(), to remove a deny rule without disturbing a same-named positive pin (a pool can never be both, since --not-pool on pin already refuses to deny an already-pinned pool). --not-pool always takes an explicit pool name; unlike --pool, it is never inferred from the target's layout, since a denied pool cannot appear there. Also rename verify_pin_xattr_object(), dump_pin_object(), read_pin_xattr_object() and read_pin_xattr_object_fd() to their llapi_-prefixed equivalents, so their generic names cannot clash with application symbols. The prefix also puts them under the llapi_* export glob in liblustreapi.map, which lfs needs once it reads lustre.pin itself later in this series. --only/--not-pool themselves go through the new llapi_pool_pin_only_fd()/llapi_pool_deny_fd()/ llapi_pool_undeny_fd() entry points. Signed-off-by: Nikos Papakonstantinou <npapakonstantinou@ddn.com> Change-Id: Icc35bf87444edd74c1fcda927cead5e3b34a0fcd
63330
master
J –B ✓T ✓R -1/2−
LU-19403 llapi: Add device functions for nodemap
reviewing Nikos Papakonstantinou · PS11→PS23 since your +1
needs rebase
6 unresolved
L +385 −50
6d
LU-19403 llapi: Add device functions for nodemap
reviewing Nikos Papakonstantinou · PS11→PS23 since your +1
needs rebase
6 unresolved
L +385 −50
6d
PS11→PS23 since your +1
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
build #133513 SUCCESS · tests all Maloo sessions
no vote yet: Qian Yingjin, Marc Vef, Sebastien Buisson, Andreas Dilger
patchsets:
PS19 08-10
PS20 08-21
PS21 09-16
PS22 09-17
PS23 10-13
+18 earlier
PS1 01-12 PS2 01-28 PS3 01-28 PS4 02-09 PS5 02-10 PS6 02-12 PS7 02-12 Janitor Bot PS8 02-13 PS9 02-18 PS10 02-24 PS11 02-25 PS12 02-26 PS13 03-13 PS14 03-14 PS15 03-14 Janitor Bot PS16 03-14 PS17 03-31 PS18 07-28your previous vote: +1 on PS11 (2026-02-25 23:50) — now at PS23
threads: 6 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:19 — (minor) The body accounts for the three device helpers, the new test binary and the run_tests() change, but two other pieces of the diff are
Gerrit AI review for Lustre
(minor) The body accounts for the three device helpers, the new test binary and the run_tests() change, but two other pieces of the diff are not mentioned: the llapi_yaml_get_device_index() changes in liblustreapi_param.c, and the new llapi_strscpy() helper in lustreapi_internal.h. llapi_strscpy() has no caller in this patch (it is picked up by later changes in the relation chain), so a reader landing on this commit has no way to tell why it appeared here. A sentence for each would help, or would they sit better in the parent patch that introduced llapi_obdname2devno()?
reply Gerrit AI review for Lustre COMMIT_MSG:14 — (minor) "Fix an errno logged but not returned in their error path" reads like a change from an earlier patchset of this change rather than a
Gerrit AI review for Lustre
(minor) "Fix an errno logged but not returned in their error path" reads like a change from an earlier patchset of this change rather than against master. On master llapi_get_*_device() don't exist yet, and the obd.c helpers they replace never logged an errno. They printed "This command must be run on the MGS." and returned -ENODEV. If the patch is refreshed, could this sentence be dropped, or reworded to describe the actual behavior (an error is logged via llapi_error() and the same errno is returned)?
reply Gerrit AI review for Lustre llapi_nodemap_test.c:29 — (nit) If the patch is refreshed: the comment promises more than the helper checks. llapi_obdname2devno() only returns early when the ioctl g
Gerrit AI review for Lustre
(nit) If the patch is refreshed: the comment promises more than the helper checks. llapi_obdname2devno() only returns early when the ioctl gives -EINVAL; for any other ioctl error it falls through to llapi_yaml_get_device_index(), so a true result here can come entirely from the Netlink path with the ioctl never having worked. "Check that the MGS device number can be resolved" would match what it does.
reply Gerrit AI review for Lustre llapi_nodemap_test.c:130 — (minor) This one has no ASSERTF(), so it always passes whatever it prints - it records the node's roles in the log but cannot detect a regre
Gerrit AI review for Lustre
(minor) This one has no ASSERTF(), so it always passes whatever it prints - it records the node's roles in the log but cannot detect a regression.
Since the six values it prints are related, could it assert the relationship instead? On a node where is_mgs() is true, llapi_get_mgs_device() must succeed, so
ASSERTF(!mgs || mgs_device_accessible(), ...)
and the MDS/OSS equivalents would turn this into real coverage.
reply Gerrit AI review for Lustre llapi_nodemap_test.c:77 — (suggestion) run_tests() forks each test, so every child starts with an empty static cache. As a result, nothing in the binary exercises the
Gerrit AI review for Lustre
(suggestion) run_tests() forks each test, so every child starts with an empty static cache. As a result, nothing in the binary exercises the "cache after first successful lookup" path that the commit message describes. If the patch is refreshed, consider calling llapi_get_mgs_device() a second time within this test and asserting that it returns the same device number.
reply Gerrit AI review for Lustre liblustreapi_ioctl.c:285 — (minor) Only -EINVAL is remapped, so "device not present" can now come back as different errnos depending on which lookup path answered:
Gerrit AI review for Lustre
(minor) Only -EINVAL is remapped, so "device not present" can now come back as different errnos depending on which lookup path answered:
ioctl(OBD_IOC_NAME2DEV) not found -> -EINVAL -> -ENODEV
llapi_yaml_get_device_index() not found -> -ENOENT
/dev/obd unopenable, no "lustre" genl -> -EOPNOTSUPP
Before this patch, get_mgs_device(), get_mds_device() and get_oss_device() in obd.c always returned -ENODEV. So, for example, `lctl barrier_freeze` on a node without the Lustre modules loaded now fails with EOPNOTSUPP instead of ENODEV.
Should the helpers return -ENODEV for every lookup failure, or should the kernel-doc spell out which errnos callers can expect? Same in the MDS and OSS variants below.
owner Nikos Papakonstantinou · uploader Nikos Papakonstantinou · PS23 uploaded 22d ago · NEW · open in Gerrit ↗
commit message
LU-19403 llapi: Add device functions for nodemap Nodemap lctl commands look up the local MGS/MDS/OSS device number, but that logic lived only in obdctl. Add llapi_get_mgs_device()/get_mds_device()/get_oss_device() wrappers around llapi_obdname2devno(), caching the device number after the first successful lookup. Fix an errno logged but not returned in their error path. Add the llapi_nodemap_test binary and sanity-sec test_92; run_tests() gains a NULL @lustre_dir case so this server-only binary can share it instead of duplicating the fork/report loop. Signed-off-by: Nikos Papakonstantinou <npapakonstantinou@ddn.com> Change-Id: I095265bdccc8efd441c6c396c8ad267d1f6b7ca9
56526
master
J !B ✓T ✗2R -1/2−
LU-18076 llite: add $MOUNT/.lustre/uuid
reviewing Emoly Liu · PS1→PS10 since your -1 — your objection was dropped
needs rebase
5 unresolved
M +125 −3
6d
LU-18076 llite: add $MOUNT/.lustre/uuid
reviewing Emoly Liu · PS1→PS10 since your -1 — your objection was dropped
needs rebase
5 unresolved
M +125 −3
6d
PS1→PS10 since your -1 — your objection was dropped
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
janitor run: 2 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 | RHEL 9.7 / x86_64 | ran 11 tests. 1 tests failed: sanity-lfsck. | session |
| review-dne-zfs-part-2 | RHEL 9.7 / x86_64 | ran 11 tests. 1 tests failed: sanity-lfsck. | session |
build #128269 SUCCESS · tests all Maloo sessions
no vote yet: Qian Yingjin, Etienne AUJAMES, Andreas Dilger, Oleg Drokin
patchsets:
PS6 06-17
PS7 06-23
PS8 06-24
PS9 07-09
PS10 07-29
+5 earlier
PS1 09-28 PS2 10-12 PS3 01-16 PS4 09-22 PS5 04-21your previous vote: -1 on PS1 (2024-09-28 13:31) — now at PS10
threads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre file.c:6775 — (minor) llite.*.uuid prints the UUID with a trailing newline, this returns it without one, so cat $MOUNT/.lustre/uuid runs straight into the
Gerrit AI review for Lustre
(minor) llite.*.uuid prints the UUID with a trailing newline, this returns it without one, so cat $MOUNT/.lustre/uuid runs straight into the shell prompt. Since this is a new user-visible interface, is it worth matching the sysfs form now?
reply Gerrit AI review for Lustre llite_lib.c:3383 — (style) Extra parentheses around the argument - fid_is_uuid(&lli->lli_fid) reads better, and matches the PFID(&lli->lli_fid) a few lines up.
Gerrit AI review for Lustre
(style) Extra parentheses around the argument - fid_is_uuid(&lli->lli_fid) reads better, and matches the PFID(&lli->lli_fid) a few lines up. ll_inode2fid(inode) would work too.
reply Gerrit AI review for Lustre mdd_device.c:1033 — (style) Not a bug, but the tab alignment between type and name is back after being asked about on earlier patchsets - a single space is what
Gerrit AI review for Lustre
(style) Not a bug, but the tab alignment between type and name is back after being asked about on earlier patchsets - a single space is what new code uses:
struct md_object *mdo;
struct mdd_object *mdd_uuid;
struct lu_fid fid = LU_UUID_FID;
int rc;
reply Gerrit AI review for Lustre mdd_device.c:1051 — (suggestion) Nothing ever reads m->mdd_dot_lustre_objs.mdd_uuid. mdd_obf and mdd_lpf are kept because they carry mo_dir_ops, but this one ha
Gerrit AI review for Lustre
(suggestion) Nothing ever reads m->mdd_dot_lustre_objs.mdd_uuid. mdd_obf and mdd_lpf are kept because they carry mo_dir_ops, but this one has no ops attached, so the mdo_locate() / new field / mdd_object_put() trio only pins the object in the lu_site cache. Would mdd_local_file_create() on its own be enough here?
reply Gerrit AI review for Lustre llapi_fid_test.c:489 — (defect) .lustre/uuid only exists on an MDS that carries this patch, so against an older server llapi_open_by_fid() returns -ENOENT here and
Gerrit AI review for Lustre
(defect) .lustre/uuid only exists on an MDS that carries this patch, so against an older server llapi_open_by_fid() returns -ENOENT here and ASSERTF() -> DIE() exits the whole binary. sanity.sh test_154g, which runs llapi_fid_test, is gated only on MDS1_VERSION >= 2.6.92, so on an interop run test_154g fails and test40/test41/test42 in this binary never execute. Can this be gated on the server version - e.g. tolerate -ENOENT here, or move the check into a version-gated shell test instead?
owner Emoly Liu · uploader Emoly Liu · PS10 uploaded 98d ago · NEW · open in Gerrit ↗
commit message
LU-18076 llite: add $MOUNT/.lustre/uuid Add a virtual $MOUNT/.lustre/uuid file to print the UUID for that specific mountpoint. Also, conf-sanity.sh test_44 is modified to verify this patch. Signed-off-by: Emoly Liu <emoly@whamcloud.com> Change-Id: I74d22c012dbc623d35e4fdf8594d8e7c83e01b1a
66204
master
J –B ✓T ✓R +1/2
LU-20310 mdt: fix remaining checkpatch.pl warnings
reviewing Timothy Day · PS2→PS3 since your +1
2 unresolved
L +153 −111
6d
LU-20310 mdt: fix remaining checkpatch.pl warnings
reviewing Timothy Day · PS2→PS3 since your +1
2 unresolved
L +153 −111
6d
build #134622 SUCCESS · tests all Maloo sessions
reviews:
Arshad Hussain +1
no vote yet: Andreas Dilger, Oleg Drokin
patchsets:
PS1 05-27
PS2 07-14
PS3 10-28 Arshad Hussain
your previous vote: +1 on PS2 (2026-08-06 19:54) — now at PS3
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre mdt_coordinator.c:1847 — (style) Same half-join as in mdt_open.c: " (flags=%d))\n" is still a separate literal while the first part grew to 116 columns. If the patch
Gerrit AI review for Lustre
(style) Same half-join as in mdt_open.c: " (flags=%d))\n" is still a separate literal while the first part grew to 116 columns. If the patch is refreshed, consider joining it fully.
reply Gerrit AI review for Lustre mdt_open.c:1776 — (style) This isn't a bug, but the string here was only half joined. The message is still split before "next reboot, rc = %d\n", and the line
Gerrit AI review for Lustre
(style) This isn't a bug, but the string here was only half joined. The message is still split before "next reboot, rc = %d\n", and the line is now 123 columns, so it is neither under 80 columns nor greppable as one string. The same half-join is at the identical CERROR in mdt_orphan_open() and at the "i_blocks will be reported wrongly and " / "can only be fixed in next resync" CERROR in mdt_close_handle_layouts(). If the patch is refreshed, consider joining each of these fully, or leaving them as they were.
owner Timothy Day · uploader Arshad Hussain · PS3 uploaded 7d ago · NEW · open in Gerrit ↗
commit message
LU-20310 mdt: fix remaining checkpatch.pl warnings ... via checkpatch.pl --fix-inplace. Test-Parameters: trivial Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: Id7dfe406de0813c38244e393a4a15ec0dcbfd15f
68647
master
J ✓B ✓T ✓R -1/2−
LU-17916 osd: restore get_page stats for compatibility
reviewing Oleg Drokin · PS1→PS2 since your +1
needs rebase
S +15 −2
13d
LU-17916 osd: restore get_page stats for compatibility
reviewing Oleg Drokin · PS1→PS2 since your +1
needs rebase
S +15 −2
13d
PS1→PS2 since your +1
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
build #132496 SUCCESS · tests all Maloo sessions
no vote yet: Shaun Tancheff, Andreas Dilger, Timothy Day
patchsets:
PS1 09-04
PS2 09-29
your previous vote: +1 on PS1 (2026-09-10 16:29) — now at PS2
owner Oleg Drokin · uploader Oleg Drokin · PS2 uploaded 36d ago · NEW · open in Gerrit ↗
commit message
LU-17916 osd: restore get_page stats for compatibility
The folio conversion renamed the "get_page" and "get_page_failures"
counters in osd-ldiskfs.*.stats to "get_folio" and "get_folio_failures".
Those names are a user-visible interface:
anything parsing the stats file by counter name simply stops finding
its counter after an upgrade, with no error.
Register the old names again alongside the new ones and account both,
so existing consumers keep working while new ones can follow the folio
naming. In osd-ldiskfs both counters sample the same events: the time
spent acquiring the buffers of one read/write prep, and the failures to
obtain a folio for the page cache. Folios there are order 0, so one
failed folio is exactly one failed page; if osd_get_folio() ever asks
for a higher order, get_page_failures has to be scaled by the number of
pages in the requested folio. In osd-zfs neither counter has ever been
sampled, so both stay absent from the file as before.
The old names are restored without a LUSTRE_VERSION_CODE gate on
purpose: a timebomb would drop them again on a date no consumer
tracks, which is the breakage this patch exists to undo.
Test-Parameters: trivial
Fixes: d9b67be7148d ("LU-17916 osd: prefer folio of order 0")
Signed-off-by: Oleg Drokin <green@whamcloud.com>
Change-Id: Iabe35ab8a26a367979eaee8ad5d9fdf6cadc6486
Assisted-by: ClaudeCode:Opus-5 llm_code_and_review_tools
56783
master
J –B ✓T ✗2R -1/2−
LU-18400 tests: enable panic_on_warn
reviewing Timothy Day · PS8→PS14 since your +1
needs rebase
9 unresolved
M +85 −0
13d
LU-18400 tests: enable panic_on_warn
reviewing Timothy Day · PS8→PS14 since your +1
needs rebase
9 unresolved
M +85 −0
13d
PS8→PS14 since your +1
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-zfs-part-4 | RHEL 10.1 / x86_64 | ran 9 tests. 1 tests failed: sanity-quota. | session |
| review-dne-zfs-part-5 | RHEL 9.7 / x86_64 | ran 5 tests. 1 tests failed: sanityn. | session |
build #133147 SUCCESS · tests all Maloo sessions
no vote yet: Sergey Cheremencev, Andreas Dilger, Oleg Drokin
patchsets:
PS10 05-20
PS11 06-08
PS12 06-09
PS13 10-07
PS14 10-08
+9 earlier
PS1 10-25 PS2 10-27 PS3 10-27 PS4 10-29 PS5 10-29 PS6 06-20 PS7 09-16 PS8 09-17 PS9 05-20your previous vote: +1 on PS8 (2025-09-18 18:25) — now at PS14
threads: 9 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:13 — (minor) If the patch is refreshed, could the body name the `PANIC_ON_WARN` variable and the `kernel.panic_on_warn` sysctl? It would also hel
Gerrit AI review for Lustre
(minor) If the patch is refreshed, could the body name the `PANIC_ON_WARN` variable and the `kernel.panic_on_warn` sysctl? It would also help to say how to re-enable panic_on_warn for an opted-out suite (e.g. `env=PANIC_ON_WARN=1` in Test-Parameters), and that the original value is saved in setupall() and restored in cleanupall(). That makes the change findable with git log and explains the save/restore hunks.
reply Timothy Day sanity.sh:30 — I think this version of the patch is bogus anyway - it doesn't work. I probably have to rework this altogether.
Andreas Dilger
(defect?) this will not be reset when this script is finished and the next script is started. Having a `stack_trap` to reset it would help. Unfortunately, the other problem here is that there is no way to test this with `testlist=sanity env=PANIC_ON_WARN=1` except by deleting this line...
Timothy Day
I think this version of the patch is bogus anyway - it doesn't work. I probably have to rework this altogether.
reply Andreas Dilger test-framework.sh:2121 — (style) You can write this more compactly as:
Andreas Dilger
(style) You can write this more compactly as:
local warn_setting="$(sysctl kernel.panic_on_warn)"
stack_trap "sysctl ${warn_setting/ = /}"
essentially saving the full output and restoring it. Unfortunately, sysctl is not "symmetrical" in that it prints values like `kernel.panic_on_warn = 0` but only accepts `kernel.panic_on_warn=0` as input. Hence the `${foo/ = /}` parameter substitution when registering the stack_trap.
Not sure this is a huge win, just an FYI to avoid writing the same parameter name multiple times, especially when they get long
reply Andreas Dilger test-framework.sh:2123 — (defect?) this shouldn't register a new `stack_trap` if the value is unchanged. Otherwise, if `set_default_debug()` is called multiple time
Andreas Dilger
(defect?) this shouldn't register a new `stack_trap` if the value is unchanged. Otherwise, if `set_default_debug()` is called multiple times on the same node (e.g. multiple client/target mounts in conf-sanity.sh) it could make the cleanup messy or overflow the limits for the `stack_trap()` mechanism. In any case, there is no value to do so:
[[ $new_warn_setting != ${warn_setting/.* = /} ]] || return 0
reply Gerrit AI review for Lustre test-framework.sh:2241 — (defect?) For suites with PANIC_ON_WARN=0 (sanity, sanityn, conf-sanity, replay-*, recovery-small, ...), this now actively writes kernel.pan
Gerrit AI review for Lustre
(defect?) For suites with PANIC_ON_WARN=0 (sanity, sanityn, conf-sanity, replay-*, recovery-small, ...), this now actively writes kernel.panic_on_warn=0 on every mount. Before this patch those suites didn't touch the sysctl. Earlier discussion on this change noted that some test environments already boot with panic_on_warn enabled. On those nodes, the opted-out suites would now turn it off and lose coverage they have today. Would it be better for the opt-out to mean "leave the node setting alone", for example by skipping the write unless PANIC_ON_WARN=1, rather than forcing it to 0?
reply Gerrit AI review for Lustre test-framework.sh:2241 — (style) This isn't a bug, but without -q, sysctl echoes `kernel.panic_on_warn = N` for every node each time set_default_debug_nodes() runs,
Gerrit AI review for Lustre
(style) This isn't a bug, but without -q, sysctl echoes `kernel.panic_on_warn = N` for every node each time set_default_debug_nodes() runs, which is on every target and client mount. That adds a lot of noise to conf-sanity/replay logs. If the patch is refreshed, consider `sysctl -wq` to match restore_panic_on_warn().
reply Gerrit AI review for Lustre test-framework.sh:5605 — (suggestion) The commit message says the goal is to catch kref bugs. Final reference drops, and the refcount underflow/leak WARNs that come
Gerrit AI review for Lustre
(suggestion) The commit message says the goal is to catch kref bugs. Final reference drops, and the refcount underflow/leak WARNs that come with them, often happen during module unload. Restoring the original setting before unload_modules() means those warnings won't panic. Was that intentional, or could the restore move after unload_modules()?
reply Gerrit AI review for Lustre test-framework.sh:6102 — (defect?) This follows up the earlier question about multiple scripts in one session. Is the value saved here always the node's original set
Gerrit AI review for Lustre
(defect?) This follows up the earlier question about multiple scripts in one session. Is the value saved here always the node's original setting?
The first write isn't guarded by a save. When Lustre is already mounted, check_and_setup_lustre() takes the do_check branch, which calls set_default_debug_nodes()->set_stricter_panic_options_nodes() and writes kernel.panic_on_warn without ever reaching setupall().
Example under auster (every suite has PPID == the auster pid, so they all share one panic_on_warn-$PPID-env file):
sanity-dom.sh fs already mounted -> do_check -> panic_on_warn=1, nothing saved
sanity-lfsck.sh cleanupall (no file yet, nothing restored)
check_and_setup_lustre -> setupall -> save_panic_on_warn records 1
After that, every restore_panic_on_warn() in the session writes back 1, including from cleanupall() in opted-out suites, until the next mount resets it. If no auster-level setupall saved the real value first, the nodes are left with panic_on_warn=1 after the run.
Would it be safer to save lazily on the first write, i.e. call save_panic_on_warn() from set_stricter_panic_options_nodes() (kptr_enable_and_save() saves and modifies in one place for the same reason)?
reply Gerrit AI review for Lustre test-framework.sh:2199 — (defect?) The saved state is keyed by `$PPID`, so restore_panic_on_warn() only finds it when cleanupall() runs in a process with the same pa
Gerrit AI review for Lustre
(defect?) The saved state is keyed by `$PPID`, so restore_panic_on_warn() only finds it when cleanupall() runs in a process with the same parent as the one that saved it. That is not true for the common developer flow:
sudo ./llmount.sh # PPID = sudo pid #1: saves 0 to panic_on_warn-<pid1>-env, writes 1
sudo ./llmountcleanup.sh # PPID = sudo pid #2: no file, restore is a no-op
sudo forks for each command, so `$PPID` is different every time. The same happens when llmount.sh and llmountcleanup.sh are started by separate ssh sessions or CI steps. In those cases the node keeps kernel.panic_on_warn=1 after the filesystem is torn down. With the default kernel.panic=0, any later WARN on that workstation or VM panics it and leaves it hung. Before this patch, llmount.sh never touched the sysctl.
The header comment also says the saved value is "always the node's original setting". That does not hold across a PPID change: a later invocation sees no file and saves the 1 written by the earlier one.
Could the key be something stable across invocations, such as `$FSNAME` or the facet/mount configuration? The env file could then be removed after a successful restore, which would also stop the `panic_on_warn-*-env` files from piling up in `$TMP`.
owner Timothy Day · uploader Timothy Day · PS14 uploaded 26d ago · NEW · open in Gerrit ↗
commit message
LU-18400 tests: enable panic_on_warn Enable panic_on_warn to catch kref bugs (and other strange warnings) that might otherwise get ignored. This is enabled by default for all test suites. However, explicitly disable it for test suites that still have warnings. This will prevent future regressions while enabling developers to address existing warnings incrementally. Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: Ifc042c667422761b01ba8a95e7e838b040be00b5
66777
master
J !B ✓T ✓R -1/2−
LU-9639 ldlm: Add kernel doc style for LDLM (11)
reviewing Arshad Hussain · PS1→PS4 since your +1
dwg
6 unresolved
M +100 −50
19d
LU-9639 ldlm: Add kernel doc style for LDLM (11)
reviewing Arshad Hussain · PS1→PS4 since your +1
dwg
6 unresolved
M +100 −50
19d
janitor run: 7 failing config(s), none unique to this patch — janitor results
build #130310 SUCCESS · tests all Maloo sessions
reviews:
Timothy Day -1
no vote yet: Oleg Drokin
patchsets:
PS1 06-22
PS2 08-17
PS3 08-25
PS4 08-26
your previous vote: +1 on PS1 (2026-07-30 19:01) — now at PS4
threads: 6 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre ldlm_pool.c:983 — (suggestion) ldlm_pool_add() and ldlm_pool_del() are declared in lustre_dlm.h and called from ldlm_lock.c, so they are part of the LDLM-inte
Gerrit AI review for Lustre
(suggestion) ldlm_pool_add() and ldlm_pool_del() are declared in lustre_dlm.h and called from ldlm_lock.c, so they are part of the LDLM-internal API rather than file-local helpers. Given LU-9639 is about adding kernel-doc to ldlm, is demoting them to plain comments the intended direction? Same question for ldlm_pool_get_slv(), ldlm_pool_set_clv(), ldlm_pool_get_limit(), ldlm_pool_set_limit() and ldlm_pool_get_lvf() below, which ldlm_request.c uses.
reply Gerrit AI review for Lustre ldlm_pool.c:162 — This block has the full kernel-doc layout - `ldlm_pool_t2gsp() - ...`, `@t:` and `Return:` - but the opener is `/*`, so kernel-doc skips it:
Gerrit AI review for Lustre
This block has the full kernel-doc layout - `ldlm_pool_t2gsp() - ...`, `@t:` and `Return:` - but the opener is `/*`, so kernel-doc skips it:
contrib/scripts/kernel-doc -man lustre/ldlm/ldlm_pool.c | grep -c '^\.TH'
9
ldlm_pool_t2gsp() is not among those 9. This was already raised on an earlier patchset and marked done, but the opener is still `/*` here - should it be `/**`?
reply Gerrit AI review for Lustre ldlm_pool.c:369 — (style) Dropping "Our goal here is to" leaves a lowercase sentence fragment. Maybe "The goal is to decrease SLV ...".
Gerrit AI review for Lustre
(style) Dropping "Our goal here is to" leaves a lowercase sentence fragment. Maybe "The goal is to decrease SLV ...". While this line is being reworded: is "in next 10h" still accurate? The comment further down in the body says the effect lasts "as long as one re-calc interval (1s these days)".
reply Gerrit AI review for Lustre ldlm_pool.c:371 — (style) This isn't a bug - kernel-doc canonicalises both - but the patch mixes `Return:` (168, 320, 431, 475, 665) and `Returns:` (371, 535,
Gerrit AI review for Lustre
(style) This isn't a bug - kernel-doc canonicalises both - but the patch mixes `Return:` (168, 320, 431, 475, 665) and `Returns:` (371, 535, 585) in the same file. The tree is heavily `Return:` (about 1300 uses vs 65), and so is ldlm_request.c from patch (1) in this series. Worth settling on `Return:` if this is refreshed.
reply Gerrit AI review for Lustre ldlm_pool.c:585 — "time in seconds" reads like an interval, but the value is an absolute timestamp:
Gerrit AI review for Lustre
"time in seconds" reads like an interval, but the value is an absolute timestamp:
return pl->pl_recalc_time + pl->pl_recalc_period;
and ldlm_pools_recalc_task() converts it back to a delay itself:
delay = min(ldlm_pools_recalc_delay(SERVER), ldlm_pools_recalc_delay(CLIENT));
delay -= ktime_get_seconds();
Since the return sections are being rewritten anyway, would something like "seconds (ktime_get_seconds() base) at which this pool should next be recalculated" be clearer?
reply Gerrit AI review for Lustre ldlm_pool.c:661 — (style) The parenthetical describes what the function does rather than what the parameter is, and it duplicates the description two lines be
Gerrit AI review for Lustre
(style) The parenthetical describes what the function does rather than what the parameter is, and it duplicates the description two lines below. Just `@limit: New limit value for the pool` would do.
owner Arshad Hussain · uploader Arshad Hussain · PS4 uploaded 70d ago · NEW · open in Gerrit ↗
commit message
LU-9639 ldlm: Add kernel doc style for LDLM (11) This patch converts existing functional comments to kernel doc style comments and removes '/**' for comments which is not meant to be a kernel-doc comment Test-Parameters: trivial Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Change-Id: Ia5a4c786536e8e51e1673f737f8ff5b26622e57f
66799
master
J !B ✓T ✓R -1/2−
LU-20418 build: introduce gen_compat and port early libcfs
reviewing Shaun Tancheff · PS7→PS9 since your +1
needs rebase
5 unresolved
L +665 −64
22d
LU-20418 build: introduce gen_compat and port early libcfs
reviewing Shaun Tancheff · PS7→PS9 since your +1
needs rebase
5 unresolved
L +665 −64
22d
PS7→PS9 since your +1
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
janitor run: 1 failing config(s), none unique to this patch — janitor results
build #128469 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Timothy Day
patchsets:
PS5 07-07 James Simmons
PS6 07-09 James Simmons
PS7 07-10 James Simmons
PS8 07-10 James Simmons
PS9 07-31
+4 earlier
PS1 06-23 PS2 06-23 PS3 06-25 PS4 06-28 James Simmonsyour previous vote: +1 on PS7 (2026-07-10 14:33) — now at PS9
threads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Timothy Day patchset comment — > The compile tests require targeting an already kernel which is sort of annoying to have to build the kernel before configuring lustre, to
Timothy Day
After talking with Oleg and Andreas, there is some concern that pure regex is less reliable than doing a compile for each check. Would it be possible to modify gen_compat.py to do a simple compile test? And still keep the same general structure? I'm wary of cases where the regex finds a symbol, but we fail during link or modpost.
Shaun Tancheff
We can split the current parallel configure tests into individual files. As far as the modpost concern that exists in the current parallel build already (may be 1 or 2 checks verify modpost / kernel module gets linked). The main thing that doing grep/regex checks can do is run against kernel sources that have not be built. The compile tests require targeting an already kernel which is sort of annoying to have to build the kernel before configuring lustre, to then just to drop lustre back into the kernel and build the kernel again. compared to lustre out-of-tree building the kernel is a real time sink.
Timothy Day
> The compile tests require targeting an already kernel which is sort of annoying to have to build the kernel before configuring lustre, to then just to drop lustre back into the kernel and build the kernel again. This is true. But for the latest kernels, we'd aim to have Lustre "default" to the right configuration - so you can skip the initial configuration. That doesn't help with old kernels, but I think that's fine. > compared to lustre out-of-tree building the kernel is a real time sink. Maybe there is a light-weight check-but-don't-compile approach we could use? I can investigate this a bit.
reply Gerrit AI review for Lustre gen_compat.py:60 — When exp is a list, the expressions only match if they land on strictly consecutive lines: the first match sets restart, and the very next n
Gerrit AI review for Lustre
When exp is a list, the expressions only match if they land on strictly consecutive lines: the first match sets restart, and the very next non-matching line resets regex back to the full list.
struct foo { <- matches exp[0]
int a; <- resets, exp[1] never gets a chance
int bar;
};
With exp = ['struct foo {', 'int bar;'] the above gives "no"; removing the int a; line gives "yes". For the usual case - find a struct, then find a member some lines below it - that is the wrong behaviour.
The restarting line is also never re-tested against exp[0], since the elif skips the if, so a sequence that begins on that line is missed. No ksym uses a list yet, but the rest of the series builds on this.
reply Gerrit AI review for Lustre gen_compat.py:126 — This method can never be called. The class attribute above it is replaced by this def at class creation, and then __init__ assigns self.head
Gerrit AI review for Lustre
This method can never be called. The class attribute above it is replaced by this def at class creation, and then __init__ assigns self.header, so every instance shadows it with the string or list from the ksym.
The consequence is that the list form the docstring advertises does not work end to end. grep_ex() handles a list, but map_and_save() does Path(self.header) and main() sorts on x.header. A ksym with header = [a, b] aborts configure:
TypeError: argument should be a str or an os.PathLike object ..., not 'list'
Either drop the dead method and the list wording, or rename it (header_primary()?) and use it in map_and_save() and the sort key.
reply Gerrit AI review for Lustre gen_compat.py:168 — A header that cannot be opened ends up here and the check just returns False, so "file is missing" and "symbol is absent" produce the same r
Gerrit AI review for Lustre
A header that cannot be opened ends up here and the check just returns False, so "file is missing" and "symbol is absent" produce the same result, and the only difference is a stderr line that needs --verbose.
With a --linux path that contains no include/linux at all, all three ported checks print "no" and the script still exits 0:
checking if bio-integrity.h exists ... no
checking if blk-integrity.h exists ... no
checking if 'mmap_write_lock()' is available ... no
That matters because each ksym pins one absolute path under {linux}, while the compile tests being replaced were handed the full kernel include set (-I$LINUX/include -I$LINUX_OBJ/include -I$LINUX/arch/$SUBARCH/include ... in LB2_LINUX_TEST_COMPILE). --linux-obj is accepted but never consulted for header lookup, only for version.h.
The Debian fixup a few lines above the gen_compat call in lustre-build-linux.m4 exists precisely because $LINUX can be an arch-specific headers directory whose include/linux lives in the -common package, and that fixup only fires when LINUX equals LINUX_OBJ and LINUX is already canonical - not for the default /lib/modules/$(uname -r)/build.
When HAVE_MMAP_LOCK comes out "no" on a >= v5.8 kernel, include/lustre_compat/linux/mmap_lock.h redefines mmap_write_lock() and friends against mm->mmap_sem, so this surfaces as a confusing compile failure rather than as a configure error. Could a header that fails to open be a hard error instead?
reply Gerrit AI review for Lustre gen_compat.py:445 — This returns on the first entry whose distro matches (and, for rhel/suse, whose major matches), so only one linux_* range per check is ever
Gerrit AI review for Lustre
This returns on the first entry whose distro matches (and, for rhel/suse, whose major matches), so only one linux_* range per check is ever consulted. A diagnostic like ('linux_5.8-6.0', 'linux_6.5-') would silently ignore the second range.
The HAVE_MMAP_LOCK data also looks off: rhel_9.2- excludes RHEL 9.0/9.1, which are 5.14 and do have include/linux/mmap_lock.h. Against a simulated RHEL 9.0 tree the check correctly says yes but the diagnostic then reports a failure:
checking if 'mmap_write_lock()' is available ... yes [linux/mmap_lock.h] n
rhel 9.0.70.13.1 [Linux 5.14.0] diagnostic failed ...
Should that be rhel_9.0-?
owner Shaun Tancheff · uploader Shaun Tancheff · PS9 uploaded 95d ago · NEW · open in Gerrit ↗
commit message
LU-20418 build: introduce gen_compat and port early libcfs Introduce a faster build checking system that uses snippets of python code in: config/compat.d/*.ksym to generate macro(s) and/or inject code into config.h Move checks for: HAVE_LINUX_BIO_INTEGRITY_HEADER HAVE_LINUX_BLK_INTEGRITY_HEADER HAVE_MMAP_LOCK A dependency is added on python3, which is widely available, and is not expected to hinder supported target platforms. gen_compat.py formatted with: $ black --version black, 26.3.1 (compiled: yes) Python (CPython) 3.14.4 Add support for kernel version parsing and diagnostics for checking if a ksym compatibility check differs from is expected. gen_compat writes to include/linux/libcfs/libcfs_gen_compat.h which is included by config.h see: AH_TOP() in configure.ac Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun@tancheff.com> Change-Id: I7080193bba1a29eae256d4896d1382e8561dd2de
66485
master
J ✓B ✓T ✗0R -1/2−
LU-15373 llog: rework changelog_remap_rec()
reviewing Etienne AUJAMES · PS4→PS14 since your +1
needs rebase
16 unresolved
L +303 −313
22d
LU-15373 llog: rework changelog_remap_rec()
reviewing Etienne AUJAMES · PS4→PS14 since your +1
needs rebase
16 unresolved
L +303 −313
22d
PS4→PS14 since your +1
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
no vote yet: Arshad Hussain, Andreas Dilger
patchsets:
PS10 08-19
PS11 09-04
PS12 09-18
PS13 09-25
PS14 10-01
+9 earlier
PS1 06-05 PS2 06-06 PS3 06-08 PS4 06-10 PS5 07-16 PS6 07-22 PS7 08-07 PS8 08-10 PS9 08-14your previous vote: +1 on PS4 (2026-06-15 13:23) — now at PS14
threads: 16 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:19 — (typo) "changlog_trim_rec()" is missing an 'e'; the function is changelog_trim_rec().
Gerrit AI review for Lustre
(typo) "changlog_trim_rec()" is missing an 'e'; the function is changelog_trim_rec(). Also in the paragraph above: "the fields need to be move in-order" reads better as "moved".
reply Gerrit AI review for Lustre COMMIT_MSG:20 — (minor) The body covers changelog_trim_rec() and llapi_changelog_repack_rec(), but the largest hunk of the patch - the lustre_user.h rework
Gerrit AI review for Lustre
(minor) The body covers changelog_trim_rec() and llapi_changelog_repack_rec(), but the largest hunk of the patch - the lustre_user.h rework - is not mentioned: the new CLF_BEFORE_MASK()/CLFE_BEFORE_MASK() macros, changelog_field_size()/changelog_extra_field_size(), changelog_rec_field()/changelog_rec_extra_field(), and __CLFE_LAST redefining CLFE_SUPPORTED. The new OBD_FAIL_MDS_CHANGELOG_TRIM_JOBID fault injection isn't mentioned either. Could the message name those so the header change isn't a surprise to a reader?
reply Gerrit AI review for Lustre COMMIT_MSG:29 — (defect) This looks like it fixes real in-place corruption, not only a readability rework. The old changelog_remap_rec() moved the variable-
Gerrit AI review for Lustre
(defect) This looks like it fixes real in-place corruption, not only a readability rework. The old changelog_remap_rec() moved the variable-length name to its trimmed offset first and only then moved the extension fields, so any field living above that new offset was overwritten before it was read - trimming CLF_JOBID out of a record that also has CLF_EXTRA_FLAGS + uidgid/nid drops the name on top of changelog_ext_uidgid. On top of that the old code only ever OR'd cref_want into cr_extra_flags, so a trimmed extra flag was never cleared and a reader recomputed the name offset from a layout the server no longer wrote.
Should this carry a Fixes: tag?
Fixes: 08ffb6f1428f ("LU-9727 lustre: Add an additional set of 64 changelog flags.")
That is the commit that introduced cref_want and the extra-field handling in changelog_remap_rec(); it became reachable with shipped client versions once a second extra field existed, in d2629cfcabfa ("LU-9727 lustre: add client NID to Changelogs entries").
reply Gerrit AI review for Lustre lustre_user.h:2242 — (style) Small consistency nit on the two new helpers: this one takes `rec` plus `rec->cr_flags`, while changelog_rec_extra_field() below tak
Gerrit AI review for Lustre
(style) Small consistency nit on the two new helpers: this one takes `rec` plus `rec->cr_flags`, while changelog_rec_extra_field() below takes `const void *buf` plus both flag words. All six callers pass the record together with its own flags, and changelog_rec_extra_flags() is already forward-declared here, so the extra arguments mostly create a way to hand in an inconsistent pair. Could both take `const struct changelog_rec *rec` and read the flags themselves?
reply Gerrit AI review for Lustre lustre_user.h:2175 — (minor) Both this and changelog_extra_field_size() below take the full flags enum but only work for a single flag - `changelog_field_size(CL
Gerrit AI review for Lustre
(minor) Both this and changelog_extra_field_size() below take the full flags enum but only work for a single flag - `changelog_field_size(CLF_RENAME | CLF_JOBID)` returns 0 rather than 64, and the switch gives no hint that a combination is wrong.
Since the point of the patch is to make adding a field easy, would a one-line comment ("@crf: exactly one CLF_* field flag") be worth it? Both are static inlines in a uapi header, so out-of-tree readers can call them too.
reply Arshad Hussain llog_osd.c:884 — ```
Arshad Hussain
``` + /* Failed. Clear NID/NID_BE flags */ ```
reply Gerrit AI review for Lustre llog_osd.c:915 — (style) This isn't a bug, but the bare `return;` at the end of a void function is redundant and can be dropped.
Gerrit AI review for Lustre
(style) This isn't a bug, but the bare `return;` at the end of a void function is redundant and can be dropped.
reply Etienne AUJAMES llog_osd.c:875 — Technically this should not be possible. If CLF_EXTRA_FLAGS is not set cref_want should be set to 0. The only way possible is corruption or
Gerrit AI review for Lustre
(defect) The extras loop is entered on the record's cr_flags, but cref_want is not forced empty when crf_want has lost CLF_EXTRA_FLAGS. In that case the uidgid/nid/openmode/xattr fields are still memmove()d down into a record whose cr_flags no longer advertises CLF_EXTRA_FLAGS, so every consumer computes changelog_rec_name() without them and reads extension bytes as the name.
changelog_block_trim_ext() derives both masks from loghandle->lgh_hdr->llh_flags, and llog_origin_handle_next_block() takes that verbatim from body->lgd_llh_flags with no validation, so a client that sends LLOG_F_EXT_X_UIDGID / _X_NID without LLOG_F_EXT_EXTRA_FLAGS lands here. changelog_remap_rec() used to gate every extra move on (crf_wanted & CLF_EXTRA_FLAGS) && (rec->cr_flags & CLF_EXTRA_FLAGS).
Would clearing cref_want when crf_want drops CLF_EXTRA_FLAGS cover it? The loop still has to run so that src walks past the fields:
if (!(crf_want & CLF_EXTRA_FLAGS))
cref_want = CLFE_INVALID;
Etienne AUJAMES
Technically this should not be possible. If CLF_EXTRA_FLAGS is not set cref_want should be set to 0. The only way possible is corruption or a compromise client. But the original patch have this check, so I will update.
reply Gerrit AI review for Lustre llog_osd.c:805 — (style) Every other static function in this file carries a `/**` block, and this one has a couple of things a reader can't guess from the si
Gerrit AI review for Lustre
(style) Every other static function in this file carries a `/**` block, and this one has a couple of things a reader can't guess from the signature: it rewrites `buf` in place (the same 24 bytes are read as `changelog_ext_nid` and written as `struct lnet_nid`, or vice versa), and `-EAFNOSUPPORT` means "this large NID has no nid4 form" rather than a hard error - the caller just drops CLFE_NID/CLFE_NID_BE. If the patch is refreshed, a short kdoc here would help.
reply Gerrit AI review for Lustre sanity.sh:22270 — (defect) Does this assertion fail without the changelog_trim_rec() rework? The old changelog_remap_rec() relocated the name to changelog_rec
Gerrit AI review for Lustre
(defect) Does this assertion fail without the changelog_trim_rec() rework? The old changelog_remap_rec() relocated the name to changelog_rec_offset(crf_wanted, cref_want), which is exactly the offset a reader recomputes from the trimmed flags, so the record stayed structurally valid: the UNLNK line still ends in $tfile and CLF_JOBID is still cleared from cr_flags, so ` j=` is still absent. What the old code corrupted was the extension *values*. With jobid trimmed the name is copied to rec+sizeof(rec)+ef+uidgid before changelog_ext_uidgid is moved, so the low bytes of cr_gid come back as the file name (`f160y` here), and with a name longer than the gap the nid goes too. Asserting on the surviving extra fields would make this a regression test - e.g. also require the ` u=` field in $UNLNK to still match the uid:gid that did the unlink, and check ` nid=` is unchanged. This is the same point raised on the earlier revision about exercising the extra fields.
reply Gerrit AI review for Lustre sanity.sh:22410 — (style) The three properties are chained into one `&& ... || error`, so a failure prints the same message whether the record went missing, t
Gerrit AI review for Lustre
(style) The three properties are chained into one `&& ... || error`, so a failure prints the same message whether the record went missing, the jobid survived the trim, or the uid/gid got clobbered by the field move - and the uid/gid one is the interesting failure this test exists to catch.
Splitting them reads better and says which invariant broke:
[[ -n "$UNLNK" ]] || error "no UNLNK changelog for $tfile"
[[ "$UNLNK" =~ \ j= ]] && error "jobid not trimmed: $UNLNK"
[[ "$UNLNK" =~ \ u=0:0 ]] || error "uid/gid corrupted by trim: $UNLNK"
reply Arshad Hussain liblustreapi_chlg.c:322 — ```
Arshad Hussain
``` + /* reset the cr_flags (flags related to original record read by + * changelog). We do this because client(crf_want) may request different + * flags than source recored + */ ```
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS14 uploaded 34d ago · NEW · open in Gerrit ↗
commit message
LU-15373 llog: rework changelog_remap_rec()
Originally, changelog_remap_rec() expanded missing changelog fields,
but now we use it only to trim unsupported fields for remote clients.
So the fields need to be move in-order from the first record to last
one to avoid overwrite.
Moreover, changelog_remap_rec() is not trivial, so adding new
changelog field can be tricky.
This patch renames & improves changelog_remap_rec() to
changelog_trim_rec(). llapi_changelog_repack_rec() is updated to
reduce their dependency on field types.
Add a regression test sanity 160y to check if changelog_trim_rec() is
able to trim a field in the middle of the record.
Fixes: a98690be90 ("LU-5862 changelog: Proper record remapping")
Test-Parameters: clientversion=2.15 testlist=sanity env=ONLY=160
Test-Parameters: serverversion=2.15 testlist=sanity env=ONLY=160,SANITY_EXCEPT=160a,HONOR_EXCEPT=y
Test-Parameters: clientversion=2.15 testlist=sanity-hsm env=ONLY=222
Test-Parameters: serverversion=2.15 testlist=sanity-hsm env=ONLY=222
Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
Change-Id: I2a25e8131304e985187cb2c644822d1946455bf9
57454
master
J !B ✓T ✗1R 0/2
LU-18461 layout: allow to be started from zero offset.
reviewing Alexey Lyashkov · PS11→PS38 since your -1 — your objection was dropped
70 unresolved
XL +1309 −65
30d
LU-18461 layout: allow to be started from zero offset.
reviewing Alexey Lyashkov · PS11→PS38 since your -1 — your objection was dropped
70 unresolved
XL +1309 −65
30d
PS11→PS38 since your -1 — your objection was dropped
blocked on the owner: enforced tests failed
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-5 | RHEL 9.7 / x86_64 | ran 7 tests. 1 tests failed: lustre-rsync-test. | session |
build #132562 SUCCESS · tests all Maloo sessions
no vote yet: Alexander Boyko, Andreas Dilger, Mikhail Pershin, Zhenyu Xu
patchsets:
PS34 08-20
PS35 08-25
PS36 09-14
PS37 09-23
PS38 09-29
+33 earlier
PS1 12-16 PS2 12-17 PS3 12-27 PS4 01-10 PS5 02-18 PS6 02-19 PS7 02-21 PS8 02-27 PS9 02-28 PS10 03-18 PS11 05-23 PS12 08-22 PS13 09-09 PS14 09-22 PS15 10-15 PS16 10-17 PS17 10-22 PS18 11-03 PS19 12-18 PS20 12-18 PS21 12-25 PS22 01-13 PS23 01-27 PS24 02-20 PS25 02-28 PS26 03-02 PS27 03-02 PS28 04-24 PS29 04-27 PS30 05-19 PS31 05-21 PS32 05-26 PS33 06-02your previous vote: -1 on PS11 (2025-07-17 17:15) — now at PS38
threads: 70 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger COMMIT_MSG:10 — (typo) "Do object"?
Andreas Dilger
(typo) "Do object"?
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (style) The subject has no grammatical subject - "allow to be started" leaves out what is being started. Something like "allow components to
Gerrit AI review for Lustre
(style) The subject has no grammatical subject - "allow to be started" leaves out what is being started. Something like "allow components to start at offset zero" reads better, and the trailing period is not usual for Lustre subjects. More importantly, neither the subject nor the body names anything that this patch actually adds: `LOV_PATTERN_ZEROSTART`, `LLAPI_LAYOUT_ZEROSTART`, the `zerostart` layout type, or `lfs setstripe --zerostart`. That makes the change hard to find later with `git log --grep`.
reply Gerrit AI review for Lustre COMMIT_MSG:10 — (typo) "Do object" - DoM?
Gerrit AI review for Lustre
(typo) "Do object" - DoM? This was raised on an earlier patchset and still reads the same way here.
reply Gerrit AI review for Lustre COMMIT_MSG:19 — Several hunks are not accounted for by the description; could they be explained, or split out?
Gerrit AI review for Lustre
Several hunks are not accounted for by the description; could they be explained, or split out? - osc_cache.c: the LASSERTF message gains `io %px`, which looks like debug instrumentation for this work rather than part of the feature. - lfs.c `case 'C'`: the guard changes from `lsa_pattern == LLAPI_LAYOUT_MDT` to `(lsa_pattern & LLAPI_LAYOUT_RAID0) == 0`, a behaviour change to `-C|--overstripe-count` validation. - lov_io.c `lov_io_layout_at()` and lov_offset.c `lov_stripe_offset()`: `return` converted to `RETURN()`. - lov_offset.c: blank line after the SPDX tag removed. - sanity-pfl.sh test_16b: two blank lines removed. - lov_cl_internal.h: `lov_foreach_io_layout()` split into two macros. It would also help to state the interop story here: `LOV_PATTERN_ZEROSTART` is a new on-disk/on-wire pattern bit, so a client older than this patch fails `lov_pattern_supported()` on such a layout and cannot open the file, and an older MDS rejects the setstripe. Is a version/feature gate expected, or is "both ends must be new" the intended contract?
reply Gerrit AI review for Lustre COMMIT_MSG:10 — (typo) "Do object" -> "DoM object". This was raised on patchset 30 and is still here.
Gerrit AI review for Lustre
(typo) "Do object" -> "DoM object". This was raised on patchset 30 and is still here.
reply Gerrit AI review for Lustre COMMIT_MSG:19 — The body describes the motivation well but never names anything the patch adds, so this won't be findable later with `git log --grep`. Could
Gerrit AI review for Lustre
The body describes the motivation well but never names anything the patch adds, so this won't be findable later with `git log --grep`. Could it mention `--zerostart`, `LOV_PATTERN_ZEROSTART`/`LLAPI_LAYOUT_ZEROSTART` and `lsme_is_zerostart()` explicitly? It also doesn't cover the largest kernel-side piece: the rework of `lov_io_iter_init()` that pulls the last stripe of the preceding component into a truncate so the KMS survives when a ZEROSTART component is truncated to its own start. That deserves a paragraph. A few hunks are not explained at all and read as leftovers - should they be split out, or described? - `lustre/osc/osc_cache.c`: the `osc_extent_find()` LASSERTF() gains the `io %px` argument; it looks like a debugging aid rather than part of the feature. - `lustre/utils/lfs.c`: the `-C|--overstripe-count` check changes from `== LLAPI_LAYOUT_MDT` to `& LLAPI_LAYOUT_RAID0` and the message text changes. That is a user-visible behaviour change and isn't needed for `--zerostart` to work. - `lustre/tests/sanity-dom.sh`: dropping the explicit `mkdir -p $MOUNT2` / `mount_client $MOUNT2` is unrelated to this feature (it is redundant with `MOUNT_2=yes` + `check_and_setup_lustre`, so it looks correct, just out of scope).
reply Gerrit AI review for Lustre COMMIT_MSG:10 — (typo) "Do object" was pointed out on patch set 30 and is still here. Should it be "DoM object"?
Gerrit AI review for Lustre
(typo) "Do object" was pointed out on patch set 30 and is still here. Should it be "DoM object"?
reply Gerrit AI review for Lustre COMMIT_MSG:13 — (style) The body explains the motivation but not what the patch actually changes, so it is hard to find later with git log. If the patch is
Gerrit AI review for Lustre
(style) The body explains the motivation but not what the patch actually changes, so it is hard to find later with git log. If the patch is refreshed, could it name: - the new `LOV_PATTERN_ZEROSTART` / `LLAPI_LAYOUT_ZEROSTART` pattern bit - the `lfs setstripe --zerostart` and `-L raid0,zerostart` options - the truncate change in lov_io_iter_init(), which pulls the last stripe of the preceding component into a truncate landing on a ZEROSTART component start - the new sanity-zero.sh suite Also, the subject should not end with a period.
reply Gerrit AI review for Lustre lfs-setstripe.1:189 — (minor) There is no `lfs join` command or `lfs-join.1` man page in the tree - the join-file feature was removed, as the commit message itsel
Gerrit AI review for Lustre
(minor) There is no `lfs join` command or `lfs-join.1` man page in the tree - the join-file feature was removed, as the commit message itself notes. This cross-reference will be a dangling link; could the sentence just describe the property directly?
reply Gerrit AI review for Lustre lfs-setstripe.1:219 — (typo) "below" - the `--zerostart` description is above this one in the page.
Gerrit AI review for Lustre
(typo) "below" - the `--zerostart` description is above this one in the page.
reply Gerrit AI review for Lustre lfs-setstripe.1:599 — (minor) EXAMPLES doesn't gain a `--zerostart` case. A short composite example, e.g. a DoM or plain first component followed by a zerostart o
Gerrit AI review for Lustre
(minor) EXAMPLES doesn't gain a `--zerostart` case. A short composite example, e.g. a DoM or plain first component followed by a zerostart one, would show how the option is meant to be combined - the option description alone leaves that to the reader.
reply Gerrit AI review for Lustre lfs-setstripe.1:217 — (typo) "see --zerostart below": the --zerostart option is described above this point in the page.
Gerrit AI review for Lustre
(typo) "see --zerostart below": the --zerostart option is described above this point in the page.
owner Alexey Lyashkov · uploader Alexey Lyashkov · PS38 uploaded 35d ago · NEW · open in Gerrit ↗
commit message
LU-18461 layout: allow to be started from zero offset. Traditional PFL objects have a hole at the start to accommodate the Do object if it needs to be migrated. This is not always necessary, however, as the hole can prevent the use of large files with a small number of OST objects in the ldiskfs backend. Introducing the ability to eliminate this hole at the beginning could provide an opportunity for OST objects to be moved across components and offsets, and allow for a greater number of OST objects to be stored in larger files. Additionally, multiple files could be combined into one, similar to the join file feature of the past, once components are able to be relocated. Test-Parameters: testlist=sanity-zero Signed-off-by: Alexey Lyashkov <alexey.lyashkov@hpe.com> Change-Id: I730c66c695a3ff718c78cb82dab878b4f720bf55
66775
master
J !B ✓T ✓R -1/2−
LU-9639 ldlm: Add kernel doc style for LDLM (13)
reviewing Arshad Hussain · PS1→PS5 since your +1
needs rebase
dwg
2 unresolved
S +34 −12
36d
LU-9639 ldlm: Add kernel doc style for LDLM (13)
reviewing Arshad Hussain · PS1→PS5 since your +1
needs rebase
dwg
2 unresolved
S +34 −12
36d
PS1→PS5 since your +1
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
janitor run: 4 failing config(s), none unique to this patch — janitor results
build #130081 SUCCESS · tests all Maloo sessions
no vote yet: Oleg Drokin, Timothy Day
patchsets:
PS1 06-22
PS2 08-16
PS3 08-16
PS4 08-18
PS5 08-24 Oleg Drokin
your previous vote: +1 on PS1 (2026-07-30 18:59) — now at PS5
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre ldlm_cache_policy.c:178 — This isn't a bug, but since the patch is correcting the facts in this block: both criteria are documented as "exceeds", while the code uses
Gerrit AI review for Lustre
This isn't a bug, but since the patch is correcting the facts in this block: both criteria are documented as "exceeds", while the code uses >= for each of them.
return (ns->ns_nr_priv >= (LDLM_DEFAULT_LRU_SIZE >> 3)) &&
(ns->ns_nr_priv >=
(u64)ns->ns_nr_unused * ns->ns_lfru_priv_ratio_limit_256 >> 8);
At exactly 1/8 of the default LRU size, or exactly at the ratio, this returns true. Would "reaches" or "is at least" read more accurately?
reply Gerrit AI review for Lustre ldlm_plain.c:122 — (defect) These two descriptions look exchanged with respect to the body. LDLM_ITER_STOP is what the two conflict branches return, and LDLM_I
Gerrit AI review for Lustre
(defect) These two descriptions look exchanged with respect to the body. LDLM_ITER_STOP is what the two conflict branches return, and LDLM_ITER_CONTINUE is what is returned once the lock has been granted:
rc = ldlm_plain_compat_queue(&res->lr_granted, lock, NULL);
if (!rc)
RETURN(LDLM_ITER_STOP);
rc = ldlm_plain_compat_queue(&res->lr_waiting, lock, NULL);
if (!rc)
RETURN(LDLM_ITER_STOP);
ldlm_resource_unlink_lock(lock);
ldlm_grant_lock(lock, grant_work);
RETURN(LDLM_ITER_CONTINUE);
ldlm_plain_compat_queue() returns 0 for "conflicting locks found", as its own Return: block a few lines up in this patch says, so !rc is the conflict case.
Should the two bullets swap places?
owner Arshad Hussain · uploader Oleg Drokin · PS5 uploaded 72d ago · NEW · open in Gerrit ↗
commit message
LU-9639 ldlm: Add kernel doc style for LDLM (13) Convert the function comments in ldlm_plain.c and ldlm_cache_policy.c to kernel doc style, correcting two stale facts they state: ldlm_process_plain_lock() is called with the resource lock held, not the namespace lock, and the ldlm_lfru_priv_too_many() ratio limit defaults to 30%, not 1/3. Test-Parameters: trivial Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Signed-off-by: Oleg Drokin <green@whamcloud.com> Assisted-by: ClaudeCode:Opus-5 llm_code_and_review_tools Change-Id: I30187b94aee65fae6bd5ddbfa91e807ea1350d7f
65426
master
J ✓B ✓T ✓R -1/2−
LU-20154 ldiskfs: fix credit calculation for xattr
reviewing Alexey Lyashkov · PS9→PS12 since your -1 — your objection was dropped
18 unresolved
XL +1330 −87
99d
LU-20154 ldiskfs: fix credit calculation for xattr
reviewing Alexey Lyashkov · PS9→PS12 since your -1 — your objection was dropped
18 unresolved
XL +1330 −87
99d
9 optional test failure(s) — informational
build #127257 SUCCESS · tests all Maloo sessions
reviews:
Alex Zhuravlev -1
no vote yet: Qian Yingjin, Alexander Zarochentsev, Andrew Perepechko, Oleg Drokin
patchsets:
PS8 04-22
PS9 04-24
PS10 05-31
PS11 07-07 Jian Yu
PS12 07-07 Jian Yu
+7 earlier
PS1 04-20 PS2 04-20 Janitor Bot PS3 04-21 PS4 04-21 Janitor Bot PS5 04-21 PS6 04-21 Janitor Bot PS7 04-22your previous vote: -1 on PS9 (2026-05-29 01:06) — now at PS12
threads: 18 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — ldiskfs/xattr.c:
Misc Code Checks Robot (Gatekeeper helper)
ldiskfs/xattr.c: warning: sparse:no newline at end of file
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — ldiskfs/xattr.c:
Misc Code Checks Robot (Gatekeeper helper)
ldiskfs/xattr.c: warning: sparse:no newline at end of file
reply Gerrit AI review for Lustre COMMIT_MSG:9 — The body only describes the ldiskfs credit reuse. Several hunks aren't accounted for:
Gerrit AI review for Lustre
The body only describes the ldiskfs credit reuse. Several hunks aren't accounted for: - `lnet/libcfs/tracefile.c` drops `static` from `cfs_trace_data` - nothing else in the patch touches libcfs. Is this a debugging leftover that should be dropped? - `osd_trans_dump_creds()` changes from `struct thandle *` to `struct osd_thandle *`, touching four call sites. That's a standalone cleanup. - The ldiskfs patches add `EXPORT_SYMBOL(ext4_xattr_ibody_get)` alongside the one that is actually needed. - `osd_declare_attr_set()` stops declaring `OSD_OT_XATTR_SET` unconditionally and gates it on the LMA flags. That is a behaviour change worth a sentence of its own. Also a few wording slips: "old code don't able to account" -> "the old code cannot account", "lets reuse" -> "let's reuse".
reply Gerrit AI review for Lustre COMMIT_MSG:12 — (typo) The quoted subject doesn't match the referenced commit. `git log -1 --format=%s 278fa1fb23` gives:
Gerrit AI review for Lustre
(typo) The quoted subject doesn't match the referenced commit. `git log -1 --format=%s 278fa1fb23` gives:
LU-12652 ldiskfs: disable credits check in 4.18
The leading `35750: ` is the Gerrit change number, not part of the subject.
reply Alexey Lyashkov patchset comment — I checked again with 5.14.0-570.62.1.el9_6.x86_64 and 5.14.0-611.35.1.el9_7.x86_64.
Oleg Drokin
I manually reverted rhel9.6/9.7 series so it points back at 5.14 patch again and the build is restored so I believe this patch is just broken.
Alexey Lyashkov
It looks like RHEL9.6/9.7 kernel have a changes in ext4 version. sometimes it have ext4/crypto.c - sometimes not. I have tested with lastes 9.6/9.7 version but our code it looks not a last.
Alexey Lyashkov
I checked again with 5.14.0-570.62.1.el9_6.x86_64 and 5.14.0-611.35.1.el9_7.x86_64. It looks you needs to update a kernel versions.
reply Alex Zhuravlev ext4-xattr-disable-credits-check.patch:36 — this is
Alex Zhuravlev
ext4 never sets few EAs in a single transaction AFAIU. so it's unlikely this kind of change can make into vanilla kernel.
Alexey Lyashkov
sure. it's sets. example of this in the patch. You lost it ?
Alex Zhuravlev
sorry? how many EAs an user can set using clean ext4 in a single transaction?
Alex Zhuravlev
this is
reply Gerrit AI review for Lustre ext4-xattr-disable-credits-check.patch:233 — (defect) This `Index:` header has no `---`/`+++` lines and no hunks - the crypto.c change is missing from this file (the linux-6.12 copy has
Gerrit AI review for Lustre
(defect) This `Index:` header has no `---`/`+++` lines and no hunks - the crypto.c change is missing from this file (the linux-6.12 copy has it). This file also never patches `fs/ext4/super.c`.
`ext4_set_context()` lives in `fs/ext4/crypto.c` on 5.16+ and in `fs/ext4/super.c` before that, and in both it calls
ext4_xattr_set_credits(inode, len, false, &credits)
while the xattr.h hunk above changes the prototype to 6 arguments. `ldiskfs/Makefile.in` copies every `@EXT4_SRC_DIR@/*.c` for patching and only filters `crypto.c` out of the object list when `CONFIG_FS_ENCRYPTION` is unset, so with encryption enabled this is `error: too few arguments to function 'ldiskfs_xattr_set_credits'`.
That breaks every series still pointing at this file - rhel9.1 through 9.5, sles15sp4/sp5, oe2203, the 5.15/5.19 ubuntu20 series, ubuntu24 -45/-100/-106, ubuntu26, and all of 6.1/6.6/6.7/6.10/6.11/6.12/6.18/7.0-ml.
This is the same breakage that was reported earlier on rhel9.6/9.7; switching those two series to the linux-6.12 copy moved the failure rather than fixing it.
reply Gerrit AI review for Lustre ext4-xattr-disable-credits-check.patch:134 — (minor) `ext4_xattr_ibody_get` doesn't seem to have any caller outside ldiskfs - grepping the tree for `ldiskfs_xattr_ibody_get` finds nothi
Gerrit AI review for Lustre
(minor) `ext4_xattr_ibody_get` doesn't seem to have any caller outside ldiskfs - grepping the tree for `ldiskfs_xattr_ibody_get` finds nothing. Is this export needed, or left over from an earlier version?
reply Oleg Drokin ldiskfs-5.14-rhel9.6.series:34 — does not look like it actually applies to rhel9.6?
Oleg Drokin
does not look like it actually applies to rhel9.6?
reply Oleg Drokin ldiskfs-5.14-rhel9.7.series:34 — I wonder if this also works?
Oleg Drokin
I wonder if this also works?
reply Gerrit AI review for Lustre ldiskfs-6.8.0-90-ubuntu24.series:32 — (defect) Only `6.8.0-90` was moved to the linux-6.12 copy. `ldiskfs-6.8.0-45-ubuntu24.series`, `ldiskfs-6.8.0-100-ubuntu24.series` and `ldis
Gerrit AI review for Lustre
(defect) Only `6.8.0-90` was moved to the linux-6.12 copy. `ldiskfs-6.8.0-45-ubuntu24.series`, `ldiskfs-6.8.0-100-ubuntu24.series` and `ldiskfs-6.8.0-106-ubuntu24.series` still reference `linux-5.14/ext4-xattr-disable-credits-check.patch`, and those kernels have `fs/ext4/crypto.c`. Same for the mainline series (6.6/6.12/6.18/7.0-ml) and 7.0.0-14-ubuntu26. Should the remaining series be switched too, or should the linux-5.14 copy be completed instead?
reply Misc Code Checks Robot (Gatekeeper helper) tracefile.c:36 — warning: sparse:symbol 'cfs_trace_data' was not declared. Should it be static?
Misc Code Checks Robot (Gatekeeper helper)
warning: sparse:symbol 'cfs_trace_data' was not declared. Should it be static?
owner Alexey Lyashkov · uploader Jian Yu · PS12 uploaded 120d ago · NEW · open in Gerrit ↗
commit message
LU-20154 ldiskfs: fix credit calculation for xattr
old code don't able to account an EA inode credits,
lets reuse an ldiskfs code to avoid this.
Fixes: 278fa1fb23 ("35750: LU-12652 ldiskfs: disable credits check in 4.18")
HPe-bug-id: LUS-12937
Signed-off-by: Alexey Lyashkov <alexey.lyashkov@hpe.com>
Change-Id: Id7eca1783dd4f6848f8d235b6159b8d34eb398db
65797
b2_15
J ✗1B ✓T ✓R +2/1
LU-20071 kernel: new kernel [RHEL 9.8 5.14.0-687.13.1.el9_8]
reviewing Jian Yu · PS5→PS7 since your +1
stalled 116d
S +34 −1
116d
LU-20071 kernel: new kernel [RHEL 9.8 5.14.0-687.13.1.el9_8]
reviewing Jian Yu · PS5→PS7 since your +1
stalled 116d
S +34 −1
116d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity1@ldiskfs+DNE:test_27T | seen in 5 other reviews |
1 optional test failure(s) — informational
build #126292 SUCCESS · tests all Maloo sessions
reviews:
Alex Deiter +1 · Shaun Tancheff +1
no vote yet: Andreas Dilger
patchsets:
PS3 05-13
PS4 05-13
PS5 05-28
PS6 06-05
PS7 06-09
+2 earlier
PS1 05-11 PS2 05-12your previous vote: +1 on PS5 (2026-05-28 17:06) — now at PS7
owner Jian Yu · uploader Jian Yu · PS7 uploaded 147d ago · NEW · backport · open in Gerrit ↗
commit message
LU-20071 kernel: new kernel [RHEL 9.8 5.14.0-687.13.1.el9_8] This patch makes changes to support new RHEL 9.8 release for Lustre client. Linux commit v6.15-13744-g41cb08555c41 treewide, timers: Rename from_timer() to timer_container_of() Provide timer_container_of for older kernels when is not defined. Lustre-change: https://review.whamcloud.com/65431 Lustre-commit: TBD (from a5288b6979f0c8cb1dd53e513b245035525e0f5c) Test-Parameters: trivial fstype=ldiskfs mdtcount=4 mdscount=2 \ clientdistro=el9.8 serverdistro=el8.10 testlist=sanity Test-Parameters: optional fstype=zfs mdtcount=4 mdscount=2 \ clientdistro=el9.8 serverdistro=el8.10 testlist=sanity Test-Parameters: optional fstype=ldiskfs mdtcount=4 mdscount=2 \ clientdistro=el9.8 serverdistro=el8.10 testgroup=full-dne-part-1 Test-Parameters: optional fstype=ldiskfs mdtcount=4 mdscount=2 \ clientdistro=el9.8 serverdistro=el8.10 testgroup=full-dne-part-2 Test-Parameters: optional fstype=ldiskfs mdtcount=4 mdscount=2 \ clientdistro=el9.8 serverdistro=el8.10 testgroup=full-dne-part-3 Change-Id: I550b9425a6a4868a9f8f817d3e1e74068840df51 Signed-off-by: Jian Yu <yujian@whamcloud.com> Signed-off-by: Fredrik Nyström <freny@nsc.liu.se>
64244
master
J ✗1B ✓T ✗2R 0/2
LU-19926 ldlm: release stats sysfs entries are removed
reviewing Alex Zhuravlev · PS2→PS5 since your +1
1 unique failure
stalled 144d
2 unresolved
XS +2 −3
144d
LU-19926 ldlm: release stats sysfs entries are removed
reviewing Alex Zhuravlev · PS2→PS5 since your +1
1 unique failure
stalled 144d
2 unresolved
XS +2 −3
144d
PS2→PS5 since your +1
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity3@zfs:test_271f | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-zfs-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-4 | RHEL 8.10 / x86_64 | ran 9 tests. 1 tests failed: sanity-quota. | session |
build #126453 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Mikhail Pershin
patchsets:
PS1 02-26
PS2 03-30
PS3 05-28
PS4 06-08
PS5 06-12
your previous vote: +1 on PS2 (2026-04-20 17:35) — now at PS5
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Oleg Drokin ldlm_resource.c:773 — ugh, why was it here when it registers in ldlm_namespace_sysfs_register?
Oleg Drokin
ugh, why was it here when it registers in ldlm_namespace_sysfs_register?
reply Oleg Drokin ldlm_resource.c:1317 — should we just move this two lines up instead?
Oleg Drokin
should we just move this two lines up instead?
owner Alex Zhuravlev · uploader Alex Zhuravlev · PS5 uploaded 145d ago · NEW · open in Gerrit ↗
commit message
LU-19926 ldlm: release stats sysfs entries are removed otherwise we can hit a panic/gfp when umount races with lctl get_param: 186546:0:(lprocfs_status.c:1689:lprocfs_stats_collector()) ASSERTION( stats ) failed: 186546:0:(lprocfs_status.c:1689:lprocfs_stats_collector()) LBUG Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com> Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com> Change-Id: I74558c077cd5ccf962e01ce2c013bb6ea9a0754a
63361
master
J ✗1B ✓T ✗0R -1/2−
LU-19323 lnet: add IPv6 support to lnet_selftest
reviewing Serguei Smirnov · PS4→PS6 since your -1 — your objection was dropped
needs rebase
1 unique failure
stalled 177d
12 unresolved
XL +2239 −574
177d
LU-19323 lnet: add IPv6 support to lnet_selftest
reviewing Serguei Smirnov · PS4→PS6 since your -1 — your objection was dropped
needs rebase
1 unique failure
stalled 177d
12 unresolved
XL +2239 −574
177d
PS4→PS6 since your -1 — your objection was dropped
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; janitor: test failures unique to this patch; enforced tests failed
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| replay-dual@zfs+DNE:test_26 | seen in 17 other reviews |
build #122607 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Timothy Day
patchsets:
PS2 01-13 Janitor Bot
PS3 01-13
PS4 02-25
PS5 03-04
PS6 03-16
+1 earlier
PS1 01-13your previous vote: -1 on PS4 (2026-02-25 20:06) — now at PS6
threads: 8 need your reply · 3 waiting on others · 1 own notes · 0 bot
reply Andreas Dilger COMMIT_MSG:11 — (minor) this looks like an `sptlrpc` parameter. Also, version numbers never really explain what they are for. It would be better to name t
Andreas Dilger
(minor) this looks like an `sptlrpc` parameter. Also, version numbers never really explain what they are for. It would be better to name this something more clear like `lst_force_large_nid`.
reply Serguei Smirnov COMMIT_MSG:11 — srpc_force_v2 is for disabling v1 on v2 hosts. If it is not used, there's "handshaking": v2 is able to initiate a session with v1 (ipv4) or
James Simmons
Yucky. Can't we do version handshaking instead. My next patch in this area will try the hand shaking approach.
Serguei Smirnov
srpc_force_v2 is for disabling v1 on v2 hosts. If it is not used, there's "handshaking": v2 is able to initiate a session with v1 (ipv4) or v2 (both ipv6 and ipv4), v1 is able to initiate an ipv4 session to v2 and v1.
reply Andreas Dilger COMMIT_MSG:12 — Is there no mechanism that LNet (and LST) can use to automatically negotiate protocol feature support? If not, then this should be added as
Andreas Dilger
Is there no mechanism that LNet (and LST) can use to automatically negotiate protocol feature support? If not, then this should be added as part of this compatibility-breaking change. Or do I misread this, and the `srpc_force_v2` is only used to force the new large-NID functionality on systems that don't need it?
reply Andreas Dilger COMMIT_MSG:15 — (defect) this should have `env=FORCE_LARGE_NID=true` to run IPv6 sessions?
Andreas Dilger
(defect) this should have `env=FORCE_LARGE_NID=true` to run IPv6 sessions?
reply Andreas Dilger lnetst.h:72 — (minor) variable-sized `lnet_processid` should go after `nde_state`
Andreas Dilger
(minor) variable-sized `lnet_processid` should go after `nde_state`
reply Andreas Dilger lnetst.h:123 — (minor) These should all be replaced with fixed-size types (e.g. `__u32`)
Andreas Dilger
(minor) These should all be replaced with fixed-size types (e.g. `__u32`)
reply Andreas Dilger lnetst.h:301 — (minor) should remove pointers from UAPI structs, especially in the middle
Andreas Dilger
(minor) should remove pointers from UAPI structs, especially in the middle
note James Simmons conrpc.c:39 — I thought I ported the SID handling to Netlink.
James Simmons
I thought I ported the SID handling to Netlink.
reply Andreas Dilger module.c:73 — ??
Andreas Dilger
??
owner Serguei Smirnov · uploader Serguei Smirnov · PS6 uploaded 232d ago · NEW · open in Gerrit ↗
commit message
LU-19323 lnet: add IPv6 support to lnet_selftest Adds IPv6 support to lnet_selftest. Is backwardly-compatible to earlier versions of selftest. Adds module parameter srpc_force_v2 which can optionally force large-NID (v2) protocol on wire (breaks v1-compatibility) Test-Parameters: fortestonly Test-Parameters: trivial testlist=sanity-lnet Signed-off-by: Serguei Smirnov <ssmirnov@whamcloud.com> Change-Id: I3879dc88f0c89ebbaa21adb9faca6782a855ee3a
53005
master
J !B ✓T ✗3R -1/2−
LU-17266 mdt: purge objects via procfs
reviewing Alex Zhuravlev · PS57→PS62 since your -1 — your objection was dropped
needs rebase
stalled 199d
3 unresolved
M +124 −3
199d
LU-17266 mdt: purge objects via procfs
reviewing Alex Zhuravlev · PS57→PS62 since your -1 — your objection was dropped
needs rebase
stalled 199d
3 unresolved
M +124 −3
199d
PS57→PS62 since your -1 — your objection was dropped
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
janitor run: 1 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-5 | RHEL 8.10 / x86_64 | ran 7 tests. 1 tests failed: lustre-rsync-test. | session |
| review-dne-zfs-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 2 tests failed: sanity-sec, sanity-lnet. | session |
5 optional test failure(s) — informational
build #117204 SUCCESS · tests all Maloo sessions
no vote yet: Qian Yingjin, Andreas Dilger
patchsets:
PS58 09-05
PS59 09-10
PS60 09-15
PS61 09-19
PS62 10-07
+57 earlier
PS1 11-06 PS2 11-07 PS3 11-07 PS4 11-07 PS5 11-07 PS6 11-07 PS7 11-07 PS8 11-08 PS9 11-08 PS10 11-14 PS11 11-17 PS12 01-06 PS13 01-10 PS14 01-19 PS15 01-22 PS16 01-24 PS17 01-24 PS18 02-27 PS19 02-27 PS20 02-27 PS21 03-11 PS22 03-12 PS23 03-22 PS24 04-09 PS25 04-12 PS26 04-15 PS27 04-25 PS28 04-30 PS29 06-21 PS30 07-27 PS31 08-11 PS32 08-22 PS33 09-09 PS34 09-09 PS35 10-09 PS36 10-20 PS37 10-30 PS38 11-20 PS39 11-29 PS40 12-04 PS41 12-11 PS42 12-19 PS43 12-24 PS44 12-25 PS45 01-23 PS46 02-14 PS47 03-03 PS48 03-13 PS49 04-11 PS50 04-18 PS51 04-28 PS52 05-11 PS53 05-22 PS54 05-22 PS55 05-22 PS56 06-12 PS57 06-16your previous vote: -1 on PS57 (2025-06-16 14:25) — now at PS62
threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger lproc_llite.c:408 — (minor) Most parameters allow other values to be written to clear it, like "0", and not just "clear".
Andreas Dilger
(minor) Most parameters allow other values to be written to clear it, like "0", and not just "clear".
reply Andreas Dilger mdt_lproc.c:491 — same
Andreas Dilger
same
reply Andreas Dilger lproc_ofd.c:897 — ...
Andreas Dilger
...
owner Alex Zhuravlev · uploader Alex Zhuravlev · PS62 uploaded 393d ago · NEW · open in Gerrit ↗
commit message
LU-17266 mdt: purge objects via procfs sometimes it can be useful for testing to drop/reload lu objects. lctl set_param mdt.*.site_stats=clear lctl set_param ofd.*.site_stats=clear it should be possible to replace total system cache drop (echo 3 > /proc/sys/vm/drop_caches) with this lustre-only version. Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com> Change-Id: I9055be3b53d0af22758eac0acac8771e40c371f7
52875
master
J ✗30B ✓T ✗11R 0/2
LU-8980 debug: redefine CDEBUG to use tracing
reviewing Timothy Day · PS1→PS7 since your -1 — your objection was dropped
30 unique failures
stalled 243d
8 unresolved
XL +643 −2491
243d
LU-8980 debug: redefine CDEBUG to use tracing
reviewing Timothy Day · PS1→PS7 since your -1 — your objection was dropped
30 unique failures
stalled 243d
8 unresolved
XL +643 −2491
243d
PS1→PS7 since your -1 — your objection was dropped
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity2@ldiskfs+DNE:test_35a | seen in 4 other reviews |
| conf-sanity2@ldiskfs+DNE:test_35b | seen in 18 other reviews |
| conf-sanity2@ldiskfs+DNE:test_37 | seen in 18 other reviews |
| conf-sanity2@ldiskfs+DNE:test_38 | seen in 16 other reviews |
| conf-sanity2@ldiskfs+DNE:test_39 | seen in 28 other reviews |
| conf-sanity2@ldiskfs+DNE:test_40 | seen in 30 other reviews |
| conf-sanity2@ldiskfs+DNE:test_41a | seen in 27 other reviews |
| conf-sanity2@zfs:test_35a | seen in 4 other reviews |
| conf-sanity2@zfs:test_35b | seen in 8 other reviews |
| conf-sanity2@zfs:test_38 | seen in 11 other reviews |
| conf-sanity2@zfs:test_39 | seen in 25 other reviews |
| conf-sanity2@zfs:test_40 | seen in 25 other reviews |
| conf-sanity2@zfs:test_41a | seen in 12 other reviews |
| recovery-small@ldiskfs+DNE:test_10a | NEW unique failure for this branch in the last 30 days, and was seen 1 times across 1 other branches 1 reviews |
| recovery-small@ldiskfs+DNE:test_24b | seen in 4 other reviews |
| recovery-small@ldiskfs+DNE:test_106 | seen in 4 other reviews |
| recovery-small@ldiskfs+DNE:test_108 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| recovery-small@zfs:test_10a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| recovery-small@zfs:test_24b | seen in 2 other reviews |
| recovery-small@zfs:test_106 | seen in 4 other reviews |
| replay-single@ldiskfs+DNE:test_65b | seen in 6 other reviews |
| replay-single@zfs:test_65b | seen in 6 other reviews |
| sanity2@ldiskfs+DNE:test_60f | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_170 | NEW unique failure for this branch in the last 30 days, and was seen 1 times across 1 other branches 1 reviews |
| sanity2@ldiskfs+DNE:test_360 | NEW unique failure for this branch in the last 30 days, and was seen 1 times across 1 other branches 1 reviews |
| sanity2@ldiskfs+DNE:test_401a | NEW unique failure for this branch in the last 30 days, and was seen 1 times across 1 other branches 1 reviews |
| sanity2@ldiskfs+DNE:test_818 | seen in 7 other reviews |
| sanity2@zfs:test_60f | seen in 1 other review |
| sanity2@zfs:test_170 | seen in 1 other review |
| sanity2@zfs:test_401a | NEW unique failure for this branch in the last 30 days, and was seen 1 times across 1 other branches 1 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 9.3/x86_64 | ran 4 tests. 1 tests failed: sanity. | session |
| review-dne-part-3 | RHEL 9.3/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. This build will be scored -1 since fortestonly was specified. | session |
| review-dne-part-5 | RHEL 9.3/x86_64 | ran 6 tests. 1 tests failed: recovery-small. | session |
| review-dne-part-6 | RHEL 9.3/x86_64 | ran 4 tests. 1 tests failed: replay-single. | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.9/x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.9/x86_64 | ran 5 tests. 1 tests failed: recovery-small. | session |
| review-ldiskfs | RHEL 8.9/x86_64, RHEL 9.3/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 9.3/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.9/x86_64, SLES 15.5/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.9/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-zfs | RHEL 8.9/x86_64 | ran 8 tests. 1 tests failed: replay-single. | session |
3 optional test failure(s) — informational
build #105198 SUCCESS · tests all Maloo sessions
no vote yet: Yang Sheng, Alexey Lyashkov, Andreas Dilger, Neil Brown
patchsets:
PS3 06-03
PS4 06-03
PS5 06-04
PS6 06-04
PS7 06-05
+2 earlier
PS1 10-28 PS2 11-01your previous vote: -1 on PS1 (2023-10-28 20:53) — now at PS7
threads: 8 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Timothy Day libcfs_debug.h:143 — I'm hoping to use the tracepoints to enable/disable subsystem logging. There's a tracepoint enabled macro I could use to restore this check.
Alexey Lyashkov
never kill a subsystem check. I will make developers work harder.
Timothy Day
I'm hoping to use the tracepoints to enable/disable subsystem logging. There's a tracepoint enabled macro I could use to restore this check.
reply Timothy Day libcfs_debug.h:179 — Yes. This is super hack-y. There's definitely a better way to do this.
Andreas Dilger
Does this add 256 bytes of stack usage to every function that calls CDEBUG()? That could be pretty bad in some call chains.
Timothy Day
Yes. This is super hack-y. There's definitely a better way to do this.
reply Timothy Day libcfs_debug.h:182 — This entire __ltrace_printk() macro sucks. I need to rewrite it entirely. I have an idea that should make this macro much better.
Alexey Lyashkov
you are really want to kill a performance? I think yes.
Timothy Day
This entire __ltrace_printk() macro sucks. I need to rewrite it entirely. I have an idea that should make this macro much better.
reply Timothy Day libcfs_debug.h:196 — I'll probably have to, since old kernels don't like '#include <linux/ratelimit_types.h>'. I was hoping that these macro would be simpler.
Andreas Dilger
There are tunable parameters for the CDEBUG rate limiting, why not use them here?
Timothy Day
I'll probably have to, since old kernels don't like '#include <linux/ratelimit_types.h>'. I was hoping that these macro would be simpler.
reply Andreas Dilger libcfs_debug.h:220 — Sorry, I was thinking this was the no-op version of the actual libcfs_debug_msg() which had been removed. Carry on.
Andreas Dilger
This will also need to be fixed.
Timothy Day
I think this is fine? This is just redefining this function to be always false is debugging is disabled.
Andreas Dilger
Sorry, I was thinking this was the no-op version of the actual libcfs_debug_msg() which had been removed. Carry on.
reply Timothy Day libcfs_debug.h:136 — Doesn't build on aarch64 and ppc. Needs to go in debug.c probably. These are pretty huge functions anyway.
Timothy Day
Doesn't build on aarch64 and ppc. Needs to go in debug.c probably. These are pretty huge functions anyway.
reply Timothy Day libcfs_debug.h:167 — Same.
Timothy Day
Same.
reply Timothy Day libcfs_debug.h:196 — Same.
Timothy Day
Same.
owner Timothy Day · uploader Timothy Day · PS7 uploaded 882d ago · NEW · open in Gerrit ↗
commit message
LU-8980 debug: redefine CDEBUG to use tracing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TODO: 1) Look at debug upcalls 2) Test/verify/update userspace helpers 3) Clean up more code 4) Validate LBUG, LASSERT 5) Write kernel doc comments for everything 6) Make sure various userspace settings actually work 7) Fix CDEBUG_LIMIT/CDEBUG_LIMIT_LOC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The custom Lustre debugging infrastruction should be refactored to use existing kernel debugging infrastructure. We should aim to: 1) Improve the current developer experience: Writing code for Lustre shouldn't be made harder. Existing userspace debugging tools should still work and should be improved. 2) Maintain or improve performance: Lustre is a high performance filesystem, not a low performance one. 3) Significantly reduce divergence with upstream: The custom Lustre debugging must go. The code in libcfs and various Lustre subsystem must be refactored. The first step towards that is pushing all debug message into the trace log. This will allow use to retain the features of current Lustre debugging while significantly reducing the need for custom code. This patch removes old Lustre debugging code at the same time. Also, it implements the minimum userspace code needed to make Lustre debugging tools still function. Test-Parameters: fortestonly Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: I8004049eb97a3fdc9a5725aa8402355107494950
43861
master
J !B ✓T ✗1R 0/2
LU-14717 osd-ldiskfs: set readcache_max_filesize properly
reviewing Qian Yingjin · PS1→PS2 since your -1 — your objection was dropped
stalled 372d
XS +5 −0
372d
LU-14717 osd-ldiskfs: set readcache_max_filesize properly
reviewing Qian Yingjin · PS1→PS2 since your -1 — your objection was dropped
stalled 372d
XS +5 −0
372d
PS1→PS2 since your -1 — your objection was dropped
blocked on the owner: enforced tests failed
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-zfs-part-5 crashed | RHEL 8.8/x86_64 | ran 6 tests. 1 tests failed: sanityn. %% THIS TEST SESSION CRASHED %% | session |
2 optional test failure(s) — informational
build #98522 SUCCESS · tests all Maloo sessions
no vote yet: Arshad Hussain, Andreas Dilger, Li Xi
your previous vote: -1 on PS1 (2021-05-29 14:58) — now at PS2
owner Qian Yingjin · uploader Andreas Dilger · PS2 uploaded 1145d ago · NEW · open in Gerrit ↗
commit message
LU-14717 osd-ldiskfs: set readcache_max_filesize properly When set readcache_max_filesize with a negative value from the proc/sysfs interface, we should set it with maximal value OSD_MAX_CACHE_SIZE. Signed-off-by: Qian Yingjin <qian@ddn.com> Change-Id: If5d41211b2b1016a70f470f3242a17f8d5c9d3b8
33126
master
J !B ✓T ✗1R 0/2
LU-11234 lod: add data placement policy (DPP) for OST pools
reviewing Teddy Zheng · PS16→PS18 since your -1 — your objection was dropped
stalled 456d
XL +1743 −1123
456d
LU-11234 lod: add data placement policy (DPP) for OST pools
reviewing Teddy Zheng · PS16→PS18 since your -1 — your objection was dropped
stalled 456d
XL +1743 −1123
456d
PS16→PS18 since your -1 — your objection was dropped
blocked on the owner: enforced tests failed
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | CentOS 7.0/x86_64 | ran 8 tests. 1 tests failed: sanity. | session |
1 optional test failure(s) — informational
build #12017 SUCCESS
no vote yet: Qian Yingjin, Andreas Dilger, Oleg Drokin, Li Xi
your previous vote: -1 on PS16 (2019-11-13 15:13) — now at PS18
owner Teddy Zheng · uploader Teddy Zheng · PS18 uploaded 2453d ago · NEW · open in Gerrit ↗
commit message
LU-11234 lod: add data placement policy (DPP) for OST pools
This patch provides a mechanism to place files into different pools according
to filename, jobid, fsuid, fsgid, projid and client nid. filename and jobid
support the qualifier '*'. Fsuid, fsgid, projid and client nid support range
expression. This feature is useful when Lustre is built up with different type
of devices, such as OSTs composed of SSDs and disks. To use this feature, the
same type of OSTs firstly make up one pool and DPP rules are added to
the system. Then, when handling file creation, MDT checks the operation
according to the predefined DPP rules, and put the file's object(s) into the
corresponding pool.
The usage of the rule is similar to NRS TBF. Commands for the rule are like:
Add a rule named "rule_sourcecode" according to which filename matching "*.c"
or "*.h" will be put into the pool named "pool0"
lctl set_param lod.*.dpp=\
"add rule_sourcecode pool={pool0} fname={*.h *.c}"
Add a rule named "rule_vip_users" according to which files with uid = 500 or
uid = 100 will be put into the pool named "pool1"
lctl set_param lod.*.dpp=\
"add rule_vip_users pool={pool1} uid={500 1000}"
Add a rule named "rule_vip_groups" according to which files with gid = 500 or
gid = 1000 will be put into the pool named "pool2"
lctl set_param lod.*.dpp=\
"add rule_vip_groups pool={pool2} gid={500 1000}"
Add a rule named "rule1" according to which files with projid between 500 and
600 or between 800 and 1000 will be put into the pool named "pool2"
lctl set_param lod.*.dpp=\
"add rule1 pool={pool2} projid={500-600 800-1000}"
Add a rule named "vip_client" according to which files creation from client
with nid of 10.0.0.200@tcp will be put into the pool named "pool3"
lctl set_param lod.*.dpp=\
"add vip_client pool={pool3} nid={10.0.0.200@tcp}"
It also supports complex rules. The following command will add a rule which
will put files that match any condition of 1) its uid is 500 and gid is 1000,
or 2) it has a suffix of ".h" or ".c" into the pool named "pool4"
lctl set_param lod.*.dpp=\
"add rule2 pool={pool4} uid={500}&gid={1000},fname={*.c *.h}"
Delete a rule named "rule1"
lctl set_param lod.*.dpp="del rule1"
This patch also combines the command parse functions that are shared with NRS TBF
and pcc codes.
Change-Id: Ie4876a78adcc561f79005817433a7bbdf5fbc65b
Signed-off-by: Teddy Zheng <teddy@ddn.com>
Signed-off-by: Li Xi <lixi@ddn.com>
34603
master
J –B ✓T –R 0/2
LU-10026: Configuration for compression support and lz4 module backport
reviewing Anna Fuchs · PS1→PS7 since your -1 — your objection was dropped
stalled 456d
XL +2713 −2
456d
LU-10026: Configuration for compression support and lz4 module backport
reviewing Anna Fuchs · PS1→PS7 since your -1 — your objection was dropped
stalled 456d
XL +2713 −2
456d
build #11484 SUCCESS
no vote yet: Patrick Farrell, Neil Brown, Sebastien Buisson, Andreas Dilger
your previous vote: -1 on PS1 (2019-04-05 17:31) — now at PS7
owner Anna Fuchs · uploader Anna Fuchs · PS7 uploaded 2473d ago · NEW · open in Gerrit ↗
commit message
LU-10026: Configuration for compression support and lz4 module backport This patch adds build system changes for compression: - If lz4 is not available in the kernel (< 3.11), we build a private module for it. - Always build compression module except when ldiskfs is enabled. - An option cl_compression, settable via lctl, enables or disables compression. Change-Id: I7f843ed7ca822a3f3246bd5c3e4ccb6e6f0ec90f Test-Parameters: forbuildonly, fstype=zfs Signed-off-by: Anna Fuchs <anna.fuchs@informatik.uni-hamburg.de>
35648
master
J ✓B ✓T ✓R -1/2−
LU-11380 utils: split llapi_fid2path() in three functions
reviewing Andreas Dilger · PS11→PS23 since your -1 — your objection was dropped
stalled 456d
L +359 −184
456d
LU-11380 utils: split llapi_fid2path() in three functions
reviewing Andreas Dilger · PS11→PS23 since your -1 — your objection was dropped
stalled 456d
L +359 −184
456d
1 optional test failure(s) — informational
build #13229 SUCCESS
reviews:
Quentin Bouget -1
no vote yet: Qian Yingjin, Olaf Faaland
your previous vote: -1 on PS11 (2020-01-27 16:01) — now at PS23
owner Andreas Dilger · uploader Andreas Dilger · PS23 uploaded 2401d ago · NEW · open in Gerrit ↗
commit message
LU-11380 utils: split llapi_fid2path() in three functions Split llapi_fid2path() into separate llapi_lufid2path() to avoid hoop jumping in the next patch that adds llapi_lufid2parent(). Add helper llapi_fsname_open() to open a descriptor on a filesystem by fsname or directory for llapi_lufid2path() and other functions. Use it in "lfs fid2path" to fix bug when passed a non-mount directory. Add ability to run a single subtest of llapi_fid_test with the "-o" option, or to exclude a single test with "-e" to speed up debugging. Signed-off-by: Andreas Dilger <adilger@whamcloud.com> Change-Id: I05abfaf888a5474d62feebab4e8db543b93ebbe5
38151
master
J ✗21B ✓T ✗15R 0/2
LU-13419 osc: Improve speed of enter_cache_try
reviewing Patrick Farrell (personal) · PS9→PS11 since your +1
21 unique failures
stalled 456d
M +31 −23
456d
LU-13419 osc: Improve speed of enter_cache_try
reviewing Patrick Farrell (personal) · PS9→PS11 since your +1
21 unique failures
stalled 456d
M +31 −23
456d
PS9→PS11 since your +1
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity1@ldiskfs+DNE:test_39j | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_64f | seen in 37 other reviews |
| sanity2@ldiskfs+DNE:test_133c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_398g | seen in 13 other reviews |
| sanity1@zfs:test_42e | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity1@zfs:test_45 | seen in 4 other reviews |
| sanity-benchmark@ldiskfs+DNE:test_fsx | seen in 17 other reviews |
| sanity-benchmark@ldiskfs+DNE:test_fsx_partial_punch | seen in 8 other reviews |
| sanity-dom@ldiskfs+DNE:test_fsx | seen in 7 other reviews |
| sanity-dom@zfs:test_fsx | seen in 7 other reviews |
| sanity-dom@zfs:test_42e | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-dom@zfs:test_4 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-flr@ldiskfs+DNE:test_70a | seen in 63 other reviews |
| sanity-flr@zfs:test_70a | seen in 53 other reviews |
| sanity-hsm@zfs:test_3 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanityn@ldiskfs+DNE:test_16k | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanityn@ldiskfs+DNE:test_18 | seen in 1 other review |
| sanityn@zfs:test_16a | seen in 3 other reviews |
| sanityn@zfs:test_16b | seen in 3 other reviews |
| sanityn@zfs:test_16k | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanityn@zfs:test_18 | seen in 1 other review |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 9.3 / x86_64 | ran 4 tests. 1 tests failed: sanity. | session |
| review-dne-part-4 | RHEL 9.3 / x86_64 | ran 9 tests. 2 tests failed: sanity-flr, sanity-dom. | session |
| review-dne-part-5 | RHEL 9.3 / x86_64 | ran 6 tests. 2 tests failed: sanityn, lustre-rsync-test. | session |
| review-dne-part-6 | RHEL 9.3 / x86_64 | ran 6 tests. 1 tests failed: replay-single. | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.9 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-1 crashed | RHEL 8.9 / x86_64 | ran 6 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-4 | RHEL 8.9 / x86_64 | ran 9 tests. 1 tests failed: sanity-dom. | session |
| review-dne-zfs-part-5 | RHEL 8.9 / x86_64 | ran 6 tests. 2 tests failed: sanityn, lustre-rsync-test. | session |
| review-dne-zfs-part-6 | RHEL 8.9 / x86_64 | ran 6 tests. 1 tests failed: replay-single. | session |
| review-dne-zfs-part-7 | RHEL 8.9 / x86_64 | ran 4 tests. 1 tests failed: sanity-pcc. | session |
| review-ldiskfs | RHEL 9.3 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.9 / x86_64, SLES 15.5 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.9 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.9 / x86_64, RHEL 9.3 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-zfs | RHEL 8.9 / x86_64 | ran 10 tests. 2 tests failed: replay-single, sanity-flr. | session |
18 optional test failure(s) — informational
build #108929 SUCCESS · tests all Maloo sessions
no vote yet: Wang Shilong, Qian Yingjin, Shuichi Ihara, Neil Brown, Li Dongyang, Andreas Dilger, Patrick Farrell
your previous vote: +1 on PS9 (2020-04-13 23:15) — now at PS11
owner Patrick Farrell (personal) · uploader Patrick Farrell · PS11 uploaded 722d ago · NEW · open in Gerrit ↗
commit message
LU-13419 osc: Improve speed of enter_cache_try When doing writes to many files, one bottleneck on a client currently seems to be the grant code, specifically spinning in the lock around: osc_enter_cache_try The contention is *just* on osc_enter_cache_try, so there's no obvious way to refactor the lock, etc. Instead, we can look at where time is going in the function. Two things that stand out: obd_dirty_pages is an atomic, and expensive: In my perf tracing, the add_return to this is 50% of the time in this function. This can be replaced with a percpu_counter. These benchmark #s are with the earlier version of the patch, which mistakenly replaced the atomic with a bare unsigned long. I'm not currently able to benchmark the percpu_counter, but it should be similar. mpirun -np 36 $IOR -o $LUSTRE -w -t 1M -b 2G -i 1 -F That's 36 processes on one client, writing to separate files. Before patch: 5942 MiB/s After patch: 14950 MiB/s Looking in perf, the change is huge: I go from spending 60% of the time in osc_enter_cache_try to around 30%, but that's while moving 2.3x the amount of data per second. Signed-off-by: Patrick Farrell <paf0187@gmail.com> Change-Id: If5a69b906c6b56786e6a06dccc723781591419e8
40257
master
J ✓B ✓T ✓R -1/2−
LU-10973 lnet: Support autotest integration
reviewing Amir Shehata · PS12→PS18 since your +1
stalled 456d
XS +1 −0
456d
LU-10973 lnet: Support autotest integration
reviewing Amir Shehata · PS12→PS18 since your +1
stalled 456d
XS +1 −0
456d
build #81780 SUCCESS · tests all Maloo sessions
reviews:
Serguei Smirnov -1
no vote yet: Charlie Olmstead
your previous vote: +1 on PS12 (2020-12-05 16:40) — now at PS18
owner Amir Shehata · uploader Amir Shehata · PS18 uploaded 1945d ago · NEW · open in Gerrit ↗
commit message
LU-10973 lnet: Support autotest integration Add the following features for better autotest integration: 1. Print progress lines to a file to allow autotest to monitor progress. Make the path to the file configurable. 2. Split the results into suites for more user friendly display in maloo 3. Store the configuration file in the LUTF config to allow the LUTF to use the environment variables 4. Allow running multiple suites from the auster command line ex: --suite dlc,dynamic-nids 5. Allow running LUTF from build directory Test-Parameters: trivial Signed-off-by: Amir Shehata <ashehata@whamcloud.com> Change-Id: I9c1877768d885d975f4065f4930eba2fa8a11f94
45029
master
J !B ✓T ✗5R 0/2
LU-15030 osp: add debugfs for sync progress
reviewing Hongchao Zhang · PS2→PS6 since your -1 — your objection was dropped
stalled 456d
S +31 −0
456d
LU-15030 osp: add debugfs for sync progress
reviewing Hongchao Zhang · PS2→PS6 since your -1 — your objection was dropped
stalled 456d
S +31 −0
456d
PS2→PS6 since your -1 — your objection was dropped
blocked on the owner: enforced tests failed
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 | CentOS 8.3/x86_64 | ran 7 tests. 2 tests failed: runtests, replay-dual. | session |
| review-dne-part-4 | CentOS 8.3/x86_64 | ran 9 tests. 1 tests failed: sanity-flr. | session |
| review-dne-part-5 | CentOS 8.3/x86_64 | ran 6 tests. 1 tests failed: sanityn. | session |
| review-dne-zfs-part-4 | CentOS 8.3/x86_64 | ran 9 tests. 1 tests failed: sanity-quota. | session |
| review-zfs | CentOS 8.3/x86_64 | ran 8 tests. 1 tests failed: sanity-quota. | session |
build #83618 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger
patchsets:
PS2 09-23
PS3 09-30
PS4 10-11
PS5 10-13
PS6 10-14
+1 earlier
PS1 09-23your previous vote: -1 on PS2 (2021-09-24 14:33) — now at PS6
owner Hongchao Zhang · uploader Hongchao Zhang · PS6 uploaded 1847d ago · NEW · open in Gerrit ↗
commit message
LU-15030 osp: add debugfs for sync progress During sync between MDT and OSTs, it could need much more time if the load on OST is very high, it will be better to have some some kind of debugfs interface to know the sync progress and make sure the sync is moving forward. Signed-off-by: Hongchao Zhanng <hongchao@whamcloud.com> Change-Id: Id24f3a481c5d28b7dc9714a80905541c88cf0f5a
47820
master
J ✗6B ✓T ✗9R ✗
LU-15979 llite: restore S_NOSEC in ll_update_inode()
reviewing Vladimir Saveliev · PS4→PS6 since your +1
CR -1
6 unique failures
stalled 456d
M +54 −8
456d
LU-15979 llite: restore S_NOSEC in ll_update_inode()
reviewing Vladimir Saveliev · PS4→PS6 since your +1
CR -1
6 unique failures
stalled 456d
M +54 −8
456d
PS4→PS6 since your +1
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed; Vladimir Saveliev voted -1
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| lustre-rsync-test@ldiskfs+DNE:test_2c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| lustre-rsync-test@zfs:test_2c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-flr@ldiskfs+DNE:test_70 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-flr@zfs:test_70 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@ldiskfs+DNE:test_51 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@zfs:test_51 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 | RHEL 8.6/x86_64 | ran 7 tests. 2 tests failed: sanity-sec, sanity-lfsck. | session |
| review-dne-part-4 | RHEL 8.6/x86_64 | ran 9 tests. 1 tests failed: sanity-flr. | session |
| review-dne-selinux-ssk-part-2 | CentOS 8.5/x86_64 | ran 5 tests. 1 tests failed: sanity-sec. | session |
| review-dne-zfs-part-1 | CentOS 8.5/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-2 | CentOS 8.5/x86_64 | ran 7 tests. 2 tests failed: sanity-sec, sanity-lfsck. | session |
| review-dne-zfs-part-4 | CentOS 8.5/x86_64 | ran 9 tests. 1 tests failed: sanity-flr. | session |
| review-ldiskfs-arm | RHEL 8.6/aarch64, RHEL 8.6/x86_64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
| review-ldiskfs-ubuntu | CentOS 8.5/x86_64, Ubuntu 20.04/x86_64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
| review-zfs | CentOS 8.5/x86_64 | ran 8 tests. 2 tests failed: sanity-flr, sanity-quota. | session |
2 optional test failure(s) — informational
build #91858 SUCCESS · tests all Maloo sessions
reviews:
Vladimir Saveliev -1
no vote yet: Qian Yingjin, Andreas Dilger, Patrick Farrell
patchsets:
PS2 07-04
PS3 07-06
PS4 07-26
PS5 01-11
PS6 01-24
+1 earlier
PS1 06-28your previous vote: +1 on PS4 (2022-10-10 15:41) — now at PS6
owner Vladimir Saveliev · uploader Vladimir Saveliev · PS6 uploaded 1379d ago · NEW · open in Gerrit ↗
commit message
LU-15979 llite: restore S_NOSEC in ll_update_inode()
ll_update_inode() is to set S_NOSEC (if needed) after permission
update with help of inode_has_no_xattr() having inode->i_rwsem held.
Without that { creat(); fstat(); write(); } executes to eviction
favorable case:
cl_io_loop
cl_io_lock <- LDLM lock is taken here
cl_io_start
vvp_io_write_start
...
__generic_file_aio_write
file_remove_privs
security_inode_need_killpriv
...
ll_xattr_get_common
...
mdc_intent_lock <- enqueue RPC is sent here
If enqueue rpc is delayed, the client may get evicted as not
cancelling lock taken in cl_io_lock.
ll_update_inode() is called without inode->i_rwsem locked for regular
file but one case:
vfs_setxattr()
inode_lock(inode);
..
ll_xattr_set()
ll_setstripe_ea()
ll_lov_setstripe_ea_info()
ll_intent_file_open()
ll_prep_inode()
ll_update_inode()
where ll_update_inode() is called with inode->i_rwsem locked.
In order to be able to detect this case MDS_OPEN_SETXATTR flag is added.
Test to illustrate the issue is added.
The fix does not help for not NOSEC files.
Uncommenting chmod command in the test makes it to fail with eviction.
Test-Parameters: testlist=replay-dual env=ONLY=34,ONLY_REPEAT=100
Change-Id: Ie9e32d03402027f47381edddbd5cb3fb75023d59
HPE-bug-id: LUS-10989
Signed-off-by: Vladimir Saveliev <vladimir.saveliev@hpe.com>
50958
master
J ✓B ✓T ✗1R +1/2
LU-16560 utils: add test to crosscheck lfs find and statx btimes
reviewing Anjus George · PS5→PS6 since your +1
stalled 456d
S +24 −0
456d
LU-16560 utils: add test to crosscheck lfs find and statx btimes
reviewing Anjus George · PS5→PS6 since your +1
stalled 456d
S +24 −0
456d
PS5→PS6 since your +1
blocked on the owner: enforced tests failed
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-dne | RHEL 9.3/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
build #104662 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
patchsets:
PS2 04-17
PS3 04-18
PS4 04-19 Andreas Dilger
PS5 04-19 Andreas Dilger
PS6 05-08 Andreas Dilger
+1 earlier
PS1 05-11your previous vote: +1 on PS5 (2024-04-24 18:48) — now at PS6
owner Anjus George · uploader Andreas Dilger · PS6 uploaded 909d ago · NEW · open in Gerrit ↗
commit message
LU-16560 utils: add test to crosscheck lfs find and statx btimes Added test 56eab that verifies if the lfs find -printf formatted btimes (human readable and epoch) match with statx btimes. Test-Parameters: trivial Signed-off-by: Anjus George <georgea@ornl.gov> Change-Id: I9c6201f8adfa100c9462722416f5deec1db70ccc
23552
master
J –B ✓T ✗7R +0/2−
LU-8709 llite: implement parallel asynchronous readahead
reviewing Li Xi · PS10→PS14 since your -1 — your objection was dropped
needs rebase
stalled 457d
XL +1467 −1103
457d
LU-8709 llite: implement parallel asynchronous readahead
reviewing Li Xi · PS10→PS14 since your -1 — your objection was dropped
needs rebase
stalled 457d
XL +1467 −1103
457d
PS10→PS14 since your -1 — your objection was dropped
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | CentOS 7.0/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-dne-part-2 | CentOS 7.0/x86_64 | ran 10 tests. 1 tests failed: sanity-hsm. | session |
| review-dne-part-4 crashed | CentOS 7.0/x86_64 | ran 12 tests. 1 tests failed: sanity-flr. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-1 | CentOS 7.0/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-2 | CentOS 7.0/x86_64 | ran 10 tests. 1 tests failed: sanity-hsm. | session |
| review-ldiskfs | CentOS 7.0/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-zfs crashed | CentOS 7.0/x86_64 | ran 10 tests. 1 tests failed: sanity-flr. %% THIS TEST SESSION CRASHED %% | session |
2 optional test failure(s) — informational
build #60987 SUCCESS
reviews:
Andreas Dilger +1
no vote yet: Qian Yingjin, Jinshan Xiong, Zhenyu Xu, Patrick Farrell
your previous vote: -1 on PS10 (2018-12-26 15:11) — now at PS14
owner Li Xi · uploader Wang Shilong · PS14 uploaded 2860d ago · NEW · open in Gerrit ↗
commit message
LU-8709 llite: implement parallel asynchronous readahead This patch proposes a new design of Lustre readahead framework, parallel-readahead, which implements a similar algorithm like current Linux kernel's on-demand readahead, but in a way that is more optimized for the characteristics of Lustre, more extendable for differet I/O patterns, and more adaptable to the high bandwidth of Lustre since data could be prefetched in parallel by multiple threads. Like the on-demand readahead, the parallel-readahead maintains a "readahead window" consisting of a portion of the file starting with the application's last read. Pages inside the readahead window are either already in the page cache, or being prefetched into the page cache of the client. The window moves forward as the reading of the application moves forward. The parallel-readahead framework prefetches more agressively than on-demand readahead using a large readahead window, since Lustre usually has more overhead than local file systems. The parallel-readahead can do real asynchronous prefetch in parallel by multiple threads. The reason of this implement is that, if all prefetching is done in the process of the application that issued read() syscall, the overhead caused by logic of Lustre client side would become the bottleneck. The parallel-readahead framework provides an extendable I/O pattern detection mechanism which currently has detection algorithms for both sequential read and stride read. And more pattern detection algorithms and corresponding prefetching policies can be added into the framework for other I/O patterns, including random read, semisequential read, backward read, interleaved read, etc. Todo: make max_read_ahead_whole_mb really work Signed-off-by: Li Xi <lixi@ddn.com> Signed-off-by: Wang Shilong <wshilong@whamcloud.com> Change-Id: Ida399b9d0b499ba3f6bd08d7bb4528132e8e98e4
41270
master
J !B ✓T ✓R -1/2−
LU-14282 libcfs: refine use of locks when in softirq
reviewing Serguei Smirnov · PS1→PS2 since your +1
stalled 463d
1 unresolved
XS +4 −2
463d
LU-14282 libcfs: refine use of locks when in softirq
reviewing Serguei Smirnov · PS1→PS2 since your +1
stalled 463d
1 unresolved
XS +4 −2
463d
janitor run: 3 failing config(s), none unique to this patch — janitor results
build #101467 SUCCESS · tests all Maloo sessions
reviews:
Frank Sehr +1 · Neil Brown -1 · Andreas Dilger -1
no vote yet: Qian Yingjin, Yang Sheng, Brian Behlendorf
your previous vote: +1 on PS1 (2022-04-25 20:40) — now at PS2
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Neil Brown tracefile.c:103 — I think the comment about cfs_trace_buf_idx_get() is relevant and important.
Andreas Dilger
(defect?) I'm not sure this is safe? If tcd_type is one value on entry, but then the in_irq() or irqs_disabled() values change, then the lock/unlock methods will be different, which may e bad? I don't know that level of the kernel well. Why is the value from cfs_trace_buf_idx_get() not correct? If the IRQ state can change from there to here, what is to prevent it changing again? Often the IRQ state changing unexpectedly is because of stack overflow clobbering the task struct, but I don't know the situation here. The preferred solution IMHO is to get tcd_type correct from the start. Failing that, if we find IRQ state has changed in the middle, then tcd_type should be updated to ensure the unlock is the same as the lock. This might cause issues if the page gets put back into a different list, but that is something I think needs to be fixed anyway, see EX-8998 for details.
Neil Brown
I think the comment about cfs_trace_buf_idx_get() is relevant and important. Changing cfs_trace_buf_idx_get() so that if irqs_disabled(), it selects CFS_TCS_TYPE_IRQ. That should fix the problem a lot more cleanly.
owner Serguei Smirnov · uploader Serguei Smirnov · PS2 uploaded 1020d ago · NEW · open in Gerrit ↗
commit message
LU-14282 libcfs: refine use of locks when in softirq Earlier versions of the kernel (before v4.15) output a warning if detecting a use of spin_unlock_bh while in softirq with irqs disabled. This can currently happen when generating debug messages from softirq, e.g. in kiblnd_conn_addref. Change cfs_trace locking logic to use regular spin_lock in this case. Test-Parameters: testlist=sanity Signed-off-by: Serguei Smirnov <ssmirnov@whamcloud.com> Change-Id: I3395fd26b151b14f6ba14ef6b3d39168ef70a1c5
45152
master
J !B ✓T ✗1R 0/2
LU-15073 ptlrpc: An expired request isn't marked timedout
reviewing Andriy Skulysh · PS2→PS6 since your -1 — your objection was dropped
stalled 463d
2 unresolved
S +28 −20
463d
LU-15073 ptlrpc: An expired request isn't marked timedout
reviewing Andriy Skulysh · PS2→PS6 since your -1 — your objection was dropped
stalled 463d
2 unresolved
S +28 −20
463d
PS2→PS6 since your -1 — your objection was dropped
blocked on the owner: enforced tests failed
janitor run: 4 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 crashed | RHEL 9.3 / x86_64 | ran 9 tests. 1 tests failed: sanity-lfsck. %% THIS TEST SESSION CRASHED %% | session |
2 optional test failure(s) — informational
build #109462 SUCCESS · tests all Maloo sessions
no vote yet: Shaun Tancheff, Neil Brown, Vitaly Fertman, Alexander Boyko, Alex Zhuravlev
patchsets:
PS2 10-13
PS3 02-04 Shaun Tancheff
PS4 02-05 Shaun Tancheff
PS5 02-06 Shaun Tancheff
PS6 12-08 Shaun Tancheff
+1 earlier
PS1 10-07your previous vote: -1 on PS2 (2021-10-21 13:56) — now at PS6
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Shaun Tancheff client.c:2551 — Yes I think that should be fine.
Neil Brown
This (and also below) is a little odd. If timeout is -1 - so nothing in set_requests lists, then timeout is 1. If timeout is zero - all requests have expired - them timeout is 0. It would make sense to me for those to both be the same. Could we make it " < 0 ? 0 : timeout" ??
Shaun Tancheff
Yes I think that should be fine.
reply Shaun Tancheff ptlrpcd.c:494 — Hmm. this seems to be a problem.
Shaun Tancheff
Hmm. this seems to be a problem.
owner Andriy Skulysh · uploader Shaun Tancheff · PS6 uploaded 696d ago · NEW · open in Gerrit ↗
commit message
LU-15073 ptlrpc: An expired request isn't marked timedout New requests can be added to pc_set. It will receive wakups and timeout can never occur. Perform check for expired requests on each round before ptlrpcd_check(). HPE-bug-id: LUS-8784 Signed-off-by: Andriy Skulysh <c17819@cray.com> Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: I46f7ab1812601b1c3a78b62a41a578cdac568bd5
▶Awaiting your review — CI green
(85)
69347
master
J –B ✓T ✓R 0/2
LU-20853 build: Add systemd/systemd-dev to Build-Depends
reviewing Xiao Yang · CI green — awaiting your review
pw_shepherd
2 unresolved
S +29 −6
9m
LU-20853 build: Add systemd/systemd-dev to Build-Depends
reviewing Xiao Yang · CI green — awaiting your review
pw_shepherd
2 unresolved
S +29 −6
9m
build #134715 SUCCESS · tests all Maloo sessions
no vote yet: Chris Horn, Andreas Dilger, Timothy Day, Jian Yu
patchsets:
PS1 10-01
PS2 10-02
PS3 10-06
PS4 10-06
PS5 10-29
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Timothy Day lustre-core.m4:4634 — I don't think there's much value in allowing systemd support to be disabled. Every distro that Lustre supports uses systemd and there isn't
Timothy Day
I don't think there's much value in allowing systemd support to be disabled. Every distro that Lustre supports uses systemd and there isn't any interest (that I've seen) to support non-systemd distros. We could simplify the code quite a bit if we assume systemd is always installed.
reply Xiao Yang lustre-core.m4:4647 — Thanks, https://review.whamcloud.com/67385 reworks dkms-debs (indep-only build, no systemd handling), so this patch no longer needs to chang
Jian Yu
The configure script runs on every distro. Does the above warning message also apply to RHEL/Fedora?
Xiao Yang
Thanks, https://review.whamcloud.com/67385 reworks dkms-debs (indep-only build, no systemd handling), so this patch no longer needs to change Makefile.dkms-deb once 67385 lands. I'll wait for 67385 and then rebase this patch on top of it. The reworded configure warning will be included in the same update.
tags: pw_shepherd
owner Xiao Yang · uploader Xiao Yang · PS5 uploaded 6d ago · NEW · open in Gerrit ↗
commit message
LU-20853 build: Add systemd/systemd-dev to Build-Depends Since systemd 253-2, systemd.pc has been moved to systemd-dev, so without it configure can't find the unit dir and the deb packages are built without the systemd unit files. Add systemd-dev or systemd older than 253-2 to Build-Depends, and recheck systemd.pc in debian/rules so that make debs/dkms-debs works after installing systemd-dev without rerunning configure. Use the nosystemd profile for --with-systemdsystemunitdir=no to skip both. Also add a warning in configure as a reminder. Test-Parameters: trivial Signed-off-by: Xiao Yang <xyang@ddn.com> Change-Id: Ib4c5ae76fc08fa0477d004b210b1f70533a36afb
70341
master
J –B ✓T ✓R +1/2
LU-21099 build: pass WQ_PERCPU to per-CPU workqueues
reviewing John Grasso · CI green — awaiting your review
S +39 −5
5h
LU-21099 build: pass WQ_PERCPU to per-CPU workqueues
reviewing John Grasso · CI green — awaiting your review
S +39 −5
5h
build #135260 SUCCESS · tests all Maloo sessions
reviews:
Timothy Day +1
no vote yet: Andreas Dilger
owner John Grasso · uploader John Grasso · PS1 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-21099 build: pass WQ_PERCPU to per-CPU workqueues Linux 7.2 warns, with a stack trace, when alloc_workqueue() is given neither WQ_PERCPU nor WQ_UNBOUND, then sets WQ_PERCPU itself: workqueue: cfs_rh is using neither WQ_PERCPU or WQ_UNBOUND. Setting WQ_PERCPU. WARNING: kernel/workqueue.c:5851 at __alloc_workqueue+0x468/0x4d0 This fires on every obdclass load, and panics hosts running with panic_on_warn. Pass WQ_PERCPU explicitly to the cfs_rh, kfilnd_wq, gss_cleanup_wq and osd-ldiskfs integrityd workqueues, which were already per-CPU by default, so behaviour is unchanged. Add a configure check for WQ_PERCPU and define it as 0 on older kernels. Test-Parameters: trivial Signed-off-by: John Grasso <johgras@amazon.com> Assisted-by: Claude:claude-opus-5-5 Change-Id: I276820b68efeef0053b2c475fd795031aa1182f9
70284
master
J –B ✓T ✓R 0/2
LU-20984 obdclass: check Netlink request fits in the message
reviewing Oleg Drokin · CI green — awaiting your review
2 unresolved
S +8 −4
5h
LU-20984 obdclass: check Netlink request fits in the message
reviewing Oleg Drokin · CI green — awaiting your review
2 unresolved
S +8 −4
5h
build #135244 SUCCESS · tests all Maloo sessions
patchsets:
PS1 10-30
PS2 11-02
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:19 — (minor) 86ba46c24430 walked the request with nla_for_each_attr(dev, params, msg_len, rem), which is bounded by the message length, so the ov
Gerrit AI review for Lustre
(minor) 86ba46c24430 walked the request with nla_for_each_attr(dev, params, msg_len, rem), which is bounded by the message length, so the over-read was not in that commit. The unchecked nla_for_each_nested(dev, params, rem) walk in lustre_device_list_start() came from a later commit:
Fixes: 6fab1fe4a5c5 ("LU-9680 lnet: handle multi-rail setups")
Should this tag be replaced with that one?
reply Gerrit AI review for Lustre kernelcomm.c:115 — (minor) rc is still 0 here, so a request that fails the new nla_ok() check is accepted. In lustre_device_list_start() gdl_target stays NULL
Gerrit AI review for Lustre
(minor) rc is still 0 here, so a request that fails the new nla_ok() check is accepted. In lustre_device_list_start() gdl_target stays NULL and the dump returns every device instead of an error. lustre_stats_start() has the same GOTO(report_err, rc) and returns an empty dump. lustre_targets_start() and lustre_stats_cmd() return -EINVAL for the same check, and so do the LNet handlers in the companion patch. The rc = 0 dates back to the existing type check, so this is pre-existing. Still, if the patch is refreshed, consider GOTO(report_err, rc = -EINVAL) here and in lustre_stats_start(), so a truncated request is rejected rather than treated as having no filter.
owner Oleg Drokin · uploader Oleg Drokin · PS2 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-20984 obdclass: check Netlink request fits in the message
The lustre Netlink family's start and command handlers walk the
nested attributes of a request using the length stored in its
first attribute header, which was never compared with the length
of the message received, so a malformed request could make the
parser read past the end of the message.
Check the first attribute with nla_ok() against the message length
before walking it.
Test-Parameters: trivial
Fixes: 86ba46c24430 ("LU-9680 obdclass: user netlink to collect devices information")
Fixes: 3c9ab551b322 ("LU-11850 obd: support target_obd using Netlink")
Fixes: 5803284ac3a5 ("LU-11850 obd: use netlink to get lustre stats")
Signed-off-by: Oleg Drokin <green@whamcloud.com>
Assisted-by: ClaudeCode:Opus-5 llm_code_and_review_tools
Change-Id: I9e8ec62f46e7881bb5492effc651390b06586568
69664
master
J –B ✓T ✓R 0/2
LU-20950 lnet: reject fault commands before LNet is up
reviewing Chris Horn · CI green — awaiting your review
CI@PS1
2 unresolved
S +29 −0
10h
LU-20950 lnet: reject fault commands before LNet is up
reviewing Chris Horn · CI green — awaiting your review
CI@PS1
2 unresolved
S +29 −0
10h
build #133588 SUCCESS · tests all Maloo sessions
no vote yet: Manish Regmi, Xinxia Qu
patchsets:
PS1 10-13
PS2 10-13
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Xinxia Qu patchset comment — (Suggestion) Looks like `lnetctl fault drop/delay show` has a similar issue: `lnet_fault_show_start()` calls `lnet_drop_rule_collect()`/`lne
Xinxia Qu
(Suggestion) Looks like `lnetctl fault drop/delay show` has a similar issue: `lnet_fault_show_start()` calls `lnet_drop_rule_collect()`/`lnet_delay_rule_collect()`, which may access the uninitialized lists `ln_drop_rules`/`ln_delay_rules`. Perhaps we should fix it in this patch as well. Thanks!
reply Xinxia Qu api-ni.c:10208 — (suggestion) Hi, is it necessary to change the condition to `the_lnet.ln_state != LNET_STATE_RUNNING`? Noticed that `lnet_peer_ni_show_start
Xinxia Qu
(suggestion) Hi, is it necessary to change the condition to `the_lnet.ln_state != LNET_STATE_RUNNING`? Noticed that `lnet_peer_ni_show_start()` has similar defensive code.
build/test results are from PS1 — PS2…PS2 changed only the commit message (votes copied, CI not re-run)
owner Chris Horn · uploader Chris Horn · PS2 uploaded 21d ago · NEW · open in Gerrit ↗
commit message
LU-20950 lnet: reject fault commands before LNet is up Load the lnet module. Before "lnetctl lnet configure", run any "lnetctl fault" add or del command. The node oopses in lnet_drop_rule_add() or lnet_delay_rule_del(). The oopsed thread holds delay_dd.dd_mutex, so unconfigure then hangs. The netlink handler lnet_fault_cmd() calls the rule functions directly. Only LNetNIInit() initializes the rule list heads. The ioctl path calls LNetNIInit() first, so it does not oops. Take ln_api_mutex in lnet_fault_cmd() and return -ENETDOWN when ln_refcount is 0. This matches the other netlink handlers. Add sanity-lnet test 637 to run each fault command before configure. Test-Parameters: trivial Signed-off-by: Chris Horn <chorn@ddn.com> Assisted-by: ClaudeCode:claude-sonnet-5-5 Change-Id: Ib0e0111dbd334a16f198ee7f3519b729b8df7536
70149
master
J –B ✓T ✓R +2/2
LU-21062 libcfs: Add BUG() after calling lbug_with_loc()
reviewing Xiao Yang · CI green — awaiting your review
XS +3 −5
11h
LU-21062 libcfs: Add BUG() after calling lbug_with_loc()
reviewing Xiao Yang · CI green — awaiting your review
XS +3 −5
11h
build #134750 SUCCESS · tests all Maloo sessions
reviews:
Chris Horn +1 · Timothy Day +1
no vote yet: Shaun Tancheff, Jian Yu
owner Xiao Yang · uploader Xiao Yang · PS1 uploaded 6d ago · NEW · open in Gerrit ↗
commit message
LU-21062 libcfs: Add BUG() after calling lbug_with_loc()
Since Linux 6.5 lbug_with_loc() is not in objtool's noreturn list,
so it is declared without __noreturn, but objtool finds that it never
returns and reports "missing __noreturn" warnings, which fail the
build with CONFIG_OBJTOOL_WERROR=y.
Add BUG() after lbug_with_loc() in LBUG() and LASSERTF(): objtool
accepts a UD2 after a call it knows never returns. On older kernels
lbug_with_loc() is declared with __noreturn, so the compiler drops
the BUG().
Fixes: 9f44a48b3659 ("LU-17793 libcfs: fix objtool warning in lbug_with_loc()")
Signed-off-by: Xiao Yang <xyang@ddn.com>
Change-Id: I92cba012283d14fc9a9727a7eb1a6d2923abd514
69135
master
J –B ✓T ✓R -1/2−
LU-14144 utils: find Lustre module params without --module
reviewing Andreas Dilger · CI green — awaiting your review
218_review_priority
4 unresolved
L +370 −30
15h
LU-14144 utils: find Lustre module params without --module
reviewing Andreas Dilger · CI green — awaiting your review
218_review_priority
4 unresolved
L +370 −30
15h
build #135066 SUCCESS · tests all Maloo sessions
reviews:
Jian Yu -1
no vote yet: Timothy Day
patchsets:
PS6 10-05 patrick bot
PS7 10-05 patrick bot
PS8 10-06 patrick bot
PS9 10-14
PS10 11-01
+5 earlier
PS1 09-23 PS2 09-23 PS3 09-24 PS4 09-24 PS5 09-27 patrick botthreads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:25 — (nit) This isn't a bug, but the lustre-commit skill asks for the exact model ID as the API reports it, with the tools space-separated, i.e.
Gerrit AI review for Lustre
(nit) This isn't a bug, but the lustre-commit skill asks for the exact model ID as the API reports it, with the tools space-separated, i.e.
Assisted-by: ClaudeCode:claude-opus-5-5 ltvm llm_code_and_review_tools
rather than "claude-opus-5.5" and a comma-joined tool list. Only worth changing if the patch is refreshed for another reason.
reply Jian Yu sanity.sh:34464 — (minor) The above versions have to be updated.
Jian Yu
(minor) The above versions have to be updated.
reply Jian Yu lustre_param.c:1025 — (defect) (!rc2 && rc2 != -ENOENT) should be (rc2 && rc2 != -ENOENT)
Jian Yu
(defect) (!rc2 && rc2 != -ENOENT) should be (rc2 && rc2 != -ENOENT)
reply Jian Yu lustre_param.c:1026 — (minor) do_param_op() should be do_param_op_flags()
Jian Yu
(minor) do_param_op() should be do_param_op_flags()
tags: 218_review_priority
owner Andreas Dilger · uploader Andreas Dilger · PS10 uploaded 3d ago · NEW · open in Gerrit ↗
commit message
LU-14144 utils: find Lustre module params without --module
"set_param -P" is applied on each node by running "lctl set_param"
from an upcall or udev rule, which can't pass --module, so module
parameters could not be set persistently.
If no Lustre parameter matches, fall back to Lustre/LNet module
parameters, with the new LLAPI_PARAM_MODULES_FALLBACK flag for
llapi_param_get_paths_flags(). Existing patterns like "osc.*" are
unaffected since they match first.
Have "set_param -P" refuse parameters that are read-only at runtime,
since they would fail on every node at every mount. This is also
done for "set_param -P -F". A wildcard device type is not checked,
since a parameter may be read-only on servers but not on clients.
Fixes: 7c7edbcaa8ce ("LU-14144 utils: allow /sys/module/OBD/parameters/*")
Signed-off-by: Andreas Dilger <adilger@thelustrecollective.com>
Assisted-by: ClaudeCode:claude-opus-5.5 ltvm,llm_code_and_review_tools
Change-Id: I6594a5b8a7a28243617a12640127b4ca173ebbe5
69768
master
J –B ✓T ✓R 0/2
LU-11962 flr: fix the handling of foreign mirrors
reviewing Andreas Dilger · CI green — awaiting your review
pt_ecropw_shepherdpccro
1 unresolved
M +161 −13
17h
LU-11962 flr: fix the handling of foreign mirrors
reviewing Andreas Dilger · CI green — awaiting your review
pt_ecropw_shepherdpccro
1 unresolved
M +161 −13
17h
build #135063 SUCCESS · tests all Maloo sessions
no vote yet: Qian Yingjin, Marc Vef, Bruno Faccini
patchsets:
PS2 10-18
PS3 10-19
PS4 10-21 Marc Vef
PS5 10-31
PS6 11-01
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre lfs.c:18051 — (suggestion) This stops the chunk comparison from reading the foreign mirror, but two other `lfs mirror verify` paths still call llapi_mirro
Gerrit AI review for Lustre
(suggestion) This stops the chunk comparison from reading the foreign mirror, but two other `lfs mirror verify` paths still call llapi_mirror_read() on it: - print_stale_mirrors() reads every LCME_FL_STALE component's mirror. A write to a file that still has the HSM mirror (it stays after `lfs pcc detach`, since lod_declare_pccro_clear() only clears HS_PCCRO) goes through lod_declare_update_rdonly()->lod_stale_components(), which sets LCME_FL_STALE and HS_DIRTY on the HSM component. Plain `lfs mirror verify` would then print "Mirror N: (stale - read error)" for it. - With `--stale`, auto_mark_stale_mirrors()->compare_mirror_checksums() reads every mirror returned by get_mirror_properties(), foreign mirrors included. The new -EINVAL from lov_io_mirror_init() makes the auto-mark fail with "error reading from mirror N". Both paths crashed the client on the LASSERT before this patch, so they are pre-existing and now fail cleanly. Should they skip foreign mirrors too, here or in a follow-up?
tags: pt_ecro pw_shepherd pccro
owner Andreas Dilger · uploader Andreas Dilger · PS6 uploaded 3d ago · NEW · open in Gerrit ↗
commit message
LU-11962 flr: fix the handling of foreign mirrors
Several places mishandle a mirror made of a foreign HSM component, as
PCC-RO adds:
- the client copies the EC stripe counts into every layout entry, but
for a foreign entry they share a union with lsme_foreign_flags, so
getxattr("lustre.lov") and llapi_layout_get_by_fd() report its HSM
flags as 0;
- "lfs getstripe" prints all of its lhm_* fields whatever is asked,
so "lfs getstripe -N" prints them after the mirror count, and it is
the last initialized component that "-c", "-S" or "-i" show;
- lod_primary_pick() may pick it as the primary mirror for a write
when the OSTs of the data mirror are unavailable;
- mdd_split_ea(), and data_mirror_remains() and
last_non_stale_mirror() of lfs, count it as data, so "lfs mirror
split" can remove the only data mirror, or the only in-sync one;
- a designated read of it, e.g. "lfs mirror read -N", which any user
with read access can do, hits the LASSERT in
lov_io_layout_at_mirror(), and "lfs mirror verify" reads from it.
Move the EC stripe counts out of the union, print an HSM component
only for the verbose and layout pattern output and never as the last
initialized one, never pick an HSM mirror in lod_primary_pick(), and
do not count foreign mirrors as data when splitting or verifying.
Refuse designated I/O to a foreign mirror in lov_io_mirror_init().
Add sanity-pcc test_51 to check the HSM flags, "lfs getstripe -N" and
"-c", the split of data mirrors, and the read and verify of a file
attached to PCC-RO.
Test-Parameters: testlist=sanity-pcc,sanity-flr
Fixes: 472e0f27d411 ("LU-19545 ec: tight binding parity mirror to data mirror")
Fixes: 22e9e7e8b264 ("LU-12187 llapi: EC layout creation support")
Fixes: ce98bfe5f726 ("LU-10499 pcc: add readonly mode for PCC")
Fixes: aebb405e32e4 ("LU-10499 pcc: use foreign layout for PCCRO on server side")
Fixes: 2e591389646c ("LU-19548 lfs: update mirror split for EC support")
Signed-off-by: Andreas Dilger <adilger@thelustrecollective.com>
Assisted-by: ClaudeCode:claude-opus-5-5 ltvm llm_code_and_review_tools
Change-Id: Idb5f277a3117a352a99cecdaefd6ee7ee89b5397
68504
master
J –B ✓T ✓R +3/2
LU-20661 ptlrpc: Lower CPU latency system wide
reviewing Xiao Yang · CI green — awaiting your review
pw_shepherd
L +249 −206
17h
LU-20661 ptlrpc: Lower CPU latency system wide
reviewing Xiao Yang · CI green — awaiting your review
pw_shepherd
L +249 −206
17h
build #134154 SUCCESS · tests all Maloo sessions
reviews:
Chris Horn +1 · Bruno Faccini +1 · Andreas Dilger +1
no vote yet: Yang Sheng
patchsets:
PS9 10-15
PS10 10-18
PS11 10-19
PS12 10-20
PS13 10-21
+8 earlier
PS1 08-31 PS2 09-13 PS3 09-14 PS4 09-15 PS5 09-23 PS6 09-24 PS7 09-26 PS8 09-29tags: pw_shepherd
owner Xiao Yang · uploader Xiao Yang · PS13 uploaded 14d ago · NEW · open in Gerrit ↗
commit message
LU-20661 ptlrpc: Lower CPU latency system wide kick_cpu_latency() only lowered the latency of the cpt the primary NID maps to, while the thread consuming the reply runs elsewhere -- the caller for a sync RPC, a ptlrpcd for an async one. Take a single system wide cpu_latency_qos request instead of a per CPU device DEV_PM_QOS_RESUME_LATENCY one, with a shim for kernels before v5.7. Rework kick_cpu_latency() and the work item: senders take no lock, and the work item alone holds the request while RPCs flow. With pmqos_use_stats_for_duration set, the hold time follows the longest RPC round trip or delay between sends, not the per-target PTLRPC_REQWAIT average. Clearing enable_pmqos now drops the request at once, and ptlrpc_connection_init() runs before ptlrpc_lproc_init() so the store never sees an uninitialized work item. Default enable_pmqos to CONFIG_CPU_IDLE and reject enabling it when that option is off, since the PM QoS calls are then stubs. Environment: 4 MDTs, default directory layout, enable_pmqos=1, pmqos_default_duration_usec=3000, pmqos_use_stats_for_duration=1. mpirun --allow-run-as-root -np 8 mdtest -F -u -i 5 -n 20000 -d /mnt/lustre/mdtest.out, showing the run closest to the median of 3-5 runs (Tree rows omitted as noise): pmqos_latency_max_usec=20 (default): With this patch: Operation Max Min Mean Std Dev --------- --- --- ---- ------- File creation 23582.983 20708.299 21838.383 1182.253 File stat 62781.563 62169.797 62448.046 232.310 File read 27364.039 25950.152 26873.249 561.361 File removal 44953.810 39736.547 42717.082 2067.324 Without this patch: Operation Max Min Mean Std Dev --------- --- --- ---- ------- File creation 14521.362 13795.488 14092.296 282.564 File stat 66019.977 61243.433 63937.186 1752.492 File read 24106.449 21853.555 22883.614 983.301 File removal 45992.183 38890.606 44088.785 2971.666 pmqos_latency_max_usec=1: With this patch: Operation Max Min Mean Std Dev --------- --- --- ---- ------- File creation 27607.655 24674.600 26043.502 1227.895 File stat 81423.073 79052.010 80580.369 1002.923 File read 32688.692 32077.416 32424.092 300.879 File removal 49232.059 43884.765 45533.656 2143.840 Without this patch: Operation Max Min Mean Std Dev --------- --- --- ---- ------- File creation 14767.444 13656.511 14382.633 526.850 File stat 76461.366 75901.765 76210.405 209.818 File read 26863.138 23515.192 25330.106 1585.685 File removal 48849.082 43281.086 46320.050 2470.423 Signed-off-by: Xiao Yang <xyang@ddn.com> Change-Id: Ic2e051c4f1fe78e1c55fd1d2688e15a4579567a3
63381
master
J –B ✓T ✓R +1/2
LU-18813 osd: setup library to share code
reviewing Timothy Day · CI green — awaiting your review
pw_shepherd
15 unresolved
L +226 −107
17h
LU-18813 osd: setup library to share code
reviewing Timothy Day · CI green — awaiting your review
pw_shepherd
15 unresolved
L +226 −107
17h
build #134041 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
no vote yet: Qian Yingjin, Alex Zhuravlev, Li Dongyang
patchsets:
PS7 02-09
PS8 05-12
PS9 05-29
PS10 07-04
PS11 10-19
+6 earlier
PS1 01-13 PS2 01-13 Janitor Bot PS3 01-13 PS4 01-13 PS5 01-13 PS6 01-18threads: 15 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — The body describes this as a pure move of the osd_obj_seq/map routines, but one hunk is not a move: osd_ost_fini() loses `osd->od_ost_map =
Gerrit AI review for Lustre
The body describes this as a pure move of the osd_obj_seq/map routines, but one hunk is not a move: osd_ost_fini() loses `osd->od_ost_map = NULL;` while its callers are not updated to compensate. Worth calling out in the message (see the comment on osd_compat.c).
reply Gerrit AI review for Lustre COMMIT_MSG:11 — The message says the routines move "to a dedicated osd.ko kernel module" and then argues why a module is preferable to a static library, but
Gerrit AI review for Lustre
The message says the routines move "to a dedicated osd.ko kernel module" and then argues why a module is preferable to a static library, but no such module is built by this patch. lustre/osd/osd_lib.c is symlinked into lustre/osd-ldiskfs/ and lustre/osd-wbcfs/ and added to osd_ldiskfs-objs / osd_wbcfs-objs, so the code is compiled into each OSD .ko separately, and nothing is EXPORT_SYMBOL'd. lustre/Makefile's obj-m list is unchanged, and lustre/osd/ has no Makefile. That is the static-library approach, which is what the discussion on this change settled on. Could the message be refreshed to describe what the patch actually does, so the reasoning in it doesn't read as describing a different implementation?
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (typo) "setup" is the noun; the verb is "set up".
Gerrit AI review for Lustre
(typo) "setup" is the noun; the verb is "set up".
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (style) The body doesn't name the moved or renamed symbols, so `git log -S`/`--grep` for the old names won't easily turn up this patch. If t
Gerrit AI review for Lustre
(style) The body doesn't name the moved or renamed symbols, so `git log -S`/`--grep` for the old names won't easily turn up this patch. If the message is refreshed, consider listing them:
osd_seq_free() -> osd_obj_seq_free()
osd_ost_fini() -> osd_obj_map_free()
osd_seq_find_locked() -> osd_obj_seq_find_locked()
osd_seq_find() -> osd_obj_seq_find()
osd_seq_name() -> osd_obj_seq_name()
The message could also mention that struct osd_obj_seq/osd_obj_map moved to lustre/include/osd.h.
reply Timothy Day patchset comment — osd/ isn't a separate module, so it wouldn't help.
James Simmons
Looking that this I wonder if we can move the sysfs / debugfs handling to here.
Timothy Day
osd/ isn't a separate module, so it wouldn't help.
reply Andreas Dilger osd.h:6 — (style) wrap at 80 columns can be trivially fixed, and maybe expanded on a bit.
wc-checkpatch
(style) line length of 83 exceeds 80 columns
Andreas Dilger
(style) wrap at 80 columns can be trivially fixed, and maybe expanded on a bit.
reply Gerrit AI review for Lustre osd.h:6 — "on-disk structure definitions" doesn't describe what is here - struct osd_obj_seq and struct osd_obj_map hold only in-memory state (dentry
Gerrit AI review for Lustre
"on-disk structure definitions" doesn't describe what is here - struct osd_obj_seq and struct osd_obj_map hold only in-memory state (dentry pointers, a rwlock, a list head, a mutex). Nothing in this header is an on-disk format. This line also still exceeds 80 columns and still lacks the fuller description that was asked for on patchset 8; both look unaddressed in the current revision.
reply Gerrit AI review for Lustre osd.h:16 — This isn't a bug today, but <linux/rwlock.h> is not meant to be included directly - it errors out unless __LINUX_SPINLOCK_H is already defin
Gerrit AI review for Lustre
This isn't a bug today, but <linux/rwlock.h> is not meant to be included directly - it errors out unless __LINUX_SPINLOCK_H is already defined. It compiles here only because <linux/dcache.h> two lines up happens to pull in <linux/spinlock.h> first, so a future reshuffle of these includes would break the build. Every other header in the tree that needs a lock type uses <linux/spinlock.h> (lustre/include/obd.h, cl_object.h, range_lock.h, ...); this is the only <linux/rwlock.h>.
reply Gerrit AI review for Lustre osd.h:26 — This comment sits above an int and doesn't describe it. It looks like it was meant for the mutex in struct osd_obj_map (om_dir_init_mutex, w
Gerrit AI review for Lustre
This comment sits above an int and doesn't describe it. It looks like it was meant for the mutex in struct osd_obj_map (om_dir_init_mutex, which has no comment at all). Since the struct is being re-documented in a new header, it would be a good time to move or drop it.
reply Gerrit AI review for Lustre osd.h:21 — (style) This isn't a bug, but nothing declared in this header uses <lustre_fid.h>. Only osd_obj_seq_name() in lustre/osd/osd_lib.c needs it,
Gerrit AI review for Lustre
(style) This isn't a bug, but nothing declared in this header uses <lustre_fid.h>. Only osd_obj_seq_name() in lustre/osd/osd_lib.c needs it, for fid_seq_is_rsvd()/fid_seq_is_mdt0()/fid_seq_is_idif(). lustre_fid.h also pulls in lu_object.h and the uapi FID/IDL headers. Would it be better to include it in osd_lib.c, so that every user of <osd.h> doesn't inherit it?
reply Gerrit AI review for Lustre osd_compat.c:570 — The old osd_ost_fini() ended with `osd->od_ost_map = NULL;`. The library version takes the map by pointer and cannot do that, and none of th
Gerrit AI review for Lustre
The old osd_ost_fini() ended with `osd->od_ost_map = NULL;`. The library version takes the map by pointer and cannot do that, and none of the three call sites here were updated, so `dev->od_ost_map` is left pointing at freed memory.
On an OST, osd_obj_map_init()'s second error path frees the map and returns without clearing the field:
rc = osd_index_backup_dir_init(env, dev);
if (rc) {
osd_ost_fini(dev->od_ost_map); /* freed */
if (mdt_init) /* false when od_is_ost */
osd_mdt_fini(dev);
}
I could not find a path that dereferences the stale pointer today - osd_device_init0() goes straight to out_wq and osd_device_alloc() frees the whole osd_device - so this doesn't look like a live use-after-free. But it does drop an invariant the old code held.
It is also worth noting what currently hides this in osd_obj_map_fini(): the field only ends up NULL because osd_mdt_fini() contains a long-standing typo and assigns `osd->od_ost_map = NULL;` where it means od_mdt_map. So correctness of the new code depends on a bug elsewhere. Could the call sites just do `dev->od_ost_map = NULL;` after osd_ost_fini()?
reply Gerrit AI review for Lustre osd_compat.c:32 — (style) This isn't a bug, but <osd.h> is a Lustre include and belongs with <obd_support.h> above the local "osd_internal.h"/"osd_oi.h" group
Gerrit AI review for Lustre
(style) This isn't a bug, but <osd.h> is a Lustre include and belongs with <obd_support.h> above the local "osd_internal.h"/"osd_oi.h" group, which is how osd_scrub.c orders it in this patch.
tags: pw_shepherd
owner Timothy Day · uploader Timothy Day · PS11 uploaded 15d ago · NEW · open in Gerrit ↗
commit message
LU-18813 osd: setup library to share code ... starting with osd_obj_seq/map routines. These will be eventually used by osd-wbcfs as well - so move them to a dedicated osd.ko kernel module. A new kernel module is desirable (versus a static library) so that we preserve the ability to load multiple OSDs at the same time. Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: Iad23cba0e624a003cc0b2f28dc08420b618cdf10
54485
master
J –B ✓T ✓R +1/2
LU-10499 pcc: output valid state for valid cached files
reviewing Qian Yingjin · CI green — awaiting your review
pccro
2 unresolved
M +130 −12
20h
LU-10499 pcc: output valid state for valid cached files
reviewing Qian Yingjin · CI green — awaiting your review
pccro
2 unresolved
M +130 −12
20h
build #134910 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
no vote yet: Feng Lei
patchsets:
PS4 10-20 Andreas Dilger
PS5 10-20 Andreas Dilger
PS6 10-21 Andreas Dilger
PS7 10-27 Andreas Dilger
PS8 10-30 Andreas Dilger
+3 earlier
PS1 03-21 PS2 09-25 PS3 09-26threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre lfs-pcc-state.1:38 — (minor) lfs_pcc_state() prints the short form with named flags only when `pccs_type == LU_PCC_NONE && pccs_open_count == 0`. Any attached fi
Gerrit AI review for Lustre
(minor) lfs_pcc_state() prints the short form with named flags only when `pccs_type == LU_PCC_NONE && pccs_open_count == 0`. Any attached file, readonly or readwrite, open or not, gets the long form with `flags: %x`. So hex output isn't limited to "a file that is still open", and `attaching`/`aborting` also show up as 0x2/0x10 there, not as words. If the patch is refreshed, maybe say that the flags are printed as names only for type none files that aren't open, and as hex otherwise, and list the bit values (0x1 attr valid, 0x2 attaching, 0x4 unlinked, 0x8 valid, 0x10 aborting). An EXAMPLES entry showing the `type: none, flags: valid` output from the commit message would also help.
reply Gerrit AI review for Lustre sanity-pcc.sh:5081 — (suggestion) Does this step test what the comment says? Each `lfs pcc state` before it found a valid copy, so pcc_try_datasets_attach() retu
Gerrit AI review for Lustre
(suggestion) Does this step test what the comment says? Each `lfs pcc state` before it found a valid copy, so pcc_try_datasets_attach() returned with `*cached == true` and never reached the `lli_pcc_dsflags = PCC_DATASET_NONE` branch. The `cat` would auto attach even without the `iot != PIT_VALID_CHECK` guard. To cover the guard, the state check has to fail on a readonly layout. One way: after `detach -k`, change `user.PCC.layout` on the PCC copy, check `lfs pcc state` doesn't report valid, restore the xattr, then `cat` and run check_lpcc_state "readonly".
tags: pccro
owner Qian Yingjin · uploader Andreas Dilger · PS8 uploaded 4d ago · NEW · open in Gerrit ↗
commit message
LU-10499 pcc: output valid state for valid cached files There are two cases where the command 'lfs pcc state' reports 'none' for PCC status of a file: - File has not been cached at all into PCC. When the file is read, data will come from remote Lustre filesystem. - File was cached into PCC but was detached later, while keeping the PCC copy (e.g. 'lfs pcc detach -k'). When the file is read, its layout version is compared against the PCC copy, and if the version matches, the file is attached again and the data will come from PCC. The inode must still be cached on the client with its layout, so this is not reported after the client cache is dropped (e.g. 'sysctl -w vm.drop_caches=3'). This patch adds a valid flag to distinguish between these two states. For the latter case, the command 'lfs pcc state' will output as follows: $ lfs pcc state /mnt/lustre/f105.sanity-pcc file: /mnt/lustre/f105.sanity-pcc, type: none, flags: valid Fixes from the original patch: - check the PCC copy against the cached layout generation, as at open, so that 'lfs pcc state' does not refresh the layout with a layout lock RPC. - do not set PCC_DATASET_NONE on the inode when no valid PCC copy is found, which would stop the file from being auto attached. - also report the valid flag for a detached PCC inode that is not freed yet. - only report the valid flag if the PCC backend auto attaches files, which would use the PCC copy. Document the existing 'aborting' flag in lfs-pcc-state.1 as well. Clear the state for each file in 'lfs pcc state', since the flags of a file that is not cached on the client are not set, and would otherwise be printed from the previous file. Add sanity-pcc/test_105 to verify it works as expected. Test-Parameters: trivial testlist=sanity-pcc Signed-off-by: Qian Yingjin <qian@ddn.com> Signed-off-by: Andreas Dilger <adilger@thelustrecollective.com> Assisted-by: ClaudeCode:claude-opus-5-5 ltvm llm_code_and_review_tools Change-Id: I1d729bfe550b1bde0e78e8b3ec8217cd598fb64c
69763
master
J –B ✓T ✓R +2/2
LU-20984 obdclass: wake OJS_CLEANING waiters in jobstats
reviewing Oleg Drokin · CI green — awaiting your review
XS +2 −2
1d
LU-20984 obdclass: wake OJS_CLEANING waiters in jobstats
reviewing Oleg Drokin · CI green — awaiting your review
XS +2 −2
1d
build #133869 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1 · Timothy Day +1
no vote yet: Andreas Krause US, Shaun Tancheff
owner Oleg Drokin · uploader Oleg Drokin · PS1 uploaded 18d ago · NEW · open in Gerrit ↗
commit message
LU-20984 obdclass: wake OJS_CLEANING waiters in jobstats
"lctl set_param *.job_stats=clear" or umount that arrives while a
periodic jobstats cleanup is running hangs forever in D state in
lprocfs_job_cleanup().
The forced cleanup waits for OJS_CLEANING with wait_on_bit(), but the
holder drops the bit with a plain clear_bit() and nothing ever calls
wake_up_bit(), so the waiter is never woken. job_reclaim_rcu() has
the same problem for OJS_ACTIVE_JOBS, costing a 30s stall at fini.
Use clear_and_wake_up_bit() for both bits.
Test-Parameters: trivial
Fixes: cad59b9b72fc ("LU-18351 obdclass: jobstat scaling")
Signed-off-by: Oleg Drokin <green@whamcloud.com>
Assisted-by: ClaudeCode:claude-opus-5-5 ltvm llm_code_and_review_tools
Change-Id: I8d937a7481f2c40fa00bba850ebf80eb3e2a6577
69798
master
J –B ✓T ✓R +2/2
LU-20276 tests: Wait for ZFS frees after sanityn/56a,56b
reviewing Arshad Hussain · CI green — awaiting your review
CI@PS3
S +36 −8
1d
LU-20276 tests: Wait for ZFS frees after sanityn/56a,56b
reviewing Arshad Hussain · CI green — awaiting your review
CI@PS3
S +36 −8
1d
build #134429 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1 · Timothy Day +1
no vote yet: Brian Behlendorf
patchsets:
PS1 10-19
PS2 10-20
PS3 10-23
PS4 10-26
build/test results are from PS3 — PS4…PS4 changed only the commit message (votes copied, CI not re-run)
owner Arshad Hussain · uploader Arshad Hussain · PS4 uploaded 9d ago · NEW · open in Gerrit ↗
commit message
LU-20276 tests: Wait for ZFS frees after sanityn/56a,56b
test_56b causes OOM in test_70/71 using ZFS 2.4.N
To avoid OOM, this patch reorders stack_trap
in such a way that the file is 'rm' first and
then waited for all TXG to be committed. Also,
this patch adds function 'zfs_wait_free_osts'
to reclaim free space in function 56a and 56b
before they end and after delete of file. (This
is a workaround for now, please see JIRA for
details)
This patch also enables test_56b. As, after the
above changes OOM is not seen.
Test-Parameters: trivial testlist=sanityn fstype=zfs serverdistro=el9.7
Test-Parameters: trivial testlist=sanityn fstype=zfs serverdistro=el9.8
Test-Parameters: trivial testlist=sanityn fstype=zfs serverdistro=el10.1
Test-Parameters: trivial testlist=sanityn fstype=zfs serverdistro=el10.2
Fixes: 3d34b39cb470 ("LU-8137 utils: fix llverdev for use on regular files")
Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com>
Change-Id: Ib4a3de285b4826b26efed41fdcbb90fcd0e307d6
70234
master
J –B ✓T ✓R 0/2
LU-20923 mdd: reject a PCC create without a layout
reviewing Andreas Dilger · CI green — awaiting your review
pccro
CI@PS1
4 unresolved
XS +6 −2
1d
LU-20923 mdd: reject a PCC create without a layout
reviewing Andreas Dilger · CI green — awaiting your review
pccro
CI@PS1
4 unresolved
XS +6 −2
1d
build #134922 SUCCESS · tests all Maloo sessions
no vote yet: Marc Vef
patchsets:
PS1 10-30
PS2 11-02
threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:15 — (minor) Two points here understate what the patch fixes:
Gerrit AI review for Lustre
(minor) Two points here understate what the patch fixes: 1. "rather than proceeding": the old code did not proceed. It hit LASSERT() on a cr_flags value taken straight from the client, so any client could LBUG the MDS by sending MDS_OPEN_PCC without MDS_OPEN_HAS_EA. That is the main reason for the change and is worth stating. 2. The uninitialized hsm_buf free is not limited to the new reject path. Several existing paths already reached out_free with MDS_OPEN_PCC set before hsm_buf was memset, and then called lu_buf_free() on stack garbage: the OBD_FAIL_MDS_DQACQ_NET goto, a mdd_trans_create() failure, the -ENOMEM ACL buffer gotos, and errors from mdd_acl_init() and mdd_pin_init(). Initializing hsm_buf at its declaration fixes those as well.
reply Gerrit AI review for Lustre COMMIT_MSG:16 — (minor) The patch fixes two bugs from the original PCC change: the LASSERT() on client-supplied flags and the uninitialized hsm_buf free on
Gerrit AI review for Lustre
(minor) The patch fixes two bugs from the original PCC change: the LASSERT() on client-supplied flags and the uninitialized hsm_buf free on the early error paths of mdd_create(). Both came in with that commit, so please add:
Fixes: f172b11688 ("LU-10092 llite: Add persistent cache on client")
reply Gerrit AI review for Lustre mdd_dir.c:3339 — (suggestion) This isn't a bug, but the check only looks at spec flags, so it could run right after mdd_create_sanity_check() and use RETURN(
Gerrit AI review for Lustre
(suggestion) This isn't a bug, but the check only looks at spec flags, so it could run right after mdd_create_sanity_check() and use RETURN(-EINVAL), like the other request-validation failures. A malformed request then never creates a transaction or allocates ACL, pin and linkEA buffers that are thrown away straight after. hsm_buf still has to be initialized for the other early error paths, so that part of the change stays.
reply Gerrit AI review for Lustre mdd_dir.c:3342 — (minor) Now that hsm_buf is initialized at its declaration, this memset() does nothing. The MDS_OPEN_PCC test around lu_buf_free(&hsm_buf) a
Gerrit AI review for Lustre
(minor) Now that hsm_buf is initialized at its declaration, this memset() does nothing. The MDS_OPEN_PCC test around lu_buf_free(&hsm_buf) at out_free is also no longer needed, because lu_buf_free() ignores a NULL lb_buf. If the patch is refreshed, consider dropping both so the code matches how pin_buf is handled.
tags: pccro
build/test results are from PS1 — PS2…PS2 changed only the commit message (votes copied, CI not re-run)
owner Andreas Dilger · uploader Andreas Dilger · PS2 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-20923 mdd: reject a PCC create without a layout A PCC create (MDS_OPEN_PCC in cr_flags) must carry a layout (MDS_OPEN_HAS_EA). In mdd_create(), return -EINVAL for MDS_OPEN_PCC without MDS_OPEN_HAS_EA rather than proceeding. The reject path jumps to the out_stop/out_free cleanup, which frees hsm_buf when MDS_OPEN_PCC is set, so also initialize hsm_buf at its declaration (like pin_buf); otherwise that path, which runs before hsm_buf is memset, would free an uninitialized buffer. Signed-off-by: Andreas Dilger <adilger@thelustrecollective.com> Assisted-by: ClaudeCode:claude-opus-5-5 ltvm llm_code_and_review_tools Change-Id: I038b27bd1b99c869084e7d5c2fe79bf4073ebbe5
69752
master
J –B ✓T ✓R +2/2
LU-20969 pcc: disable PCC-RW by default
reviewing patrick bot · CI green — awaiting your review
pw_own
L +581 −13
1d
LU-20969 pcc: disable PCC-RW by default
reviewing patrick bot · CI green — awaiting your review
pw_own
L +581 −13
1d
build #134650 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1 · Timothy Day +1
no vote yet: Qian Yingjin, Lai Siyao
patchsets:
PS6 10-27
PS7 10-27
PS8 10-27
PS9 10-28
PS10 10-28
+5 earlier
PS1 10-16 PS2 10-17 PS3 10-18 PS4 10-19 PS5 10-26tags: pw_own
owner patrick bot · uploader patrick bot · PS10 uploaded 6d ago · NEW · open in Gerrit ↗
commit message
LU-20969 pcc: disable PCC-RW by default PCC-RW is a proof of concept: attaching a file moves the only copy of its data into the cache of one client, so losing that client or its cache loses the file. With PCC-RO generally available in 2.18, PCC-RW must not be used by accident. Add client parameters llite.*.enable_pcc_rw and llite.*.enable_pcc_ro, and MDT parameters mdt.*.enable_pcc_rw and mdt.*.enable_pcc_ro. PCC-RW is disabled by default and PCC-RO is enabled. While a mode is disabled on the client, adding a PCC rule that uses it and attaching a file in that mode fail with EOPNOTSUPP and a console message that names the parameter to enable it, and automatic attach in that mode is skipped. While a mode is disabled on the MDT, the MDT refuses the attach, and the creation of a file in a PCC-RW cache, the same way. A file already attached stays attached until the client drops it from its cache, and is not attached again. When the MDT refuses a PCC-RW create, the client creates the file in Lustre alone, so the MDT setting does not make creates fail. When it refuses PCC-RO for a file, the client does not try automatic PCC-RO attach of that file again while the inode is cached, so each open does not send the MDT the same refused request. As LFS_EC_OK does for erasure coding, "lfs pcc attach -w" and "lctl pcc add" with pccrw=1 refuse to run unless LFS_PCC_RW_OK is set in the environment. When the MDT refuses a PCC-RW attach at close, the client removes the cache copy it made. The server control is an MDT parameter, not a nodemap RBAC role: roles are enabled by default and a nodemap with all roles stores none, so a role that is off by default would change how roles are stored and synced to the targets. sanity-pcc enables PCC-RW for its tests. Add sanity-pcc test_1h to check that each control refuses its mode. Test-Parameters: testlist=sanity-pcc Assisted-by: ClaudeCode:claude-opus-5-5 Signed-off-by: Patrick Farrell <patrick@thelustrecollective.com> Change-Id: I85d874f79f67575c9e329ff0bebfbcce5f22d149
69438
master
J –B ✓T ✓R +2/2
LU-20546 osc: check request pack rc with "if (rc)"
reviewing Hiroshi Nishida · CI green — awaiting your review
master-next
S +6 −6
2d
LU-20546 osc: check request pack rc with "if (rc)"
reviewing Hiroshi Nishida · CI green — awaiting your review
master-next
S +6 −6
2d
build #134586 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1 · Timothy Day +1
patchsets:
PS1 10-05
PS2 10-27
owner Hiroshi Nishida · uploader Hiroshi Nishida · PS2 uploaded 7d ago · NEW · open in Gerrit ↗
commit message
LU-20546 osc: check request pack rc with "if (rc)" ptlrpc_request_pack() clears rq_import on error. Some callers check its result with "if (rc < 0)", so Coverity cannot see that the request is never sent after a failed pack: CID 506496: FORWARD_NULL in osc_punch_send() The pack never returns a positive rc, so this is a false positive. Use "if (rc)" like the other callers, to silence it. Signed-off-by: Hiroshi Nishida <hnishida@thelustrecollective.com> Assisted-by: Claude:Opus-5 claude-code Change-Id: I038987f65d51e5ce1a8250f3e4d6e986d5f76006
69830
master
J –B ✓T ✓R 0/2
LU-10499 pcc: DIO attach copy for encrypted files
reviewing Andreas Dilger · CI green — awaiting your review
pccro
4 unresolved
M +85 −8
2d
LU-10499 pcc: DIO attach copy for encrypted files
reviewing Andreas Dilger · CI green — awaiting your review
pccro
4 unresolved
M +85 −8
2d
build #135130 SUCCESS · tests all Maloo sessions
no vote yet: Sebastien Buisson
patchsets:
PS2 10-20
PS3 10-20
PS4 10-21
PS5 10-27
PS6 11-01
+1 earlier
PS1 10-20threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:23 — The helper does accept a copy up to one unit larger, but the kernel check in pcc_copy_data_dio() still requires the PCC file size to equal t
Gerrit AI review for Lustre
The helper does accept a copy up to one unit larger, but the kernel check in pcc_copy_data_dio() still requires the PCC file size to equal the clear text size when the key is loaded (see the comment in pcc.c), so this statement is only true for the helper side.
reply Gerrit AI review for Lustre pcc.c:3980 — (defect) Now that encrypted files reach pcc_copy_data_dio(), does this check reject every DIO copy of an encrypted file whose size is not a
Gerrit AI review for Lustre
(defect) Now that encrypted files reach pcc_copy_data_dio(), does this check reject every DIO copy of an encrypted file whose size is not a multiple of LUSTRE_ENCRYPTION_UNIT_SIZE?
With the key loaded, ll_merge_attr() does not round i_size and does not set lli_lazysize, so pcc_copy_data() passes the clear text `size`, e.g. 2102152. The helper opens with O_CIPHERTEXT, ll_direct_IO() reads up to ll_dio_size() = round_up(size, 4096), and fid_path_copy() accepts `copied` = 2105344 and truncates the PCC file to that. Back here:
rc = i_size_read(file_inode(dst)); /* 2105344 */
if (rc != size) /* 2102152 */
so every such attach prints the "has 2105344 of 2102152 bytes, use buffered copy" CWARN, returns -EIO, and pcc_copy_data() copies the whole file again with pcc_copy_data_buffered(). The attach does twice the I/O and the DIO path only takes effect for files that are already unit-aligned. Should this also accept round_up(size, LUSTRE_ENCRYPTION_UNIT_SIZE) when IS_ENCRYPTED(inode), to match the helper and the commit message?
reply Gerrit AI review for Lustre sanity-pcc.sh:4201 — (minor) pcc_copy_data_dio() logs "DIO copied" before it checks the PCC file size, so this grep also passes when the copy is then thrown away
Gerrit AI review for Lustre
(minor) pcc_copy_data_dio() logs "DIO copied" before it checks the PCC file size, so this grep also passes when the copy is then thrown away and redone by the buffered fallback. That is what happens for the 2102152 byte case, and since the buffered copy also produces a unit-aligned ciphertext file, the size and cmp checks below pass too. Could the test also fail if the debug log contains "use buffered copy" (or check that the CWARN is absent), so that it really verifies the DIO copy was kept?
reply Gerrit AI review for Lustre ll_fid_path_copy.c:32 — (style) This isn't a bug, but rather than a local copy of the constant, could this include lustreapi_internal.h and use LUSTRE_ENCRYPTION_UN
Gerrit AI review for Lustre
(style) This isn't a bug, but rather than a local copy of the constant, could this include lustreapi_internal.h and use LUSTRE_ENCRYPTION_UNIT_SIZE (or round_up() from libcfs) directly, as mkfs_lustre.c and lustre_cfg.c already include that header? Then the two values cannot drift apart.
tags: pccro
owner Andreas Dilger · uploader Andreas Dilger · PS6 uploaded 2d ago · NEW · open in Gerrit ↗
commit message
LU-10499 pcc: DIO attach copy for encrypted files The PCC copy of an encrypted file holds its ciphertext, so the kernel copy sets S_PCCCOPY to read the Lustre file as if the key were not loaded. The DIO copy by ll_fid_path_copy was not used for encrypted files, since its direct reads would decrypt the data when the key is loaded. Now that direct IO of a file opened with O_CIPHERTEXT transfers the ciphertext whether the key is loaded or not, have ll_fid_path_copy open the source file with O_CIPHERTEXT for its direct IO, and use the DIO copy for encrypted files. O_CIPHERTEXT has no effect on the direct IO of other files, except that its O_NONBLOCK does not restore a released file, whose copy then fails and the kernel falls back to the buffered copy. A ciphertext read reaches the end of the last encryption unit, so the copy may be up to one unit larger than the clear text size, as with the kernel copy. Add sanity-pcc test_50d to verify the PCC copy of an encrypted file. Test-Parameters: trivial testlist=sanity-pcc Test-Parameters: testlist=sanity-pcc clientarch=aarch64 clientdistro=rocky9.8 Signed-off-by: Andreas Dilger <adilger@thelustrecollective.com> Assisted-by: ClaudeCode:claude-opus-5-5 ltvm llm_code_and_review_tools Change-Id: Ia3d6809c5e9631d7f375d51d9946fdb3373ebbe5
54499
master
J –B ✓T ✓R +1/2
LU-10499 pcc: add lctl pcc abort command to abort attaches
reviewing Qian Yingjin · CI green — awaiting your review
pccro
1 unresolved
L +309 −20
2d
LU-10499 pcc: add lctl pcc abort command to abort attaches
reviewing Qian Yingjin · CI green — awaiting your review
pccro
1 unresolved
L +309 −20
2d
build #134911 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
no vote yet: Feng Lei
patchsets:
PS5 10-20 Andreas Dilger
PS6 10-20 Andreas Dilger
PS7 10-21 Andreas Dilger
PS8 10-27 Andreas Dilger
PS9 10-30 Andreas Dilger
+4 earlier
PS1 03-21 PS2 09-26 PS3 09-26 PS4 09-26threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre liblustreapi_pcc.c:628 — (minor) With -v this message is printed for every FID found in the backend, not just for files that are attached. The NOT_DETACH branch in p
Gerrit AI review for Lustre
(minor) With -v this message is printed for every FID found in the backend, not just for files that are attached. The NOT_DETACH branch in pcc_ioctl_detach() returns before it checks pcci, and ll_dir_ioctl() returns 0 without calling it when ilookup5() finds no inode. Either way the flags come back without ATTACHING or CACHE_REMOVED. So a copy left by `lfs pcc detach -k`, or by an earlier `lctl pcc abort -d`, is reported as "still attached" by `lctl pcc abort -v`. With -d it is reported as "detached" even though it was not attached. lctl-pcc-abort.8 says -v prints the files "as they are detached". If the patch is refreshed, could the message say only that the copy was kept? Or the kernel could report whether it actually detached the file.
tags: pccro
owner Qian Yingjin · uploader Andreas Dilger · PS9 uploaded 4d ago · NEW · open in Gerrit ↗
commit message
LU-10499 pcc: add lctl pcc abort command to abort attaches Add the command "lctl pcc abort [--detach|-d] [--verbose|-v] [--wait|-w] MNTPATH [PCCPATH]" to abort the attaches in progress to one or all PCC backends on a client, without removing the backends. The files already in the cache stay attached, unless --detach is given, which detaches them but keeps their PCC copies. With --wait it waits for the aborted attaches to finish. Add PCC_CLEANUP_FL_KEEP_CONF to keep the PCC backend configured, and PCC_CLEANUP_FL_NOT_DETACH and PCC_DETACH_FL_NOT_DETACH so that the scan of the PCC backend only aborts the attaches. NOT_DETACH keeps the PCC copies, as PCC_CLEANUP_FL_KEEP_DATA does. "lctl pcc del|clear --keep-data --abort" now aborts the attaches in progress, and like --keep-data alone keeps the cached files attached. Document the command in the new lctl-pcc-abort.8 man page, and add sanity-pcc test_109 to verify it. Test-Parameters: trivial testlist=sanity-pcc Signed-off-by: Qian Yingjin <qian@ddn.com> Signed-off-by: Andreas Dilger <adilger@thelustrecollective.com> Assisted-by: ClaudeCode:claude-opus-5-5 ltvm llm_code_and_review_tools Change-Id: Ib7152f7418aa1beb840919e98bf8de53c99b5c54
69543
master
J –B ✓T ✓R 0/2
LU-20909 llite: copy only reply bytes for dir read-on-open
reviewing Andreas Dilger · CI green — awaiting your review
CI@PS1
S +10 −2
2d
LU-20909 llite: copy only reply bytes for dir read-on-open
reviewing Andreas Dilger · CI green — awaiting your review
CI@PS1
S +10 −2
2d
build #133255 SUCCESS · tests all Maloo sessions
no vote yet: Lai Siyao
patchsets:
PS1 10-09
PS2 10-10
build/test results are from PS1 — PS2…PS2 changed only the commit message (votes copied, CI not re-run)
owner Andreas Dilger · uploader Andreas Dilger · PS2 uploaded 24d ago · NEW · open in Gerrit ↗
commit message
LU-20909 llite: copy only reply bytes for dir read-on-open
ll_dir_finish_open() copies PAGE_SIZE bytes from the inline reply
into each folio, but the MDS returns only rep_size bytes, mostly
whole lu_dirpages. On a client with pages larger than 4KiB a
small directory returns a single 4KiB lu_dirpage, so the copy reads
up to PAGE_SIZE - 4KiB past the end of the reply buffer.
Copy only the bytes left in the reply and zero the rest of the
folio. Also limit lu_pgs to the folios actually allocated, so a
folio allocation failure partway through does not leave lu_pgs
unconsumed and trip the LASSERT in mdc_adjust_dirpages().
Fixes: 4a14a51a8e00 ("LU-18448 llite: read dir on open")
Fixes: e13f17ce3a6f ("LU-18448 llite: read dir on open fixes")
Signed-off-by: Andreas Dilger <adilger@thelustrecollective.com>
Assisted-by: ClaudeCode:claude-opus-5.5 ltvm,llm_code_and_review_tools
Change-Id: Ie10772321e3ad7509d0ec456e73a1ae2c33ebbe5
54493
master
J –B ✓T ✓R +1/2
LU-10499 pcc: abort in-progress attach by PCC detach command
reviewing Qian Yingjin · CI green — awaiting your review
pccro
7 unresolved
L +271 −26
2d
LU-10499 pcc: abort in-progress attach by PCC detach command
reviewing Qian Yingjin · CI green — awaiting your review
pccro
7 unresolved
L +271 −26
2d
build #134909 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
no vote yet: Feng Lei
patchsets:
PS5 10-20 Andreas Dilger
PS6 10-20 Andreas Dilger
PS7 10-21 Andreas Dilger
PS8 10-27 Andreas Dilger
PS9 10-30 Andreas Dilger
+4 earlier
PS1 03-21 PS2 09-25 PS3 09-26 PS4 09-26threads: 7 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:17 — (minor) The helper pid was already recorded by pcc_dio_copy_init() in the parent patch. What this patch adds is the per-superblock pccs_dio_
Gerrit AI review for Lustre
(minor) The helper pid was already recorded by pcc_dio_copy_init() in the parent patch. What this patch adds is the per-superblock pccs_dio_copies list, which lets pcc_ioctl_detach() find the helper for an inode via pcc_dio_copy_abort(). Could the sentence say that instead?
reply Gerrit AI review for Lustre COMMIT_MSG:23 — (style) "Changes from the original patches" describes this patch as a delta from abandoned revisions, and those revisions never landed. Once
Gerrit AI review for Lustre
(style) "Changes from the original patches" describes this patch as a delta from abandoned revisions, and those revisions never landed. Once landed, the message should describe the change against master. The getopt and abort-flag fixes are not changes to master, so this section could be removed.
reply Gerrit AI review for Lustre COMMIT_MSG:37 — (style) The squashed message from the abandoned change says ll_fid_path_copy calls llapi_pcc_state_fd() every 32 I/Os and exits when it sees
Gerrit AI review for Lustre
(style) The squashed message from the abandoned change says ll_fid_path_copy calls llapi_pcc_state_fd() every 32 I/Os and exits when it sees PCC_STATE_FL_ATTACH_ABORTING. The patch doesn't do that, and the first part of the message says the helper "no longer polls". The third squashed message, "then wait for them to abort", is also only true with --wait. Should these two squashed messages, and their Was-Change-Id: lines, be dropped so the message describes only what this patch does?
reply Gerrit AI review for Lustre COMMIT_MSG:57 — (typo) "abort the attache" -> "abort the attach"
Gerrit AI review for Lustre
(typo) "abort the attache" -> "abort the attach"
reply Gerrit AI review for Lustre pcc.c:3823 — (style) This isn't a bug, but it open-codes the new pcc_attach_aborting() helper. If the helper is moved above pcc_copy_data_buffered(), thi
Gerrit AI review for Lustre
(style) This isn't a bug, but it open-codes the new pcc_attach_aborting() helper. If the helper is moved above pcc_copy_data_buffered(), this could be `if (pcc_attach_aborting(inode))`.
reply Gerrit AI review for Lustre liblustreapi_pcc.c:663 — (minor) With --abort --wait the kernel no longer waits for the attaches using the dataset. Only the attaches whose PCC copy the scan finds a
Gerrit AI review for Lustre
(minor) With --abort --wait the kernel no longer waits for the attaches using the dataset. Only the attaches whose PCC copy the scan finds are aborted and waited for. Two cases are missed: an attach that is past pcc_dataset_attach_get() but not yet at __pcc_inode_create(), and one that creates its copy in a FID directory the scan has already passed. Such an attach keeps running and holds the backend mount. It then completes and stays attached on the removed backend, and nothing removes its copy. --wait in lctl-pcc.8 promises to wait "before removing the backend", so `-a -w` waits for less than `-w` alone. Could the scan run with ABORT|ATTACHING_WAIT first, followed by the kernel "del PCC wait", so the kernel still waits for any attach that is left?
reply Gerrit AI review for Lustre liblustreapi_pcc.c:665 — (defect) Adding --abort drops the kernel "wait", and the scan that was meant to replace it is skipped with --keep-data. So `lctl pcc del -k
Gerrit AI review for Lustre
(defect) Adding --abort drops the kernel "wait", and the scan that was meant to replace it is skipped with --keep-data. So `lctl pcc del -k -w -a MNT PCC` neither waits nor aborts:
flags = KEEP_DATA | WAIT | ABORT
cmd = "del PCC" /* no "wait" */
if (flags & PCC_CLEANUP_FL_KEEP_DATA)
return 0; /* no scan either */
With -k -w alone the kernel does wait. Should --abort be rejected with --keep-data, or should the kernel wait be kept when no scan follows?
tags: pccro
owner Qian Yingjin · uploader Andreas Dilger · PS9 uploaded 4d ago · NEW · open in Gerrit ↗
commit message
LU-10499 pcc: abort in-progress attach by PCC detach command A user may want to abort in-progress attach for some purposes such as freeing space for PCC backend. To support this operation, we add an "abort" option for PCC detach command to abort the in-progress attach. "lfs pcc detach --abort" sets PCC_STATE_FL_ATTACH_ABORTING on a file that is being attached. The kernel copy checks it for each buffer, and the DIO copy helper is killed, so the attach fails with -ECANCELED and removes its partial PCC copy. The kernel records the pid of each running ll_fid_path_copy for this, from the usermode helper init callback. "lctl pcc del|clear --abort" aborts the attaches of all files on the PCC backend. With --wait, both wait for the aborted attaches to finish. Changes from the original patches: - ll_fid_path_copy no longer polls the PCC state of the file with the per-file LL_IOC_PCC_STATE ioctl, which is deprecated. Killing the helper aborts the copy at once. - "lctl pcc del|clear -a" did not work, since "a" was missing from the getopt string. - "lctl pcc del|clear --abort" without --wait skipped the removal of every PCC copy, since it checked the input abort flag instead of the returned PCC_DETACH_FL_ATTACHING. - The detach no longer polls with msleep(), see the --wait option. Add sanity-pcc test_108a for "lfs pcc detach --abort" of the kernel and DIO copies, and test_108b for "lctl pcc clear --abort --wait". LU-10499 pcc: abort data copy via ll_fid_path_copy For data copying via ll_fid_path_copy in direct I/O mode in user space, the client calls llapi_pcc_state_fd() to obtain the file PCC state. If it is marked with PCC_STATE_FL_ATTACH_ABORTING, the data copy process ll_fid_path_copy exits immediately. To reduce the overhead of these check, we do not check for each data copy iter, instead, we do a check for certain times of I/Os (32 times by default). For I/O size of 32MiB, it will be checking 1 times per second at 1GiB/s. There should be some time-lag before the copy tool quits finally. Was-Change-Id: I20631e5481a7e97d7a1ed0729bcd269ef6248a2c LU-10499 pcc: abort data copy when clear PCC backend This patch adds an option "--abort" for "lctl pcc del|clear" command tools. With this option, the user will first set ATTACH_ABORTING flag on all in-progress attaching files, and then wait for them to abort the attache when remove a PCC backend from a client. Was-Change-Id: I4e2f3ec8866e9af45f4524a9f45ee418ef4cb5be Test-Parameters: trivial testlist=sanity-pcc Signed-off-by: Qian Yingjin <qian@ddn.com> Signed-off-by: Andreas Dilger <adilger@thelustrecollective.com> Assisted-by: ClaudeCode:claude-opus-5-5 ltvm llm_code_and_review_tools Change-Id: I49fb1c42838f8d7e9728a5c4c6f3d60e959b233b
54487
master
J –B ✓T ✓R +1/2
LU-10499 pcc: wait for in-progress attaches when remove PCC
reviewing Qian Yingjin · CI green — awaiting your review
pccro
1 unresolved
L +313 −54
2d
LU-10499 pcc: wait for in-progress attaches when remove PCC
reviewing Qian Yingjin · CI green — awaiting your review
pccro
1 unresolved
L +313 −54
2d
build #134908 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
no vote yet: Feng Lei
patchsets:
PS6 10-20 Andreas Dilger
PS7 10-20 Andreas Dilger
PS8 10-21 Andreas Dilger
PS9 10-27 Andreas Dilger
PS10 10-30 Andreas Dilger
+5 earlier
PS1 03-21 PS2 09-25 PS3 09-26 PS4 10-20 Andreas Dilger PS5 10-20 Andreas Dilgerthreads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre lctl-pcc.8:62 — (minor) The SYNOPSIS and OPTIONS now say --keep-data and add -v and -w, but the DESCRIPTION entries for `lctl pcc del` and `lctl pcc clear`
Gerrit AI review for Lustre
(minor) The SYNOPSIS and OPTIONS now say --keep-data and add -v and -w, but the DESCRIPTION entries for `lctl pcc del` and `lctl pcc clear` (and the "--keep|-k" text under -k) still show only `[ --keep | -k ]`. If the patch is refreshed, could these match the SYNOPSIS so that --wait also appears where each subcommand is described?
tags: pccro
owner Qian Yingjin · uploader Andreas Dilger · PS10 uploaded 4d ago · NEW · open in Gerrit ↗
commit message
LU-10499 pcc: wait for in-progress attaches when remove PCC When remove a PCC backend from a client, it should wait for all in-progress attaches finished. Otherwise, it results in the failure of the PCC backend umount operation. The reason is that the PCC copy is referenced in the kernel, not used by any applications in user space and the tool "lsof" can not check whether the target PCC backend is used or not. Count the attaches using each PCC backend, and with the new "wait" argument of "clear" and "del PCCPATH" for llite.*.pcc, wait for them after removing the backend. An older kernel ignores the argument and removes the backend without waiting. Always wait at unmount. Fixes from the original patches: - "clear_wait" never waited, since it also matched "clear". - pccs_generation was changed without holding pccs_rw_sem. - "lfs pcc detach --wait" polled the file state with msleep() and could not be interrupted. Use a killable wait on a waitqueue that is woken when an attach finishes. Also add the missing newline to the "is being attached" message of llapi_pcc_scan_detach(), and wait for attaches in the sanity-pcc cleanup_pcc_mapping() so that the PCC backend can be unmounted. Add sanity-pcc test_106 for "lctl pcc del|clear --wait" and test_107 for "lfs pcc detach --wait" with PCC-RO and PCC-RW. LU-10499 pcc: add wait option when remove a PCC backend In this patch, we add a "wait" option for the PCC tool when remove PCC backend from a client: lctl pcc del --wait $MOUNT $pcc_path lctl pcc clear --wait $MOUNT With this option, the caller must wait for all in-progress attaches finished when remove the PCC backend from a client. Was-Change-Id: Ic8386329087a7129b0583fa823cbb50673893d0d LU-10499 pcc: wait for attach finished for detach command When detach a file from a PCC backend, this file may be still attaching state. At this time, we add a flag to wait for the attach finished (PCC_DETACH_FL_ATTACHING_WAIT). After that, retry the detach. Was-Change-Id: If85d95be744e3f7d6a07f880e78de5b68b579ed6 LU-10499 pcc: add --wait option for PCC detach command This patch adds "--wait" option for PCC detach command. PCC detach with this option must wait for in-progress attach on this file finished. Add sanity-pcc/test_107 to verify it. Was-Change-Id: I63d52d514884b15a7b534d0f03deee441a12d3f1 Test-Parameters: trivial testlist=sanity-pcc Signed-off-by: Qian Yingjin <qian@ddn.com> Signed-off-by: Andreas Dilger <adilger@thelustrecollective.com> Assisted-by: ClaudeCode:claude-opus-5-5 ltvm llm_code_and_review_tools Change-Id: I05b268e75841f9f17e77819ed20c85c78d7c6ad6
54481
master
J –B ✓T ✓R +1/2
LU-10499 pcc: asynchronous PCCRO attach command support
reviewing Qian Yingjin · CI green — awaiting your review
pccro
4 unresolved
L +273 −34
2d
LU-10499 pcc: asynchronous PCCRO attach command support
reviewing Qian Yingjin · CI green — awaiting your review
pccro
4 unresolved
L +273 −34
2d
build #134907 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
no vote yet: Feng Lei, Patrick Farrell
patchsets:
PS8 10-20 Andreas Dilger
PS9 10-21 Andreas Dilger
PS10 10-27 Andreas Dilger
PS11 10-28 Andreas Dilger
PS12 10-30 Andreas Dilger
+7 earlier
PS1 03-21 PS2 09-23 PS3 09-24 PS4 09-25 PS5 09-26 PS6 10-20 Andreas Dilger PS7 10-20 Andreas Dilgerthreads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (style) This isn't a bug, but if the patch is refreshed the summary could be imperative, e.g. "LU-10499 pcc: add async PCC-RO attach with lf
Gerrit AI review for Lustre
(style) This isn't a bug, but if the patch is refreshed the summary could be imperative, e.g. "LU-10499 pcc: add async PCC-RO attach with lfs pcc attach -A".
reply Gerrit AI review for Lustre COMMIT_MSG:25 — (minor) Following on from the comment in pcc_layout_rdonly_set(): the MDS doesn't seem to apply MAY_WRITE to IT_LAYOUT intents, because no u
Gerrit AI review for Lustre
(minor) Following on from the comment in pcc_layout_rdonly_set(): the MDS doesn't seem to apply MAY_WRITE to IT_LAYOUT intents, because no ucred is set up for them. If that's right, "the MDS checks write permission for the layout change" and "Before, such an attach would fail" don't describe the current behaviour, and this paragraph should be updated along with the code.
reply Gerrit AI review for Lustre patchset comment — Documentation/man1/lfs-pcc.1:9
Gerrit AI review for Lustre
Documentation/man1/lfs-pcc.1:9 (minor) The lfs-pcc.1 SYNOPSIS for "lfs pcc attach" and "lfs pcc attach_fid" still lists only -i/-r/-w. If the patch is refreshed, could --async|-A be added here too, so it matches lfs-pcc-attach.1 and the lfs help text?
reply Gerrit AI review for Lustre pcc.c:4282 — (minor) Does the MDS actually check write permission for this intent? As far as I can tell, the IT_LAYOUT request (ldlm_intent_layout_client
Gerrit AI review for Lustre
(minor) Does the MDS actually check write permission for this intent? As far as I can tell, the IT_LAYOUT request (ldlm_intent_layout_client[]) has no mdt_body, and mdt_intent_opc() → mdt_intent_layout() → mdt_layout_change_pccro() → mdt_layout_change() never calls mdt_init_ucred(). So the session ucred is still UCRED_INIT when mo_permission(..., MAY_WRITE) runs, and __mdd_permission_internal() does:
if ((uc == NULL) || (uc->uc_valid == UCRED_INIT))
RETURN(0);
The op_fsuid/op_cap that ll_prep_md_op_data() takes from the overridden creds are never sent for IT_LAYOUT, so this override_creds() doesn't seem to change anything on the MDS, and the comment's reasoning doesn't hold. If that's right, a read-only user's sync attach also worked before this patch, and the read-only-user part of test_103 would pass without the change. Was it checked to fail without this hunk?
If the override isn't needed, it and the comment could be dropped. The missing MAY_WRITE check for layout write intents is an existing MDS issue, separate from this patch.
tags: pccro
owner Qian Yingjin · uploader Andreas Dilger · PS12 uploaded 4d ago · NEW · open in Gerrit ↗
commit message
LU-10499 pcc: asynchronous PCCRO attach command support Currently PCCRO attach via the command "lfs pcc attach" will block during the data copying. There is a requirement that this command can also do data copy asynchronously. Thus we add an option "--async|-A" to the command which will not block while the file data is being fetched. The attach is done synchronously if llite.*.pcc_attach_thread_max attach threads are already running, or a thread cannot be started. Configuration errors, such as an unknown PCC backend id, are still returned before the thread is started, while a failed background copy leaves the file unattached. Encrypted files can be attached asynchronously as well, and sanity-pcc test_21j now does that. The attach thread runs with the credentials of the process that started the attach, as the synchronous attach does, so that the PCC copy has its owner and quota. This also applies to the asynchronous attach on open of large files. The PCC-RO layout is set as the PCC super user, since the MDS checks write permission for the layout change, while llite.*.pcc_mode allows users who can only read a file to attach it. Before, such an attach would fail, except for the asynchronous attach that ran as root. Document "lfs pcc attach -A" in lfs-pcc-attach.1 and llapi_pcc_attach.3. Was-Change-Id: I7757a9d0b66a3586abdc9053b73d69944561ffbd Add sanity-pcc test_103 and test_104 to verify that it works correctly, using a new OBD_FAIL_LLITE_PCC_COPYDATA_PAUSE fail_loc to see the attach in progress. Create the PCC backend loop device as a sparse file and format it with lazy journal and inode table init, to speed up the tests. Was-Change-Id: I09f159810a778b8ef2bab93d0e2869237a3ebbe5 Test-Parameters: trivial testlist=sanity-pcc Signed-off-by: Qian Yingjin <qian@ddn.com> Signed-off-by: Andreas Dilger <adilger@thelustrecollective.com> Assisted-by: ClaudeCode:claude-opus-5-5 ltvm llm_code_and_review_tools Change-Id: I6f31190c8b9e9b9876b34f8e484c6c8b7f16b6db
54478
master
J –B ✓T ✓R +1/2
LU-10499 pcc: Add dio support for data copy during attach
reviewing Qian Yingjin · CI green — awaiting your review (needs rebase first)
needs rebase
pccro
5 unresolved
XL +1428 −18
2d
LU-10499 pcc: Add dio support for data copy during attach
reviewing Qian Yingjin · CI green — awaiting your review (needs rebase first)
needs rebase
pccro
5 unresolved
XL +1428 −18
2d
CI green — awaiting your review (needs rebase first)
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: sanity-pcc. | session |
build #134709 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
no vote yet: Feng Lei, Patrick Farrell
patchsets:
PS6 10-20 Andreas Dilger
PS7 10-20 Andreas Dilger
PS8 10-21 Andreas Dilger
PS9 10-27 Andreas Dilger
PS10 10-28 Andreas Dilger
+5 earlier
PS1 03-21 PS2 09-23 PS3 09-24 PS4 09-26 PS5 08-25 Andreas Dilgerthreads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger patchset comment — test_50c now pins the mdc lru_size (pcc_lru_pin, also used by test_50b), so the LRU does not cancel the layout locks of the attached files b
patrick bot
> Failed enforced test review-dne-zfs-subtest-change on RHEL 9.7 / x86_64 The one enforced failure, sanity-pcc test_50c, is this patch's own new test and not a PCC data-copy fault. The file's layout lock was evicted from the client LRU during the state check's own path lookup, which detaches the PCC-RO copy by design, so the test's readonly assertion races the LRU. The fix belongs in test_50c. No retest or ticket is requested. (run pw-engineer-54478-ps9-feaca1aad0d1)
Andreas Dilger
test_50c now pins the mdc lru_size (pcc_lru_pin, also used by test_50b), so the LRU does not cancel the layout locks of the attached files before the state checks. 21 of 21 runs passed locally.
reply Gerrit AI review for Lustre pcc.c:3901 — (minor) The commit message explains that a path string can't be trusted across mount namespaces, and the Lustre side is checked with -n. But
Gerrit AI review for Lustre
(minor) The commit message explains that a path string can't be trusted across mount namespaces, and the Lustre side is checked with -n. But the destination is still the string pccd_pathname, which kern_path() resolved in the namespace of the process that ran "lctl pcc add". The helper resolves it again in the umh (init) namespace. If those differ, the helper fails, or writes into whatever file has that name in the init namespace, and the kernel only finds out from the i_size check. Could the kernel also pass the device and inode number of `dst` (file_inode(dst)->i_sb->s_dev and ->i_ino), so that the helper can fstat() the destination it opened and check it is the same file?
reply Gerrit AI review for Lustre pcc.c:3934 — (minor) After an interrupted wait, `info` lives on until the helper exits, and it still points into lustre.ko: argv[0] and the "-F"/"-d" lit
Gerrit AI review for Lustre
(minor) After an interrupted wait, `info` lives on until the helper exits, and it still points into lustre.ko: argv[0] and the "-F"/"-d" literals, the static envp[], and the pcc_dio_copy_init()/pcc_dio_copy_cleanup() callbacks. The helper drops its last Lustre reference when it closes src_fd, but umh_complete() calls pcc_dio_copy_cleanup() only after it exits. Between those two points, umount and rmmod of lustre.ko can complete. The window is very small, but should the extra pdc reference also hold a module reference (__module_get(THIS_MODULE)), dropped in pcc_dio_copy_cleanup(), with the strings copied into pdc?
reply Gerrit AI review for Lustre pcc.c:3947 — (defect) Can this wait hang an open() that comes through ll_atomic_open()? There the VFS still holds the parent directory's i_rwsem: exclusi
Gerrit AI review for Lustre
(defect) Can this wait hang an open() that comes through ll_atomic_open()? There the VFS still holds the parent directory's i_rwsem: exclusive for O_CREAT, shared otherwise. ll_atomic_open() calls pcc_file_open(), and for a file below pccs_async_threshold (256 MiB by default) the attach is synchronous:
open_last_lookups() /* inode_lock(dir) or inode_lock_shared(dir) */
->lookup_open()->ll_atomic_open()->pcc_file_open()
->pcc_try_readonly_open_attach()->pcc_readonly_attach_sync()
->pcc_attach_data_archive()->pcc_copy_data_dio() /* waits here */
While it waits, the helper opens MNTPATH/.lustre/fid/[fid] with llapi_open_by_fid(). If the opened file is in the Lustre root directory and the ".lustre" dentry is not in the dcache, which happens after its LOOKUP lock is cancelled (ll_invalidate_aliases() then d_prune_aliases()), lookup_slow() needs inode_lock_shared() on that same root inode. With O_CREAT the root is held exclusive, so the helper blocks until the opener gets SIGKILL. Without O_CREAT it also blocks once any create or unlink in the root is queued for the write lock. Every other operation in the root directory waits behind it.
The commit message says the EX-5014 deadlock was specific to the el7 mutex, but this one seems to remain with i_rwsem. One option is to always use the async attach, or the buffered copy, when pcc_file_open() is called from ll_atomic_open().
reply Gerrit AI review for Lustre pcc.c:3957 — (suggestion) Some configurations make the helper fail on every attach. For example, the helper reads the file as root through .lustre/fid, s
Gerrit AI review for Lustre
(suggestion) Some configurations make the helper fail on every attach. For example, the helper reads the file as root through .lustre/fid, so on a root-squashed client it gets EACCES for files that are not world-readable. A PCC backend without O_DIRECT support fails the same way. Each attach above the threshold then starts a helper that fails, and logs this CWARN (rate-limited) before the buffered copy. Would CDEBUG(D_CACHE) be enough here, or a CWARN only the first time for each dataset, perhaps also disabling the DIO copy for that dataset?
tags: pccro
owner Qian Yingjin · uploader Andreas Dilger · PS10 uploaded 6d ago · NEW · open in Gerrit ↗
commit message
LU-10499 pcc: Add dio support for data copy during attach
PCC attach performance is bottlenecked by single threaded
buffered I/O performance. We could do multi-threading, but
multi-threaded buffered I/O to one file has a very low
performance ceiling. In order to significantly speed up
PCC attach performance, we need to switch to DIO.
DIO cannot be done from kernel memory due to various
restrictions, so we call out to a usermode helper,
ll_fid_path_copy, for files of at least
llite.*.pcc_dio_attach_threshold bytes (32 MiB by default).
Each I/O is llite.*.pcc_dio_attach_iosize_mb in size (32 MiB
by default, 0 disables the DIO copy).
Note that the helper uses open by fid because given a
file pointer, it's not possible to reliably generate the
path to a file on Lustre due to container namespace issues.
Specifically, the path used by the user may not work for
our helper program due to namespace differences. So we
must use open by fid for the Lustre side of the copy.
The kernel also passes the client mount name, and the helper fails
if the mountpoint is another mount, since FIDs are only unique
within one filesystem.
"lctl pcc add" passes the Lustre mountpoint to the kernel as
the "mntpath" parameter of the PCC backend for this. An old
lctl that does not pass it gets a buffered copy, and the new
lctl retries without it on an old kernel. If the helper is
missing or fails, e.g. because the PCC backend does not support
O_DIRECT, the kernel does a buffered copy instead.
The helper runs without CAP_SYS_RESOURCE, as the kernel copy does,
so that it respects the quota limits of the PCC backend. The wait
for the helper can be killed, as the buffered copy can be
interrupted, and then the helper is killed as well.
The helper truncates the PCC file to the size copied, since it may
be a larger old copy (LU-13023), and logs errors to syslog, since
it has no stderr when run by the kernel.
This patch improves attach performance from about 1 GiB/s
to about 5 GiB/s. This performance figure includes time to
read the data from Lustre *and* to write it out to PCC.
Fixes from the original patch series:
- a helper that failed was treated as a successful copy,
since the positive exit status from call_usermodehelper()
is not an errno, leaving a PCC copy with missing data.
- encrypted files must keep the kernel copy, so that the
PCC copy holds ciphertext (S_PCCCOPY).
- remove the el7 workaround that unlocked the parent directory
during the copy from atomic_open(). With HAVE_INODE_RWSEM
gone it was compiled for all kernels, where it would
up_write() a lock that may be held shared.
- in ll_fid_path_copy, terminate the getopt option list, only
join threads that were started, return per-thread errors,
and fix the chunk size rounding. Each thread opens its own
destination fd, so that the buffered fallback for an
unaligned tail does not clear O_DIRECT for all threads.
- llapi_pccdev_set() returned a positive errno on failure.
Also fix sanity-pcc test_40, which compares async and sync
attach times with paused bulk RPCs, by disabling the DIO copy.
Add test_10g for quota with the DIO copy, and a re-attach after
truncate to test_50b.
EX-5014 pcc: avoid deadlock during DIO open attach on rhel7
The Maloo testing fails with sanity-pcc/45 due to a deadlock
on the rhel7 kernel, which uses a mutex for inode locking.
During ->ll_atomic_open(), the kernel takes this mutex on the
parent inode, and the user space helper program ll_fid_path_copy
also tries to take it during lookup.
Was-Change-Id: I384c7b1979d93183b86bbde311d29a50346a8d56
EX-5014 pcc: minor fixes for parameter checks
Improve console message when out-of-range pcc_dio_attach_iosize_mb
values are supplied. Values that are not a multiple of 1 MiB are
now rejected.
Was-Change-Id: I2bf7d0bf564c954318980f7a09d8713a70f37db9
LU-10499 pcc: dio attach failed on non-blksz-aligned file
PCC attach failed due to do DIO copy on files with blksz unligned
file size. The reason is that the copy tool ll_fid_path_copy
fails on non-blksize-aligned file for PCC backend (such as a local
Ext4 file system) using direct I/O. This fixes the bug by falling
back from direct I/O to buffered I/O mode when copying the tail
non-blksize-aligned part of the file.
Was-Change-Id: I5287563029269032a91397c0094e2ccede73b9b1
LU-10499 pcc: add threshold to determine direct I/O during attach
This patch adds the threshold tunable parameter to determine doing
direct I/O or buffered I/O for data copying during attach:
llite.*.pcc_dio_attach_threshold
The default value is same as direct I/O size: 32MiB.
And the usage of the parameter "pcc_dio_attach_size_mb" is
deprecated, and use "pcc_dio_attach_iosize_mb" instead.
Was-Change-Id: I393d6a06523303e749192ba9978449c3d75886ae
LU-10499 pcc: parallel data copy for attach
This patch parallelize the data copying work for pcc attach
by using multiple threads in the ll_fid_path_copy helper,
llite.*.pcc_dio_attach_threads_per_file (4 by default).
Nvidia provided performance numbers for this from their
environment. This was with 4 MiB I/O size, they reported
speed was similar but *slightly* lower at larger block
sizes. This is probably an EXT4 limitation since Lustre
speed scales with those larger sizes. (As PCC attach is a
copy from Lustre to EXT4.)
This is for attaching a single 2 TiB file, they also
reported no performance regression for datasets with many
small files.
threads: 1 2 4 8
speed: 4 GiB/s 7.8 GiB/s 14.1 GiB/s 15.2 GiB/s
Performance improved only very slightly past 8 threads,
and 4 threads is clearly the sweet spot for performance.
Was-Change-Id: Iffbb3892cfb5b2e71afe15d03f9aec9c84975092
Fixes: f172b1168857 ("LU-10092 llite: Add persistent cache on client")
Test-Parameters: trivial testlist=sanity-pcc
Test-Parameters: testlist=sanity-pcc clientdistro=el8.10
Signed-off-by: Patrick Farrell <pfarrell@whamcloud.com>
Signed-off-by: Qian Yingjin <qian@ddn.com>
Signed-off-by: Andreas Dilger <adilger@thelustrecollective.com>
Assisted-by: ClaudeCode:claude-opus-5-5 ltvm llm_code_and_review_tools
Change-Id: Idb2a12296c3e4778763c9b576bbb0ecd2570a458
65201
master
J !B ✓T ✓R 0/2
LU-19768 target: add netlink stats
reviewing Timothy Day · CI green — awaiting your review
38 unresolved
XL +1643 −21
3d
LU-19768 target: add netlink stats
reviewing Timothy Day · CI green — awaiting your review
38 unresolved
XL +1643 −21
3d
janitor run: 4 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-zfs-part-1 | RHEL 9.8 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
build #134974 SUCCESS · tests all Maloo sessions
patchsets:
PS1 04-09
PS2 07-22
PS3 07-29
PS4 07-29
PS5 09-29
threads: 38 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — target/kernelcomm.c:
Misc Code Checks Robot (Gatekeeper helper)
target/kernelcomm.c: warning: sparse:symbol 'lustre_export_done' was not declared. Should it be static?
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — target/kernelcomm.c:
Misc Code Checks Robot (Gatekeeper helper)
target/kernelcomm.c: warning: sparse:symbol 'lustre_export_done' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_start' was not declared. Should it be static?
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — target/kernelcomm.c:
Misc Code Checks Robot (Gatekeeper helper)
target/kernelcomm.c: warning: sparse:symbol 'lustre_export_done' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_start' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_dump' was not declared. Should it be static?
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — target/kernelcomm.c:
Misc Code Checks Robot (Gatekeeper helper)
target/kernelcomm.c: warning: sparse:symbol 'lustre_export_done' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_start' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_dump' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_done' was not declared. Should it be static?
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — target/kernelcomm.c:
Misc Code Checks Robot (Gatekeeper helper)
target/kernelcomm.c: warning: sparse:symbol 'lustre_export_done' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_start' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_dump' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_done' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_export_start' was not declared. Should it be static?
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — target/kernelcomm.c:
Misc Code Checks Robot (Gatekeeper helper)
target/kernelcomm.c: warning: sparse:symbol 'lustre_export_done' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_start' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_dump' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_done' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_export_start' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_export_dump' was not declared. Should it be static?
reply Gerrit AI review for Lustre COMMIT_MSG:11 — The body lists recovery status, OBD parameters, job stats and BRW stats, but the patch also adds TARGET_CMD_EXPORTS with lustre_export_start
Gerrit AI review for Lustre
The body lists recovery status, OBD parameters, job stats and BRW stats, but the patch also adds TARGET_CMD_EXPORTS with lustre_export_start()/_dump()/_done(). Could the exports command be described here too? The uAPI header also gains LDLM_GENL_NAME/enum ldlm_nl_commands, MDD_GENL_NAME/enum mdd_nl_commands and LQUOTA_GENL_NAME/enum lquota_nl_commands, none of which are mentioned or used. Are those meant to be in this patch?
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — target/kernelcomm.c:
Misc Code Checks Robot (Gatekeeper helper)
target/kernelcomm.c: warning: sparse:symbol 'lustre_export_done' was not declared. Should it be static?
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — target/kernelcomm.c:
Misc Code Checks Robot (Gatekeeper helper)
target/kernelcomm.c: warning: sparse:symbol 'lustre_export_done' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_start' was not declared. Should it be static?
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — target/kernelcomm.c:
Misc Code Checks Robot (Gatekeeper helper)
target/kernelcomm.c: warning: sparse:symbol 'lustre_export_done' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_start' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_dump' was not declared. Should it be static?
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — target/kernelcomm.c:
Misc Code Checks Robot (Gatekeeper helper)
target/kernelcomm.c: warning: sparse:symbol 'lustre_export_done' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_start' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_dump' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_done' was not declared. Should it be static?
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — target/kernelcomm.c:
Misc Code Checks Robot (Gatekeeper helper)
target/kernelcomm.c: warning: sparse:symbol 'lustre_export_done' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_start' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_dump' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_obd_params_done' was not declared. Should it be static? target/kernelcomm.c: warning: sparse:symbol 'lustre_export_start' was not declared. Should it be static?
owner Timothy Day · uploader Timothy Day · PS5 uploaded 35d ago · NEW · open in Gerrit ↗
commit message
LU-19768 target: add netlink stats Add server-side netlink handlers for exporting target statistics via generic netlink. This introduces a new target_family with commands for recovery status, OBD parameters, job stats, and BRW stats. The OSD layers (ldiskfs and zfs) wire their brw_stats into dt_device so the netlink handlers can collect them. The job_stat struct is moved to the header for netlink access. TLC-bug-id: TLU-56 Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: I7357690440427ef636df9d20d84bd489cd4f79fa
69415
master
J –B ✓T ✓R +2/2
LU-20868 build: Honor systemd configuration in rpmbuild
reviewing Xiao Yang · CI green — awaiting your review
S +6 −23
4d
LU-20868 build: Honor systemd configuration in rpmbuild
reviewing Xiao Yang · CI green — awaiting your review
S +6 −23
4d
build #134716 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1 · Timothy Day +1
no vote yet: Shaun Tancheff
patchsets:
PS2 10-05
PS3 10-05
PS4 10-06
PS5 10-06
PS6 10-29
+1 earlier
PS1 10-04owner Xiao Yang · uploader Xiao Yang · PS6 uploaded 6d ago · NEW · open in Gerrit ↗
commit message
LU-20868 build: Honor systemd configuration in rpmbuild
Pass the systemd configuration to rpmbuild to avoid packaging
systemd unit files when users explicitly run ./configure with
--with-systemdsystemunitdir=no.
Enable systemd by default as all supported distros ship it.
Fixes: 32d1a1c5d610 ("LU-9439 scripts: lnet systemd service")
Test-Parameters: trivial
Signed-off-by: Xiao Yang <xyang@ddn.com>
Change-Id: I540d958edf124dd7e94c5bf243bfda0815fda719
69554
master
J –B ✓T ✓R 0/2
LU-20920 obdclass: keep the lu_site shrinker to its budget
reviewing Markus Hilger · CI green — awaiting your review
218_review_prioritypw_shepherd
M +101 −2
4d
LU-20920 obdclass: keep the lu_site shrinker to its budget
reviewing Markus Hilger · CI green — awaiting your review
218_review_prioritypw_shepherd
M +101 −2
4d
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-zfs-part-1 | RHEL 9.8 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
build #134670 SUCCESS · tests all Maloo sessions
no vote yet: Alexander Boyko, Andreas Dilger, Vitaly Fertman, Patrick Farrell
patchsets:
PS1 10-09
PS2 10-10
PS3 10-28
tags: 218_review_priority pw_shepherd
owner Markus Hilger · uploader Markus Hilger · PS3 uploaded 6d ago · NEW · open in Gerrit ↗
commit message
LU-20920 obdclass: keep the lu_site shrinker to its budget
lu_cache_shrink_scan() passes the remaining budget from site to site
and keeps visiting sites after it is used up. Called with nr == 0,
lu_site_purge_objects() still purges one object per hash bucket and
decrements nr to -1, the purge-all value, which it returns as the
remaining budget, so the sites after it are purged completely. As
visited sites are moved to the tail in the same order, the same site
pays the budget on every callback and the one after it is drained.
With two MDTs on one MDS, one debugfs shrinker scan of 128 objects
purged 384. Under an mdtest stat workload one MDT per server was
drained to 40k and 5k cached objects while the other kept 44M and
59M.
Stop the scan once the budget is used up, so the sites not visited
are shrunk first next time, and purge nothing for nr == 0. The
callback again returns the number of objects purged. Fix the comment
on the return value of lu_site_purge_objects().
Add sanity test 436, which fills two MDTs on one MDS with mknod files
and checks with the debugfs shrinker scan that each scan frees at
most its budget and that the scans rotate over both MDTs.
Fixes: 52d620153307 ("LU-4416 mm: Backport shrinker changes from upstream")
Test-Parameters: mdscount=2 mdtcount=4 testlist=sanity \
env=ONLY=436,ONLY_REPEAT=10
Test-Parameters: fstype=zfs mdscount=2 mdtcount=4 testlist=sanity \
env=ONLY=436,ONLY_REPEAT=10
Signed-off-by: Markus Hilger <markus.hilger@megware.com>
Change-Id: I5da6b49af6b2dc44acf98216d1025b6935de13ed
69429
master
J –B ✓T ✓R +1/2
LU-20825 mdt: limit HSM action listing batch size
reviewing Louis-Marie Nicolas · CI green — awaiting your review
S +17 −3
6d
LU-20825 mdt: limit HSM action listing batch size
reviewing Louis-Marie Nicolas · CI green — awaiting your review
S +17 −3
6d
build #133450 SUCCESS · tests all Maloo sessions
reviews:
Etienne AUJAMES +1
no vote yet: Nikitas Angelinas
patchsets:
PS1 10-05
PS2 10-08
PS3 10-12
PS4 10-12
owner Louis-Marie Nicolas · uploader Louis-Marie Nicolas · PS4 uploaded 23d ago · NEW · open in Gerrit ↗
commit message
LU-20825 mdt: limit HSM action listing batch size
Reading mdt.*.hsm.actions with lctl get_param can fail with ENOMEM
when the action logs are too large because the show callback processes
the entire log in one call, requiring seq_file to grow its buffer
until we hit an hardcoded limit at 2GB.
Limit each show call to 262144 actions so the required buffer size
does not grow with the total number of actions.
Advance the batch cursor only when the batch fits in the seq_file
buffer, and set EOF only after a complete traversal without overflow,
so retries do not skip actions or prematurely end the listing.
Fixes: aff399789fe4 ("LU-6215 lprocfs: handle seq_printf api change")
Reported-by: Guillaume Courrier <guillaume.courrier@cea.fr>
Signed-off-by: Louis-Marie Nicolas <lnicolas@ddn.com>
Assisted-by: Codex:codex-6-astra (review/proofreading)
Change-Id: I36b0b8f2331a8161cc11e1e48ffe616623c1c4ca
68043
master
J !B ✓T ✓R +2/2
LU-20601 utils: make Lustre headers c++ compatible
reviewing Etienne AUJAMES · CI green — awaiting your review
10 unresolved
M +87 −51
6d
LU-20601 utils: make Lustre headers c++ compatible
reviewing Etienne AUJAMES · CI green — awaiting your review
10 unresolved
M +87 −51
6d
janitor run: 3 failing config(s), none unique to this patch — janitor results
8 optional test failure(s) — informational
build #132057 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1 · Timothy Day +1
no vote yet: Sebastien Buisson
patchsets:
PS4 08-21
PS5 08-24
PS6 08-26
PS7 09-10
PS8 09-21
+3 earlier
PS1 08-17 PS2 08-21 PS3 08-21threads: 10 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:18 — (minor) The bullet list covers most of the diff, but the LCFG_HDR_SIZE() rewrite in lustre_cfg.h has no matching entry. That one is a differ
Gerrit AI review for Lustre
(minor) The bullet list covers most of the diff, but the LCFG_HDR_SIZE() rewrite in lustre_cfg.h has no matching entry. That one is a different complaint from the seven listed: offsetof() with a runtime array index is not a constant expression in C++, so offsetof(struct lustre_cfg, lcfg_buflens[(count)]) is rejected outright rather than warned about. Worth a bullet so the hunk isn't read as unrelated. Same for the arr_tail rename in lustre_idl.h, which the body mentions only as the cause of the g++ error.
reply Oleg Drokin lustre_idl.h:3146 — I think we should drop this hunk altogether?
Gerrit AI review for Lustre
(minor) Is the rename needed? Once hai_data[] is gone under C++, arr_hai is a complete type and a member after it is legal again; keeping the name as arr_tail compiles clean under both g++ and gcc with -Wall -Werror. Nothing in the tree references the field either way. This is an installed uapi header, so the rename is an API change for out-of-tree consumers, and arr_do_not_use no longer says the field is the llog_rec_tail. Would keeping arr_tail and moving the warning into the comment work as well, e.g. "record tail, for sizeof() only - arr_hai is variable length so the real tail is not here"?
Andreas Dilger
This shoukd never be valid for use, so I don't think the API concern is valid, but it also is not exactly "cleanup for C++" .
Oleg Drokin
I think we should drop this hunk altogether?
reply Andreas Dilger lustre_idl.h:3152 — This could be fixed if patch refreshed
Gerrit AI review for Lustre
(typo) pre-existing, but since this line is being touched anyway: "for_sizezof_only" should be "for sizeof() only".
Andreas Dilger
This could be fixed if patch refreshed
reply Oleg Drokin lustre_idl.h:488 — should that have been void I wonder?
Oleg Drokin
should that have been void I wonder? Probably could cut down on some type conversions
reply Oleg Drokin lustre_idl.h:526 — huh?
Oleg Drokin
huh? can't we just manually specify struct luda_type here then? Not like it changes.
reply Oleg Drokin lustre_idl.h:2436 — similarly here only given we are in the definition of p here, it looks even more bizzare
Oleg Drokin
similarly here only given we are in the definition of p here, it looks even more bizzare
reply Andreas Dilger lustre_user.h:2651 — That seems reasonable?
Gerrit AI review for Lustre
Adding evidence to the open question above about dropping the flexible array under C++.
This header already carries a C++ spelling for exactly this case, at the top of the file:
#ifndef DECLARE_FLEX_ARRAY
#ifdef __cplusplus
#define DECLARE_FLEX_ARRAY(T, member) T member[0]
and it is already used for other variable-length members here and in lustre_idl.h. `char hai_data[0]` is not a flexible array member, so it can sit before `arr_do_not_use` inside `struct llog_agent_req_rec` without the g++ error described in the commit message, and `sizeof(struct hsm_action_item)` stays 72 either way.
So `DECLARE_FLEX_ARRAY(char, hai_data)` looks like it would fix the same build error while keeping the member visible to C++ callers. As written, a C++ translation unit sees a different `struct hsm_action_item` than a C one, and `offsetof(struct hsm_action_item, hai_data)` - which wiretest.c and wirecheck.c both use - has no C++ equivalent. Would that spelling work here?
Andreas Dilger
That seems reasonable?
reply Etienne AUJAMES lustre_user.h:2652 — No, the issue is that `struct hsm_action_item` is included inside `struct llog_agent_req_rec` as arr_hai field:
James Simmons
c++ can't handle flex array? Is this safe to do?
Etienne AUJAMES
No, the issue is that `struct hsm_action_item` is included inside `struct llog_agent_req_rec` as arr_hai field:
```
struct llog_agent_req_rec {
struct llog_rec_hdr arr_hdr; /**< record header */
__u32 arr_status; /**< status of the request */
/* must match enum
* agent_req_status
*/
__u32 arr_archive_id; /**< backend archive number */
__u64 arr_flags; /**< req flags */
__u64 arr_compound_id; /** < compound cookie,
* ignored
*/
__u64 arr_req_create; /**< req. creation time */
__u64 arr_req_change; /**< req. status change time */
struct hsm_action_item arr_hai; /**< req. to the agent */
struct llog_rec_tail arr_tail; /**< record tail for_sizezof_only */
} __attribute__((packed));
```
The c++ compiler complains here about `arr_tail` defined after `arr_hai` because of the variable sized struct: accessing directly to arr_tail is not safe.
`arr_tail` is never reached, this is only used for sizeof():
```
int mdt_agent_record_add(const struct lu_env *env, struct mdt_device *mdt,
__u32 archive_id, __u64 flags,
struct hsm_action_item *hai)
{
struct obd_device *obd = mdt2obd_dev(mdt);
struct coordinator *cdt = &mdt->mdt_coordinator;
struct llog_ctxt *lctxt = NULL;
struct llog_agent_req_rec *larr;
int rc;
int sz;
ENTRY;
sz = llog_data_len(sizeof(*larr) + hai->hai_len - sizeof(*hai)); <-------
OBD_ALLOC(larr, sz);
....
}
```
I can't modify the `struct llog_agent_req_rec` because of the existing codes that might use it. So here, I decide to implement this like changelog: the variable part of hai is accessed via an helper functions (`hai_data()` and `hai_data_len()`). But But I keep the flexible array in C for the existing codes that uses it (like the rust API wrapper, robinhood, HPSS, phobos...).
I’m not concerned with the existing HSM code in C++ since it doesn’t compile.
reply Gerrit AI review for Lustre lustre_user.h:2642 — (style) this isn't a bug, but the comment terminator lost its space: "(variable length)*/" reads better as "(variable length) */".
Gerrit AI review for Lustre
(style) this isn't a bug, but the comment terminator lost its space: "(variable length)*/" reads better as "(variable length) */".
reply Andreas Dilger lustre_user.h:2668 — This seems reasonable, or a follow up patch to fix the man page is needed.
Gerrit AI review for Lustre
(minor) These accessors are the only way a C++ copytool can reach the opaque data now, but Documentation/man3/llapi_hsm_copytool_register.3 still shows the struct with
char hai_data[]; /* variable length */
and its SYNOPSIS lists only hai_first() and hai_next(). If the patch is refreshed, could that page pick up hai_data()/hai_data_len() alongside them, and note that the member itself is not visible under C++?
Andreas Dilger
This seems reasonable, or a follow up patch to fix the man page is needed.
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS8 uploaded 44d ago · NEW · open in Gerrit ↗
commit message
LU-20601 utils: make Lustre headers c++ compatible C++ compilers did not like some of the C idioms used in the Lustre headers: - C++ checks the types of enums more forcefully than is done in C. - signed vs unsigned comparisons will generate a warning under g++ - "invalid suffix on literal" warning: Lustre is not trying to generate a new literal identifier - implicit "void*" conversion to non-void pointer - integer narrowing conversion - const char* conversion - void pointers arithmetic This patch removes the hai_data[] flexible array from hsm_action_item struct in C++ builds. Since hsm_action_item is embedded in the llog_agent_req_rec struct, the C++ compiler raises an error because the arr_tail field is defined after arr_hai. To maintain access to the variable-sized data, inline functions hai_data() and hai_data_len() are introduced. Update sanity 400b test to verify C++ compilation of Lustre/LNet headers. Test-Parameters: testlist=sanity env=ONLY=400b Signed-off-by: Etienne AUJAMES <eaujames@ddn.com> Change-Id: I3366441e896da9bc3428d499fcc4f6b9566a1cf5
67492
master
J –B ✓T ✓R 0/2
LU-20516 ldlm: fix flock deadlock-detection state races
reviewing Sohei Koyama · CI green — awaiting your review
M +119 −79
6d
LU-20516 ldlm: fix flock deadlock-detection state races
reviewing Sohei Koyama · CI green — awaiting your review
M +119 −79
6d
8 optional test failure(s) — informational
build #134611 SUCCESS · tests all Maloo sessions
no vote yet: Yang Sheng, Andriy Skulysh, Andreas Dilger, Vitaly Fertman, Oleg Drokin, Timothy Day
patchsets:
PS2 07-27
PS3 08-03 Yang Sheng
PS4 08-05
PS5 08-17
PS6 10-28
+1 earlier
PS1 07-23owner Sohei Koyama · uploader Sohei Koyama · PS6 uploaded 7d ago · NEW · open in Gerrit ↗
commit message
LU-20516 ldlm: fix flock deadlock-detection state races
The deadlock-detection walk finds the blocked lock of the next
owner in the chain with cfs_hash_lookup(), which drops the
flock-hash bucket lock before returning, and only then reads
blocking_owner and blocking_export of the found lock. Those
fields are rewritten by ldlm_flock_blocking_link()/unlink() under
the resource lock of the request lock, which the walk does not
hold. A racing relink corrupts the walk in two ways: it
overwrites blocking_export between the walk's hs_get and hs_put,
which both read the live field, so one export leaks a reference
and another is put while still in use; and its
atomic_set(blocking_refs, 0) discards the reference the walk
still holds, so the walk's put later reaches zero and clears the
blocking state of the meanwhile re-hashed lock.
Instead of taking the found lock out of the hash, read it in
place: replace cfs_hash_lookup() with cfs_hash_for_each_key(),
whose callback runs under the bucket lock, and there snapshot
blocking_owner and the blocking export's NID. The walk carries
only those values from hop to hop and holds no lock or export
references at all. Since cfs_hash_add()/del() take the same
bucket lock, the blocking state is now written only while the
lock is unhashed: link sets it (taking a blocking_export
reference) before cfs_hash_add() and unlink clears it (dropping
the reference) after cfs_hash_del(). blocking_refs and the
export refcounting in the hs_get/hs_put callbacks become
unnecessary and are removed. Two behavior notes: the final
cycle check now compares the owner and NID of the same hop (it
paired the advanced owner with the previous hop's NID before),
and exports without a flock hash are skipped in the walk.
Add OBD_FAIL_LDLM_FLOCK_DEADLOCK_PAUSE, pausing the walk between
hops while it holds only the snapshotted values, and sanityn
test_74b racing deadlock detection against blocking-state
relinks; with the pause the race crashes servers without this
fix within seconds (test_74 is renamed to test_74a).
Assisted-by: ClaudeCode:Fable-5
Test-Parameters: testlist=sanityn env=ONLY=74b,ONLY_REPEAT=5
Fixes: 2c7a41a5c595 ("LU-1157 ldlm: replace waiting flock lists by hashes")
Signed-off-by: Sohei Koyama <skoyama@ddn.com>
Signed-off-by: Yang Sheng <ys@whamcloud.com>
Change-Id: If5ad3aba7b2276394b3b06bde62a80c46fa3f431
68523
master
J –B ✓T ✓R 0/2
LU-20595 lnet: cYAML_get_object_item() back to shallow search
reviewing Xiyang Wang · CI green — awaiting your review
4 unresolved
M +44 −15
8d
LU-20595 lnet: cYAML_get_object_item() back to shallow search
reviewing Xiyang Wang · CI green — awaiting your review
4 unresolved
M +44 −15
8d
build #134381 SUCCESS · tests all Maloo sessions
no vote yet: Chris Horn
patchsets:
PS2 09-04
PS3 09-06
PS4 09-13
PS5 09-14
PS6 10-23
+1 earlier
PS1 08-31threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:38 — (minor) This paragraph describes a cYAML_build_error() change that isn't in this patchset. The `*root = NULL` fix, and the switch to cYAML_g
Gerrit AI review for Lustre
(minor) This paragraph describes a cYAML_build_error() change that isn't in this patchset. The `*root = NULL` fix, and the switch to cYAML_get_object_child() for the command lookup, already landed in f2d709c488 ("LU-20479 utils: fix use-after-free in cYAML_build_error"), and this diff doesn't touch that function. For the same reason, failure 2 above is already fixed in master and isn't fixed by this patch. Could both be dropped, or reduced to a short note that LU-20479 already covered the cYAML_build_error() side?
reply Gerrit AI review for Lustre COMMIT_MSG:48 — (minor) On patchset 5 a reviewer suggested adding `Test-Parameters: trivial` when the patch was refreshed. That was marked done, but the tra
Gerrit AI review for Lustre
(minor) On patchset 5 a reviewer suggested adding `Test-Parameters: trivial` when the patch was refreshed. That was marked done, but the trailer isn't in this patchset.
reply Gerrit AI review for Lustre cyaml.c:729 — (defect) Doesn't handle_yaml_config_udsp() still depend on the recursive search? It looks up "priority" on the rule's sequence item:
Gerrit AI review for Lustre
(defect) Doesn't handle_yaml_config_udsp() still depend on the recursive search? It looks up "priority" on the rule's sequence item:
prio = cYAML_get_object_item(tree, "priority");
but lustre_lnet_show_udsp()->yaml_add_udsp_action() emits priority one level down, under "action". The same layout is documented in lnetctl.8:
udsp:
- idx: 0
src: tcp
action:
priority: 0
With this change `prio` is NULL, so lustre_lnet_add_udsp() gets type "", lnet_str2udsp_action() returns EN_LNET_UDSP_ACTION_NONE, and the rule is rejected with "bad action type specified". In other words, `lnetctl export` followed by `lnetctl import --old-api` (or the fallback taken when the Netlink socket or parser can't be set up) can no longer restore UDSP rules. The Netlink path, handle_udsp_sequences(), scans scalars at any depth, so test_404 won't catch this.
One fix is to look up "action" first and then find "priority" under it, keeping the top-level key as a fallback. Either way, the commit message line saying no call site relies on the recursive behaviour would need updating.
reply Gerrit AI review for Lustre sanity-lnet.sh:3050 — (style) This isn't a bug, but if the patch is refreshed, the "(LU-20595)" can be dropped from the run_test description. The ticket is findab
Gerrit AI review for Lustre
(style) This isn't a bug, but if the patch is refreshed, the "(LU-20595)" can be dropped from the run_test description. The ticket is findable from git history, and the comment at the top of the test already names it.
owner Xiyang Wang · uploader Xiyang Wang · PS6 uploaded 12d ago · NEW · open in Gerrit ↗
commit message
LU-20595 lnet: cYAML_get_object_item() back to shallow search
cYAML_get_object_item() was originally implemented
to search only the direct children of the given node.
A previous change turned it into a recursive search
that also walks into child and sibling subtrees.
This can return an unrelated nested node that happens to
share the same name as the requested key, e.g. an "add" entity
under an "ni" error node matching the "add" command.
This caused two kinds of failures:
1. Misconfiguration in lnetctl:
an entry missing a key could silently pick up
the value of a neighbouring or nested node with the same name
(e.g. the "interfaces" value of the following net entry).
2. A use-after-free in cYAML_build_error():
the recursive search could return a nested error entry
instead of the command node. Since
cYAML_create_seq_item() only handles CYAML_TYPE_ARRAY, control
fell through to the "goto failed" branch, which frees the error
tree and prints "fatal: out of memory", seen while running
"lnetctl import --old-api".
The solution is to restore the shallow search.
Only the direct children of the parent node are examined,
keeping the self-match on the parent node in the function,
as cYAML_get_object_child() don't have it.
Currently all call sites expect the direct-child semantics,
none rely on the recursive behaviour.
The failed: path in cYAML_build_error() is fixed as well.
Freed error tree through local copy "r" and set *root = NULL.
So to avoid the later jt_import() print and free the same tree
again and cause a use_after_free error.
Add sanity-lnet test_171 which imports a YAML with several
net entries where the first one is missing the "interfaces" key,
verifying that the following entry's "interfaces" value
is not picked up and the import succeeds.
Fixes: c906ab9c88ef ("LU-7734 lnet: configuration fixes")
Signed-off-by: Xiyang Wang <xiwang@ddn.com>
Change-Id: I27f2213dbdf6d2c2c5388f2eda3f7d2bc75edc73
69839
master
J –B ✓T ✓R 0/2
LU-20999 utils: remove lctl add_conn and del_conn commands
reviewing Timothy Day · CI green — awaiting your review
M +1 −196
13d
LU-20999 utils: remove lctl add_conn and del_conn commands
reviewing Timothy Day · CI green — awaiting your review
M +1 −196
13d
build #134118 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Patrick Farrell
owner Timothy Day · uploader Timothy Day · PS1 uploaded 14d ago · NEW · open in Gerrit ↗
commit message
LU-20999 utils: remove lctl add_conn and del_conn commands lctl add_conn and del_conn injected LCFG_ADD_CONN and LCFG_DEL_CONN records into a device by hand. Nothing in the test suite, lustre-iokit or the man pages uses them, and del_conn was actually sending LCFG_DEL_MOUNTOPT, so it never worked as documented. The kernel handling of LCFG_ADD_CONN stays, since the MGS config logs still emit it for failover nodes and tgt_mount.c synthesizes it for LWP devices. LCFG_DEL_CONN, however, has never been written by the MGS or any other in-tree producer, so the kernel path behind it is dead: drop the class_process_config() case, class_del_conn(), obd_del_conn(), the o_del_conn method and client_import_del_conn(). The LCFG_DEL_CONN value itself is kept in the UAPI header since it is part of the config record format checked by wirecheck. Test-Parameters: trivial Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: I7dd160fb1869452a847b1c9a4bd364b46a6a6964
69292
master
J ✗1B ✓T ✓R -1/2−
LU-20841 lnet: fix acceptor listener teardown race
reviewing Cyril Bordage · CI green — awaiting your review (needs rebase first)
needs rebase
4 unresolved
M +104 −79
13d
LU-20841 lnet: fix acceptor listener teardown race
reviewing Cyril Bordage · CI green — awaiting your review (needs rebase first)
needs rebase
4 unresolved
M +104 −79
13d
CI green — awaiting your review (needs rebase first)
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity-lfsck@zfs+DNE:test_18e | seen in 11 other reviews |
build #132453 SUCCESS · tests all Maloo sessions
no vote yet: Manish Regmi, Xinxia Qu, Serguei Smirnov, Chris Horn
threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:29 — (minor) Can pta_odata really be stale across an unload/reload, or NULL before the first listener? Module statics are reinitialised on load.
Gerrit AI review for Lustre
(minor) Can pta_odata really be stale across an unload/reload, or NULL before the first listener? Module statics are reinitialised on load. The old code also set pta_odata before installing lnet_acceptor_ready, so the callback could not run with a NULL value. Every TCP listener also saves the same sock_def_readable. Storing it per socket is fine, but this rationale doesn't seem to describe a real failure.
reply Gerrit AI review for Lustre COMMIT_MSG:43 — (minor) Is socket_lock actually shared with a softirq callback? lnet_acceptor_ready() never takes it; it only takes sk->sk_callback_lock. Ev
Gerrit AI review for Lustre
(minor) Is socket_lock actually shared with a softirq callback? lnet_acceptor_ready() never takes it; it only takes sk->sk_callback_lock. Every socket_lock user runs in process context, so the spin_lock_bh() conversion looks unnecessary, and this sentence doesn't match the code. Also, the thing leaked on lnet_sock_listen() failure was the lsock allocation, not a listening socket.
reply Gerrit AI review for Lustre acceptor.c:151 — (defect) Is it safe to trust sk_user_data here when sk is not the listener? sk_clone_lock() copies the listener's sk_data_ready and sk_user_
Gerrit AI review for Lustre
(defect) Is it safe to trust sk_user_data here when sk is not the listener? sk_clone_lock() copies the listener's sk_data_ready and sk_user_data into every child socket. sk_user_data is cleared only when it is tagged SK_USER_DATA_NOCOPY, and this patch does not tag it. So every connection that kernel_accept() returns also runs lnet_acceptor_ready(), with sk_user_data == lsock. The old code never read sk_user_data, so this is new. That child is then handed to ksocklnd. ksocknal_create_conn() sends the passive HELLO and then calls ksocknal_lib_set_callback(). That function sets sk_user_data = conn before it sets sk_data_ready, under ksnd_global_lock but not sk_callback_lock. If data from the peer arrives in that window, a softirq that already entered lnet_acceptor_ready() reads a ksock_conn as a listening_socket and calls lsock->liss_odata, which is whatever ksock_conn field sits at that offset. ksocknal_lib_reset_callback() has the mirror window when the conn closes. It restores sk_data_ready = lnet_acceptor_ready (the saved value) before it clears sk_user_data. The child can also outlive the lsock it points to. lnet_accept() looks up the NI by the NID in the request, not by the listener. For example, a connection arrives on tcp0's listener but asks for a tcp1 NID, and then tcp0 is deleted. lnet_acceptor_put_socket() then frees lsock while connd is still reading the HELLO on that child. svc_tcp_listen_data_ready() in sunrpc handles this case by bailing out unless sk->sk_state == TCP_LISTEN. Alternatively, after kernel_accept() succeeds, the acceptor thread could restore the child's sk_data_ready to lsock->liss_odata and clear sk_user_data under the child's sk_callback_lock. That would also stop ksocklnd from saving lnet_acceptor_ready as its "original" callback.
reply Gerrit AI review for Lustre api-ni.c:3453 — (minor) This isn't a bug, but the err_acceptor_stop label no longer stops the acceptor now that lnet_acceptor_stop() has moved below lnet_sh
Gerrit AI review for Lustre
(minor) This isn't a bug, but the err_acceptor_stop label no longer stops the acceptor now that lnet_acceptor_stop() has moved below lnet_shutdown_lndnets(). If the patch is refreshed, consider renaming it (e.g. err_reset_refcount) so the unwind labels still describe what they undo.
owner Cyril Bordage · uploader Cyril Bordage · PS1 uploaded 36d ago · NEW · open in Gerrit ↗
commit message
LU-20841 lnet: fix acceptor listener teardown race
A client crash is seen in __wake_up_common(), called from the
NET_RX_SOFTIRQ (napi_gro_receive -> tcp_v4_rcv ->
tcp_child_process), right after LNet has been unloaded and
reloaded. The waitqueue being woken is lnet_acceptor_waitq,
reached from a listening socket whose sk_data_ready still points
at lnet_acceptor_ready() in the module that is going away.
Several problems allow this:
- sk_data_ready is installed and restored without holding
sk->sk_callback_lock, so a softirq can be using the old value
while it is being replaced, and nothing waits for it to
complete before sock_release() and the module unload. Install
and restore the callback under
write_lock_bh(&sk->sk_callback_lock), let lnet_acceptor_ready()
take the lock for read and NOOP if it lost the race, and call
synchronize_net() before releasing the socket.
- The previous callback is saved in a single global,
lnet_acceptor_state.pta_odata, overwritten by every add and
never reset, hence stale across an unload/reload and NULL
before the first listener is added. Store it per listening
socket instead.
- LNetNIFini() calls lnet_acceptor_stop() before
lnet_shutdown_lndnets(). The acceptor thread exit path drains
socket_list and releases the listeners itself, so when
ksocknal_shutdown() later calls lnet_acceptor_remove_sockets()
the listener is already gone and "Interface %s not found" is
reported. The same inversion exists in the LNetNIInit() error
path. Call lnet_acceptor_stop() after lnet_shutdown_lndnets(),
as lnet_dyn_del_ni() and lnet_dyn_del_net() already do.
The four open coded refcount drops are folded into
lnet_acceptor_put_socket(), socket_lock is taken with the _bh
variants now that it is shared with a softirq callback, and the
listening socket leaked when lnet_sock_listen() fails is freed.
Assisted-by: ClaudeCode:claude-opus-5
Test-Parameters: trivial testlist=sanity-selinux,sanity-lnet
Fixes: 2e49bc7dd1 ("LU-18812 lnet: restrict IP addresses that socklnd listens on")
Fixes: 40e4d957e3 ("LU-10391 lnet: use data_ready callback to trigger accept()")
Signed-off-by: Cyril Bordage <cbordage@whamcloud.com>
Change-Id: I62000764b3b8ca8b3628519f50a6ef467a62287b
66738
master
J –B ✓T ✓R -1/2−
LU-20412 ksocklnd: move lib-socket and acceptor to the LND
reviewing Timothy Day · CI green — awaiting your review (needs rebase first)
needs rebase
5 unresolved
L +319 −348
13d
LU-20412 ksocklnd: move lib-socket and acceptor to the LND
reviewing Timothy Day · CI green — awaiting your review (needs rebase first)
needs rebase
5 unresolved
L +319 −348
13d
CI green — awaiting your review (needs rebase first)
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
build #134012 SUCCESS · tests all Maloo sessions
no vote yet: Jinshan Xiong, Chris Horn
patchsets:
PS1 06-18
PS2 10-19
threads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:14 — (minor) Is this accurate? Before the patch, the acceptor also stayed off when there was no socklnd net:
Gerrit AI review for Lustre
(minor) Is this accurate? Before the patch, the acceptor also stayed off when there was no socklnd net:
lnet_acceptor_start()
if (lnet_count_acceptor_nets() == 0) /* not required */
return 0;
and lnet_add_net_common() only called it when net->net_lnd->lnd_accept was set.
What actually changes:
- The acceptor's lifetime now follows socklnd base startup/shutdown. It is stopped only when the last socklnd NI goes away, so it now keeps running through lnet_shutdown_lndnets() in LNetNIFini().
- An invalid `accept=` value now fails only socklnd NI startup (with -ENETDOWN). Before, it failed LNetNIInit() for every network type with -EINVAL.
- Messages from acceptor.c and lib-socket.c are now logged under S_LND instead of S_LNET.
Would describing those changes be more useful than this sentence?
reply Gerrit AI review for Lustre COMMIT_MSG:17 — (style) LU-20412 is filed as an Improvement, and 8be9e4136965 didn't introduce a bug. It only left lib-socket.c/acceptor.c in LNet after the
Gerrit AI review for Lustre
(style) LU-20412 is filed as an Improvement, and 8be9e4136965 didn't introduce a bug. It only left lib-socket.c/acceptor.c in LNet after their other users were removed. A Fixes: tag marks this as a bug fix for maintenance-branch backport tracking, which this refactor isn't. Could the tag be dropped and the commit referenced in the body instead (e.g. "Since commit 8be9e4136965 removed the other LNDs, ...")?
reply Timothy Day patchset comment — This is moving a lot of socklnd specific code out of LNet. After this, the lnet_inet*_enumerate() family of functions are the largest offend
Timothy Day
This is moving a lot of socklnd specific code out of LNet. After this, the lnet_inet*_enumerate() family of functions are the largest offenders.
reply Chris Horn acceptor.c:89 — accept_backlog is definitely tuned by large sites.
Timothy Day
We might have to think about backward compatibility for these tunables.
Chris Horn
accept_backlog is definitely tuned by large sites. You also need to update sanity-lnet 290/291
reply Gerrit AI review for Lustre enumerate.c:3 — (style) This isn't a bug, but this code was moved here verbatim from lib-socket.c, which carries the Oracle (2008, 2010) and Intel (2015, 20
Gerrit AI review for Lustre
(style) This isn't a bug, but this code was moved here verbatim from lib-socket.c, which carries the Oracle (2008, 2010) and Intel (2015, 2017) copyright lines. Should those notices come along with the moved code?
owner Timothy Day · uploader Timothy Day · PS2 uploaded 15d ago · NEW · open in Gerrit ↗
commit message
LU-20412 ksocklnd: move lib-socket and acceptor to the LND
... since the other LNDs that used these interfaces have
been gone for a long time. The functions for enumerating
ethernet interfaces have been moved to lnet/lnet/enumerate.c
for now. Remove all unneeded EXPORT_SYMBOL().
We now no longer start the acceptor thread if socklnd is
not loaded.
Fixes: 8be9e4136965 ("LU-6209 lnet: Delete all obsolete LND drivers")
Test-Parameters: trivial
Signed-off-by: Timothy Day <timday@thelustrecollective.com>
Change-Id: Ide7c66685ec3a0a81a08f1e6a3348a9ebd102589
69840
master
J –B ✓T ✓R 0/2
LU-20999 utils: remove lctl getattr and setattr commands
reviewing Timothy Day · CI green — awaiting your review
1 unresolved
L +2 −414
13d
LU-20999 utils: remove lctl getattr and setattr commands
reviewing Timothy Day · CI green — awaiting your review
1 unresolved
L +2 −414
13d
build #134119 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Patrick Farrell
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:10 — (minor) This says getattr was only used against the echo client, but the OSC case removed from osc_iocontrol() was added on purpose by 4143c
Gerrit AI review for Lustre
(minor) This says getattr was only used against the echo client, but the OSC case removed from osc_iocontrol() was added on purpose by 4143c3bdec ("LU-15452 utils: support lctl getattr for osc"). It also added the FID parsing in jt_str_to_ost_id(), so that
lctl --device <fsname>-OSTxxxx-osc-<instance> getattr [0x100010000:0x2:0x0]
could dump OST object attributes from a client (parent FID, layout_version, data_version, projid, ...). As far as I can see nothing else in the tree gives that per-object view from a client.
Is dropping this debugging use intentional? If so, could the commit message say so and explain why it is no longer needed? Otherwise, would it make sense to keep `getattr` for OSC devices and remove only setattr and the test_* commands?
owner Timothy Day · uploader Timothy Day · PS1 uploaded 14d ago · NEW · open in Gerrit ↗
commit message
LU-20999 utils: remove lctl getattr and setattr commands lctl getattr and setattr issued OBD_IOC_GETATTR and OBD_IOC_SETATTR against the echo client, and test_getattr and test_setattr looped the same ioctls as micro-benchmarks. Nothing in the test suite or lustre-iokit uses setattr or either test_ command. The only getattr caller was the obdecho_test helper in sanity.sh test 180, which added it in LU-3267 as a regression check for the echo sequence handling in the ioctl. The echo client no longer takes a bare object id without a sequence, and test_brw already exercises the same object lookup path, so the check is redundant. Remove all four commands and their jt_obd_getattr(), jt_obd_setattr(), jt_obd_test_getattr() and jt_obd_test_setattr() handlers, the private jt_str_to_ost_id() helper, the OBD_IOC_GETATTR and OBD_IOC_SETATTR handlers in the echo client and OSC, and the getattr step from obdecho_test(). Keep the ioctl numbers reserved in the UAPI header. Test-Parameters: trivial Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: I0d48f2c88bdf3e59cd12b004b04c5bcb6a6a6964
58637
master
J –B ✓T ✓R 0/2
LU-18813 osd-wbcfs: store and pin OST objects in MemFS
reviewing Qian Yingjin · CI green — awaiting your review
12 unresolved
L +557 −5
14d
LU-18813 osd-wbcfs: store and pin OST objects in MemFS
reviewing Qian Yingjin · CI green — awaiting your review
12 unresolved
L +557 −5
14d
build #134043 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Timothy Day
patchsets:
PS7 05-25 Timothy Day
PS8 01-13 Timothy Day
PS9 01-13 Timothy Day
PS10 07-04 Timothy Day
PS11 10-19 Timothy Day
+6 earlier
PS1 04-02 PS2 04-02 PS3 04-02 PS4 04-03 PS5 04-03 PS6 04-05threads: 12 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:11 — The body only describes the pinning effect, but the diff also adds a whole /O directory hierarchy (osd_ondisk.c with simple_mkdir(), osd_ost
Gerrit AI review for Lustre
The body only describes the pinning effect, but the diff also adds a whole /O directory hierarchy (osd_ondisk.c with simple_mkdir(), osd_ost_init(), osd_seq_load(), osd_obj_map_insert()/osd_obj_map_delete()) and two new helpers in osd_handler.c, osd_fld_lookup() and fid_is_on_ost(). Could the body say that OST/llog objects are now linked into an O/<seq>/dN tree modelled on osd-ldiskfs, and that this is what pins them? As written most of the 557 added lines are unexplained.
reply Gerrit AI review for Lustre osd_internal.h:276 — osd_fld_lookup() is defined in osd_handler.c, not osd_handle.c. Same for the /* osd_procfs.c */ comment above: osd_wbcfs_procfs_init()/_fini
Gerrit AI review for Lustre
osd_fld_lookup() is defined in osd_handler.c, not osd_handle.c. Same for the /* osd_procfs.c */ comment above: osd_wbcfs_procfs_init()/_fini() live in osd_lproc.c.
reply Gerrit AI review for Lustre osd_internal.h:234 — (suggestion) Following up on the PS7 question about sharing this code instead of copying it: the new lustre/osd/osd_lib.c library is now in
Gerrit AI review for Lustre
(suggestion) Following up on the PS7 question about sharing this code instead of copying it: the new lustre/osd/osd_lib.c library is now in the parent commit and this patch uses osd_obj_seq_find()/osd_obj_seq_name()/osd_obj_map_free() from it. osd_oid_name() is still a verbatim copy of the osd-ldiskfs helper, though, and it does not depend on anything OSD-specific. Could it move into lustre/osd/osd_lib.c next to osd_obj_seq_name(), its sibling? fid_is_on_ost() and osd_fld_lookup() are copies too (the latter is now in three OSDs), but sharing those would need od_is_ost abstracted, so they could be a later step.
reply Gerrit AI review for Lustre osd_object.c:646 — fid_is_on_ost() returns 1 for fid_is_last_id(), so LAST_ID objects go through osd_obj_map_insert() and end up as O/<seq>/d0/0. The layout do
Gerrit AI review for Lustre
fid_is_on_ost() returns 1 for fid_is_last_id(), so LAST_ID objects go through osd_obj_map_insert() and end up as O/<seq>/d0/0. The layout documented at the top of osd_ondisk.c (and built by osd-ldiskfs) puts them at O/<seq>/LAST_ID. osd_oi_insert() in osd-ldiskfs checks fid_is_last_id() first and routes to osd_obj_spec_insert(); that check has no counterpart here.
reply Gerrit AI review for Lustre osd_object.c:647 — If osd_obj_map_insert() fails (d_alloc() returning -ENOMEM, or osd_seq_load() failing to allocate/create O/<seq>/dN), rc is returned but the
Gerrit AI review for Lustre
If osd_obj_map_insert() fails (d_alloc() returning -ENOMEM, or osd_seq_load() failing to allocate/create O/<seq>/dN), rc is returned but the inode created by __osd_create() is left in place: oo_inode is set and __osd_object_init() has already set LOHA_EXISTS.
So dt_create() reports failure while dt_object_exists() is true, and a retry for the same FID hits the -EEXIST at the top of this function. osd-ldiskfs osd_create() unwinds this case explicitly:
set_bit(LU_OBJECT_HEARD_BANSHEE, ...loh_flags);
loh_attr &= ~LOHA_EXISTS;
clear_nlink(inode); iput(inode); obj->oo_inode = NULL;
Should the same rollback happen here?
reply Gerrit AI review for Lustre osd_object.c:689 — (style) This isn't a bug, but the object itself has been destroyed by this point; what failed is removing its O/<seq>/dN entry, so something
Gerrit AI review for Lustre
(style) This isn't a bug, but the object itself has been destroyed by this point; what failed is removing its O/<seq>/dN entry, so something like "cannot remove O/ map entry for "DFID"" would be more accurate. Also, the new messages here and in osd_ondisk.c (lookup FLD, cannot find %s) end with "rc=%d". The osd-ldiskfs originals use the usual ": rc = %d" form.
reply Gerrit AI review for Lustre osd_ondisk.c:14 — SUBSYSTEM_DEBUG is not a thing; every other file in this directory uses DEBUG_SUBSYSTEM. libcfs_debug.h defaults DEBUG_SUBSYSTEM to S_UNDEFI
Gerrit AI review for Lustre
SUBSYSTEM_DEBUG is not a thing; every other file in this directory uses DEBUG_SUBSYSTEM. libcfs_debug.h defaults DEBUG_SUBSYSTEM to S_UNDEFINED, so all CDEBUG/CERROR/ENTRY output from this file is filed under the undefined subsystem and "lctl set_param subsystem_debug=osd" will not collect it.
reply Gerrit AI review for Lustre osd_ondisk.c:114 — The guard looks inverted relative to osd-ldiskfs simple_mkdir(), which returns early when dd_rdonly is set and only fixes the mode when it a
Gerrit AI review for Lustre
The guard looks inverted relative to osd-ldiskfs simple_mkdir(), which returns early when dd_rdonly is set and only fixes the mode when it actually differs:
if (unlikely(osd->od_dt_dev.dd_rdonly))
RETURN(dchild);
if ((old_mode & S_IALLUGO) != (mode & S_IALLUGO))
...fixup...
As written the mode is rewritten only when the device is read-only, and never when it is writable, so the comment above does not match the code.
reply Gerrit AI review for Lustre osd_ondisk.c:189 — This frees osd->od_ost_map, but od_ost_map is only assigned on the success path below; osd comes from OBD_ALLOC_PTR() in osd_device_alloc(),
Gerrit AI review for Lustre
This frees osd->od_ost_map, but od_ost_map is only assigned on the success path below; osd comes from OBD_ALLOC_PTR() in osd_device_alloc(), so it is still NULL here. OBD_FREE() is a no-op on NULL, so this leaks the ost_map allocated above whenever simple_mkdir("O") fails.
Should it be OBD_FREE_PTR(ost_map)?
reply Gerrit AI review for Lustre osd_ondisk.c:397 — This isn't a bug, but @obj is never used in this function (only mentioned in the TODO comment below), and simple_mkdir() never uses its @env
Gerrit AI review for Lustre
This isn't a bug, but @obj is never used in this function (only mentioned in the TODO comment below), and simple_mkdir() never uses its @env either. If the patch is refreshed, consider dropping the unused parameters.
reply Gerrit AI review for Lustre osd_ondisk.c:451 — (nit) The next statement overwrites the mtime set here straight away, so this line could be dropped if the patch is refreshed (osd_index_dir
Gerrit AI review for Lustre
(nit) The next statement overwrites the mtime set here straight away, so this line could be dropped if the patch is refreshed (osd_index_dir_delete() has the same duplicate).
reply Gerrit AI review for Lustre osd_ondisk.c:461 — (defect) Is this dentry actually made negative anywhere? d_make_discardable() only clears the persistent flag and drops that reference; on t
Gerrit AI review for Lustre
(defect) Is this dentry actually made negative anywhere? d_make_discardable() only clears the persistent flag and drops that reference; on the VFS unlink path it is vfs_unlink() calling d_delete() afterwards that unlinks the inode. Nothing here does that, so after this dput() the dentry stays hashed and positive on the LRU with refcount 0, and it still holds the ihold() reference from osd_obj_map_insert(). This assumes retain_dentry() still keeps hashed dentries when there is no ->d_delete; memfs sets no d_op.
Result on the OST, after ofd_object_destroy() -> dt_ref_del() + dt_destroy():
osd_object_delete() -> iput() /* i_count 2 -> 1, not evicted */
so memfs_evict_inode() -> truncate_inode_pages_range() only runs once the dcache shrinker or umount gets to the dentry. Before this patch, inode_just_drop() freed the object's pages as soon as the destroyed lu_object went away. On a memory-backed OST that means `rm` of a large file does not give the RAM back.
The stale inode also stays in the inode hash. If the same FID is created again (e.g. an OBD_FL_RECREATE_OBJS recreate, or orphan cleanup without SKIP_ORPHAN), insert_inode_locked() in osd_mkfile() should hit it and fail with -EIO ("doubly allocated?").
Would a d_drop() before the final dput() fix this, so the dentry is killed and the inode released? A plain d_delete() would leave a hashed negative dentry, and a later d_lookup() of the same name would then reach the LASSERT(S_ISREG(inode->i_mode)) with inode == NULL. osd_index_dir_delete() has the same pattern for MDT names; that predates this patch, but it matters more here because these are data objects whose IDs can be reused.
owner Qian Yingjin · uploader Timothy Day · PS11 uploaded 15d ago · NEW · open in Gerrit ↗
commit message
LU-18813 osd-wbcfs: store and pin OST objects in MemFS In this patch, we store and pin OST objects in MemFS. Thus, the OST objects will not be evicted from cache by the cache shrinker (i.e. the command "echo 3 > /proc/sys/vm/drop_caches") Test-Parameters: trivial Signed-off-by: Yingjin Qian <qian@ddn.com> Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: I53f0abca2577cdb15f34df5fa44f55aa57ae96ca
58987
master
J –B ✓T ✓R 0/2
LU-17848 osd: deduplicate osd_map_remote_to_local()
reviewing Timothy Day · CI green — awaiting your review
osd-mem
7 unresolved
M +56 −89
14d
LU-17848 osd: deduplicate osd_map_remote_to_local()
reviewing Timothy Day · CI green — awaiting your review
osd-mem
7 unresolved
M +56 −89
14d
build #134042 SUCCESS · tests all Maloo sessions
no vote yet: Qian Yingjin, Andreas Dilger, Alex Zhuravlev
patchsets:
PS5 01-18
PS6 05-12
PS7 05-29
PS8 07-04
PS9 10-19
+4 earlier
PS1 04-27 PS2 01-13 PS3 01-13 Janitor Bot PS4 01-13threads: 7 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:10 — (typo) The function is moved, not copied: both osd-ldiskfs and osd-wbcfs drop their static copies. Also, "Mapping between niobuf_local" read
Gerrit AI review for Lustre
(typo) The function is moved, not copied: both osd-ldiskfs and osd-wbcfs drop their static copies. Also, "Mapping between niobuf_local" reads as if the second half is missing. Maybe something like: "osd-ldiskfs and osd-wbcfs each carry an identical osd_map_remote_to_local() to initialize a niobuf_local array from a byte range. Move it to lustre/osd/osd_lib.c so both OSDs share one copy."
reply Alex Zhuravlev obd.h:467 — I'd disagree, local_niobuf is a structure representing how OSD sees data, mostly in terms of buffers.
Andreas Dilger
You don't think it is worthwhile to keep the osd_ prefix? The osd.h is a system-wide header and not a great place to start adding OSD-specific code. Also, this function is too large for a static inline. I think there should be a "library" for the shared code of the OSs. At least "osd_common.h" and "osd_common.c" that is linked in to each OSD (via symlinks) rather than a separate library since only one OSD is ever likely to be used at any time on a system.
Timothy Day
> You don't think it is worthwhile to keep the osd_ prefix? It's not really an OSD function IMO - it's just mapping between two non-OSD structs. > The osd.h is a system-wide header and not a great place to start adding OSD-specific code. Also, this function is too large for a static inline. I put this next to the "struct niobuf_local" definition, which I thought made sense. > I think there should be a "library" for the shared code of the OSs. At least "osd_common.h" and "osd_common.c" that is linked in to each OSD (via symlinks) rather than a separate library since only one OSD is ever likely to be used at any time on a system. I can do that. I'll push this to lustre/osd/ and maybe link into obdclass. I think multiple OSDs would be used. I know some vendors mix ldiskfs/ZFS at least. It's desirable to be able to test these combinations on a local node.
Alex Zhuravlev
I'd disagree, local_niobuf is a structure representing how OSD sees data, mostly in terms of buffers.
reply Gerrit AI review for Lustre osd.h:6 — (style) The file description still scopes this header to "/O directory" definitions, which no longer covers the niobuf/lnb mapping declarati
Gerrit AI review for Lustre
(style) The file description still scopes this header to "/O directory" definitions, which no longer covers the niobuf/lnb mapping declaration added below. The matching comment at the top of lustre/osd/osd_lib.c has the same problem. If the patch is refreshed, consider broadening both to say they hold code shared between OSD implementations.
reply Gerrit AI review for Lustre osd.h:59 — (suggestion) This isn't a bug, but the new name reads backwards from what the function does. There is no niobuf input here - the inputs are
Gerrit AI review for Lustre
(suggestion) This isn't a bug, but the new name reads backwards from what the function does. There is no niobuf input here - the inputs are a plain byte range (offset, len) - and no pages come out either, since lnb_page is explicitly set to NULL for every entry. What it really does is fill an lnb array from a range. Something like osd_map_range_to_lnbs() or osd_init_lnbs() would describe that more accurately.
reply Gerrit AI review for Lustre osd_lib.c:128 — (style) Every other function in this file has a kernel-doc block; this one has none. Now that it is a shared interface declared in osd.h, th
Gerrit AI review for Lustre
(style) Every other function in this file has a kernel-doc block; this one has none. Now that it is a shared interface declared in osd.h, the contract is worth spelling out - in particular that -EOVERFLOW is returned once maxlnb entries have been filled, and that *nrpages still holds the partial count on that path (both callers just propagate rc and drop it).
reply Gerrit AI review for Lustre osd_lib.c:159 — (minor) This assertion previously lived in osd_io.c, which sets:
Gerrit AI review for Lustre
(minor) This assertion previously lived in osd_io.c, which sets:
#define DEBUG_SUBSYSTEM S_OSD
osd_lib.c doesn't define DEBUG_SUBSYSTEM, so libcfs_private.h falls back to S_UNDEFINED and the record produced by LASSERTF() is no longer tagged as osd. Adding a DEBUG_SUBSYSTEM S_OSD define at the top of osd_lib.c would restore that (osd_ost_fini()'s ENTRY/EXIT is in the same situation today).
On a related note, both original copies wrapped this in ENTRY/RETURN and the shared one uses a plain return - was dropping the D_TRACE tracing of the mapping loop intended?
reply Timothy Day test-framework.sh:1183 — I think this is leftover from a previous iteration of the patch. In the current series, it's not a separate module.
Andreas Dilger
I don't really think that this should be a *separate* module, but just a library that is linked into the existing osd-* modules. I don't think saving a few KiB of code is going to make a difference (and independent modules have their own overhead) since running multiple OSDs on a single server is extremely uncommon. IMHO, the main benefit of osd-lib is from code/maintenance reduction.
Timothy Day
I think this is leftover from a previous iteration of the patch. In the current series, it's not a separate module.
owner Timothy Day · uploader Timothy Day · PS9 uploaded 15d ago · NEW · open in Gerrit ↗
commit message
LU-17848 osd: deduplicate osd_map_remote_to_local() Mapping between niobuf_local is done for both osd-wbcfs and osd-ldiskfs. Copy the function to lustre/osd/ to be shared by both OSDs. Rename it to osd_map_niobuf_to_pages() to be clearer. Test-Parameters: trivial Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: I02df99d2363485946130ee4c8973359cfaae8c5d
67523
master
J !B ✓T ✓R 0/2
LU-20519 llite: add some opencache stats
reviewing Timothy Day · CI green — awaiting your review
7 unresolved
L +419 −5
19d
LU-20519 llite: add some opencache stats
reviewing Timothy Day · CI green — awaiting your review
7 unresolved
L +419 −5
19d
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs | RHEL 8.10 / x86_64, SLES 15.7 / x86_64 | ran 1 tests. 1 tests failed: node-provisioning. %% NODE-PROVISIONING FAILED MULTIPLE TIMES FOR review-ldiskfs | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 24.04 / x86_64 | ran 1 tests. 1 tests failed: node-provisioning. %% NODE-PROVISIONING FAILED MULTIPLE TIMES FOR review-ldiskfs | session |
build #132732 SUCCESS · tests all Maloo sessions
no vote yet: Qian Yingjin, Andreas Dilger, Patrick Farrell
patchsets:
PS1 07-24
PS2 09-30
PS3 10-02
threads: 7 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger COMMIT_MSG:10 — (defect) should list the stats parameter name and should have an example of the output being printed.
Andreas Dilger
(defect) should list the stats parameter name and should have an example of the output being printed.
reply Gerrit AI review for Lustre COMMIT_MSG:10 — (minor) The message describes only the hits/misses/threshold lock counters. The patch also adds a second debugfs parameter, `llite.*.open_ca
Gerrit AI review for Lustre
(minor) The message describes only the hits/misses/threshold lock counters. The patch also adds a second debugfs parameter, `llite.*.open_cache_reopen_hist`, and a `miss_reopen_time` counter, and neither is mentioned. Could they be described here with a short example, since they are user-visible? The sample output also doesn't match what the code prints. lprocfs_stats_seq_show() pads names to 35 columns, so `snapshot_time`, `hits`, etc. are padded to 35 (as the man page example shows), not about 25.
reply Gerrit AI review for Lustre COMMIT_MSG:24 — (minor) The patch adds two man pages (llite.open_cache_stats.4 and llite.open_cache_reopen_hist.4), so this should say "man pages for the ne
Gerrit AI review for Lustre
(minor) The patch adds two man pages (llite.open_cache_stats.4 and llite.open_cache_reopen_hist.4), so this should say "man pages for the new parameters".
reply Gerrit AI review for Lustre llite.open_cache_reopen_hist.4:68 — (nit) The code prints the header with "%-11s %14s %4s %4s", which gives `reopen_ms misses % cum%` (one space before `cum%`, not
Gerrit AI review for Lustre
(nit) The code prints the header with "%-11s %14s %4s %4s", which gives `reopen_ms misses % cum%` (one space before `cum%`, not two). Only worth fixing if the patch is refreshed anyway.
reply Andreas Dilger lproc_llite.c:2931 — Please add a man4 page to describe the stats file.
Andreas Dilger
Please add a man4 page to describe the stats file.
reply Gerrit AI review for Lustre lproc_llite.c:2917 — (style) This isn't a bug, but BIT() is for bitmasks. Here it is printed as a numeric bucket limit in msecs, so `1UL << i` would say what is
Gerrit AI review for Lustre
(style) This isn't a bug, but BIT() is for bitmasks. Here it is printed as a numeric bucket limit in msecs, so `1UL << i` would say what is meant.
reply Gerrit AI review for Lustre lproc_llite.c:3027 — (minor) This problem predates the patch, but the new label adds one more path into it. If the ll_oc_stats allocation fails, the code reaches
Gerrit AI review for Lustre
(minor) This problem predates the patch, but the new label adds one more path into it. If the ll_oc_stats allocation fails, the code reaches out_debugfs and calls debugfs_remove_recursive(sbi->ll_debugfs_entry) without clearing the pointer. ll_fill_super() ignores the error and the mount continues. At umount, ll_debugfs_unregister_super() then calls debugfs_remove_recursive() again on the same, already freed dentry. Also, ll_ra_stats and ll_stats are freed here while their debugfs files still exist. This is ENOMEM-only and doesn't need to block this patch. A separate fix could remove the debugfs dir before freeing the stats and then set ll_debugfs_entry to NULL.
owner Timothy Day · uploader Timothy Day · PS3 uploaded 33d ago · NEW · open in Gerrit ↗
commit message
LU-20519 llite: add some opencache stats It can be difficult to understand if opencache is effective without some stats. Add llite.*.open_cache_stats to count the opens served from a cached open handle, the opens that needed an open RPC, and the open lock requests triggered by the opencache_threshold_count and opencache_threshold_ms tunables: # lctl get_param llite.*.open_cache_stats llite.lustre-ffff888150068000.open_cache_stats= snapshot_time 1790789687.052634017 secs.nsecs start_time 1790789686.511679375 secs.nsecs elapsed_time 0.540954642 secs.nsecs hits 2 samples [reqs] misses 1 samples [reqs] threshold_count_locks 1 samples [reqs] Add sanity test_429b to check the counters, and a man page for the new parameter. Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: I22cfc5cd0f65c29a6a8acac756ec5d678dce881a
65894
master
J !B ✓T ✓R 0/2
LU-20259 tests: copy simul.c to lustre/tests/
reviewing Timothy Day · CI green — awaiting your review
4 unresolved
XL +1290 −10
19d
LU-20259 tests: copy simul.c to lustre/tests/
reviewing Timothy Day · CI green — awaiting your review
4 unresolved
XL +1290 −10
19d
janitor run: 2 failing config(s), none unique to this patch — janitor results
build #132746 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Brian Behlendorf, Patrick Farrell
patchsets:
PS1 05-14
PS2 05-14
PS3 10-02
threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger COMMIT_MSG:12 — (minor) it would be useful to include the git hash of the imported version into the commit message, in case it ever changes.
Andreas Dilger
(minor) it would be useful to include the git hash of the imported version into the commit message, in case it ever changes.
reply Andreas Dilger functions.sh:430 — (defect) this should be kept, so that it can be run without external dependencies?
Andreas Dilger
(defect) this should be kept, so that it can be run without external dependencies?
reply Gerrit AI review for Lustre simul.c:1260 — (minor) This changes behavior rather than just silencing -Wunused-result, which doesn't match the commit message's "only changed to fix comp
Gerrit AI review for Lustre
(minor) This changes behavior rather than just silencing -Wunused-result, which doesn't match the commit message's "only changed to fix compiler warnings".
With `-s`, mpirun (Open MPI and MPICH/hydra) forwards stdin only to rank 0. Every other rank gets /dev/null, so fgets() returns NULL right away. Upstream ignored that, so the other ranks went into the test and waited on its collectives for rank 0. Now they `break` out of the iteration loop, skip every test, and reach MPI_Finalize(). Rank 0 then hangs (or aborts) in the first MPI_Barrier()/MPI_Gather() after Enter is pressed.
The same EOF on rank 0 (e.g. ^D) silently skips the remaining iterations and still prints "All tests passed!".
Would something like this keep the upstream semantics?
if (rank == 0 && !fgets(linebuf, sizeof(linebuf), stdin))
singlestep = 0;
The parallel-scale harness never passes `-s`, so the automated test sessions aren't affected.
reply Andreas Dilger test-framework.sh:541 — (style) prefer `[[ ... ]]` for bash.
Andreas Dilger
(style) prefer `[[ ... ]]` for bash. You could fix the `$MDSRATE` check as well, or we could remove that old code completely and just use mdtest instead.
owner Timothy Day · uploader Timothy Day · PS3 uploaded 32d ago · NEW · open in Gerrit ↗
commit message
LU-20259 tests: copy simul.c to lustre/tests/ ... rather than depending on the upstream repo [1], which is seldom updated. This tool is only a single file. The file was copied from upstream commit 12bae210c127 and only changed to fix compiler warnings. Install the binary as 'll_simul' so that the lustre-tests package does not conflict with the existing 'simul' package. An external 'simul' is still used if 'll_simul' isn't found. Clean up the style in run_simul() and remove the test directory with stack_trap, so it's cleaned up on error. [1] https://github.com/llnl/simul Test-Parameters: trivial testlist=parallel-scale env=ONLY=simul Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: I3595b70067bcb66708346f6d7da066a502aac7b2
68548
master
J !B ✓T ✓R +1/2
LU-20676 llite: hash qstr in ll_iget_for_nfs()
reviewing Emoly Liu · CI green — awaiting your review
M +58 −2
21d
LU-20676 llite: hash qstr in ll_iget_for_nfs()
reviewing Emoly Liu · CI green — awaiting your review
M +58 −2
21d
janitor run: 5 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-zfs-part-5 crashed | RHEL 9.7 / x86_64 | ran 5 tests. 1 tests failed: sanityn. %% THIS TEST SESSION CRASHED %% | session |
build #131293 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
no vote yet: Etienne AUJAMES, Qian Yingjin
patchsets:
PS3 09-01
PS4 09-03
PS5 09-04
PS6 09-07
PS7 09-08
+2 earlier
PS1 09-01 PS2 09-01owner Emoly Liu · uploader Emoly Liu · PS7 uploaded 57d ago · NEW · open in Gerrit ↗
commit message
LU-20676 llite: hash qstr in ll_iget_for_nfs()
QSTR_INIT() only sets .name and .len, so the ".lustre" and "fid" qstrs
used by ll_iget_for_nfs() have hash 0, and d_lookup() never matches
the VFS dentry. Then, every open_by_handle_at()/NFS decode of
LU_DOT_LUSTRE_FID or LU_OBF_FID d_add()s a fresh alias hashed under
bucket 0 that no path lookup can find.
To fix this issue, use try_lookup_noperm() instead of the open-coded
hash 0 qstr + d_lookup(). Once the hash is correct, it can return a
cached negative dentry that path lookup created, so drop it to match
a cache miss. On a fileset mount, it can also return a positive dentry
for a user-created ".lustre" directory, so verify the FID of a cached
positive dentry against LU_DOT_LUSTRE_FID and drop it if it doesn't
match. Also mark the FID-instantiated dentries valid with
d_lustre_revalidate() after d_add(), but only on a real filesystem
root mount; on a fileset/subdirectory mount, a valid cached .lustre
alias would let any user reach any FID via $MNT/.lustre/fid/[FID],
bypassing the subtree restriction.
Finally, extend llapi_fid_test test31 to open .lustre and .lustre/fid
via the VFS before decoding LU_OBF_FID, so the cache-hit branch in
ll_iget_for_nfs() is exercised by sanity.sh test_154g.
Test-Parameters: testlist=sanity env=ONLY=154g
Fixes: 52a97b4490 ("LU-8585 llite: add special fid handling for fhandle API")
Signed-off-by: Emoly Liu <emoly@whamcloud.com>
Change-Id: I8bdee04d321d8a13916b839814c4435833ee620a
56710
master
J !B ✓T ✓R +0/2−
LU-18169 llite: wait unstable pages to be committed during umount
reviewing Qian Yingjin · CI green — awaiting your review
S +46 −0
22d
LU-18169 llite: wait unstable pages to be committed during umount
reviewing Qian Yingjin · CI green — awaiting your review
S +46 −0
22d
janitor run: 2 failing config(s), none unique to this patch — janitor results
2 optional test failure(s) — informational
build #112294 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1 · Timothy Day -1
no vote yet: Neil Brown, Patrick Farrell
patchsets:
PS1 10-16
PS2 10-24
PS3 04-07
owner Qian Yingjin · uploader Qian Yingjin · PS3 uploaded 576d ago · NEW · open in Gerrit ↗
commit message
LU-18169 llite: wait unstable pages to be committed during umount The client must wait unstable pages to be committed to the stable storage during umount. If a data OBD is in disconnected state during umount, the client will wait for a certain time (30 seconds, by default) at most, and then force to deactive the OBD to cleanup the uncommitted unstable pages. Otherwise, it will fail the replay-single.sh/test_89. Signed-off-by: Qian Yingjin <qian@ddn.com> Change-Id: I307b5e6063f6d726e5f84018ebeecd58bac860ab
68546
master
J !B ✓T ✓R +1/2
LU-20675 utils: fix Netlink parse buffer overruns
reviewing Cyril Bordage · CI green — awaiting your review
3 unresolved
S +22 −12
29d
LU-20675 utils: fix Netlink parse buffer overruns
reviewing Cyril Bordage · CI green — awaiting your review
3 unresolved
S +22 −12
29d
janitor run: 3 failing config(s), none unique to this patch — janitor results
build #132528 SUCCESS · tests all Maloo sessions
reviews:
Chris Horn +1
no vote yet: Manish Regmi, Xinxia Qu
patchsets:
PS1 09-01
PS2 09-11
PS3 09-11
PS4 09-29
threads: 0 need your reply · 3 waiting on others · 0 own notes · 0 bot
owner Cyril Bordage · uploader Cyril Bordage · PS4 uploaded 36d ago · NEW · open in Gerrit ↗
commit message
LU-20675 utils: fix Netlink parse buffer overruns
valgrind reported several issues when we try to add a nid that already
exists:
- Conditional jump or move depends on uninitialised value(s) in nla_ok
- Invalid read in jt_add_ni with cfs_expr_list_free
- Invalid free in jt_add_ni
Several changes were made to fix that.
1. Fix the extended-ACK (NLM_F_ACK_TLVS) parsing in
yaml_netlink_parse_msg_error().
Skip the embedded copy of the original request before parsing
the TLVs, and size tb[] as NLMSGERR_ATTR_MAX + 1.
2. Size the value-branch parse arrays in yaml_netlink_msg_parse()
as policy[maxtype + 1] and attrs[maxtype + 1]. libnl indexes
these arrays directly by attribute type (1..maxtype inclusive),
so an array of maxtype elements overflows by one.
3. Size the nested parse arrays in yaml_parse_value_list() as
nest_policy[num + 1] and nest_info[num + 1] for the same reason.
4. Derive the yaml_nl_node allocation in yaml_parse_key_list() from
the structure itself. Summing the members by hand left out the
struct ln_key_list header, so the last lkl_list[] entry overflowed
the heap, which is what tripped validate_nla() during net show.
Assisted-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Test-Parameters: trivial testlist=sanity-lnet
Fixes: 3c39dac19aaf ("LU-9680 utils: add netlink infrastructure")
Fixes: 70149f4ea89a ("LU-9680 utils: fix Netlink / YAML library handling")
Signed-off-by: Cyril Bordage <cbordage@whamcloud.com>
Change-Id: Ifea0d949b04ca1b3cf70a47f923e50829f087108
65203
master
J !B ✓T ✓R 0/2
LU-19768 ldlm: add LDLM genetlink family
reviewing Timothy Day · CI green — awaiting your review
15 unresolved
L +311 −2
30d
LU-19768 ldlm: add LDLM genetlink family
reviewing Timothy Day · CI green — awaiting your review
15 unresolved
L +311 −2
30d
janitor run: 4 failing config(s), none unique to this patch — janitor results
build #132541 SUCCESS · tests all Maloo sessions
patchsets:
PS1 04-09
PS2 07-22
PS3 07-29
PS4 09-29
threads: 15 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — ldlm/ldlm_lockd.c:
Misc Code Checks Robot (Gatekeeper helper)
ldlm/ldlm_lockd.c: error: ldlm_init():uninitialized symbol 'rc'.
reply Gerrit AI review for Lustre COMMIT_MSG:11 — The body only describes the new family, but the patch also reworks the existing cleanup labels in ldlm_init(): the #endif moves so ldlm_inte
Gerrit AI review for Lustre
The body only describes the new family, but the patch also reworks the existing cleanup labels in ldlm_init(): the #endif moves so ldlm_interval_tree_slab is now destroyed on client builds too, ldlm_glimpse_work_kmem gains a teardown, and the return value changes shape. Could the body explain that rework so it doesn't read as an unrelated hunk?
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — ldlm/ldlm_lockd.c:
Misc Code Checks Robot (Gatekeeper helper)
ldlm/ldlm_lockd.c: error: ldlm_init():uninitialized symbol 'rc'.
reply Gerrit AI review for Lustre COMMIT_MSG:11 — (typo) This says "the previous patches", but only one patch comes before this in the series: 2c431c5847 ("LU-19768 obdclass: table-driven ne
Gerrit AI review for Lustre
(typo) This says "the previous patches", but only one patch comes before this in the series: 2c431c5847 ("LU-19768 obdclass: table-driven netlink framework"). If the message is refreshed, could it name that patch? Naming `lustre_obd_nl_start()`/`struct lustre_nl_obd_ops` too would make the dependency easy to find with git log grep.
reply Gerrit AI review for Lustre kernelcomm.c:114 — (defect) `le_ns` is cached for the whole dump, but nothing pins the namespace - `class_incref()` only keeps the `obd_device` allocation aliv
Gerrit AI review for Lustre
(defect) `le_ns` is cached for the whole dump, but nothing pins the namespace - `class_incref()` only keeps the `obd_device` allocation alive.
For a server target the namespace is freed from precleanup, not from the final decref:
class_cleanup() -> obd_precleanup() -> ldto_device_fini()
-> ofd_device_fini() -> ofd_fini() -> ldlm_namespace_free_post()
Other obd references are still held at that point, and `OBDF_SET_UP` is only cleared after `class_cleanup()` returns, so the device still passes the collect filter the whole time.
`ldlm_namespace_free_post()` frees `ns_stats` inside `ldlm_namespace_debugfs_unregister()`, then sleeps in `ldlm_namespace_sysfs_unregister()` (`wait_for_completion(&ns->ns_kobj_unregister)`) before `kfree(ns->ns_name)` and `OBD_FREE_PTR(ns)`. A dump that lands in that window reaches `lustre_nl_put_dataset(msg, NULL, ...)` and dereferences `stats->ls_num`; after the free completes every `ns->` read below is a use-after-free. `ofd_fini()` also leaves `obd->obd_namespace` pointing at the freed namespace until the line after `ldlm_namespace_free_post()`, so `ldlm_filter_target()` and the `strscpy()` above can read `ns->ns_name` after it is gone.
`ldlm_pools_recalc()` already has the pattern for this - take `ns->ns_lock`, skip the namespace if `LDLM_NS_STOPPING` is set, otherwise `ldlm_namespace_get()` - with the bz21519 / LU-499 comment explaining why the refcount must not be taken on a namespace being freed. Should collect/release use `ldlm_namespace_get()`/`ldlm_namespace_put()` rather than relying on the obd refcount?
reply Gerrit AI review for Lustre kernelcomm.c:168 — (defect) `lno_min_alloc` is left unset, so `lustre_obd_nl_start()` never assigns `cb->min_dump_alloc` and the dump runs in a single NLMSG_GO
Gerrit AI review for Lustre
(defect) `lno_min_alloc` is left unset, so `lustre_obd_nl_start()` never assigns `cb->min_dump_alloc` and the dump runs in a single NLMSG_GOODSIZE-class skb. `lustre_obd_nl_dump()` returns `rc`, not `msg->len`, so netlink treats the callback as finished after one pass - when the entries stop fitting, `genlmsg_put()` fails and the dump ends with -EMSGSIZE plus whatever happened to fit. Rough per-entry cost here is the namespace name, seven u32s, a padded u64 and three nested `LDLM_NSS_*` datasets, around 470 bytes, on top of ~800 bytes for the key table. That is roughly 6 namespaces in a 4K skb and ~33 with libnl's default 16K receive buffer, while a client carries one namespace per MGC/MDC/OSC. The existing dumps avoid this either by sizing the buffer up front (`STATS_MSG_MIN_SIZE`, `DEVICE_KEY_TABLE_PACKET_SIZE`) or by returning `msg->len` and resuming (`lustre_device_list_dump()` with `gdl_start`). Could this do one of the two? `lnc_index` already survives across calls, so returning `msg->len` would resume correctly - though `first` would then need to be per-skb instead of `lnc_index == 0`, since the HDR attribute has to open each message.
reply Gerrit AI review for Lustre kernelcomm.c:187 — (minor) `lustre_ldlm_dump()` and `lustre_ldlm_done()` forward to the framework unchanged, so `ldlm_genl_ops` could point `.dumpit`/`.done` s
Gerrit AI review for Lustre
(minor) `lustre_ldlm_dump()` and `lustre_ldlm_done()` forward to the framework unchanged, so `ldlm_genl_ops` could point `.dumpit`/`.done` straight at `lustre_obd_nl_dump`/`lustre_obd_nl_done`. Only `.start` needs a wrapper, to bind `&ldlm_ops`.
reply Gerrit AI review for Lustre kernelcomm.c:84 — (style) This isn't a bug, but `base` and `list` don't have a per-struct field prefix. `struct ldlm_entry` just above uses `le_`. If the patc
Gerrit AI review for Lustre
(style) This isn't a bug, but `base` and `list` don't have a per-struct field prefix. `struct ldlm_entry` just above uses `le_`. If the patch is refreshed, consider something like `lc_base`/`lc_list`. `offsetof()` in `ldlm_ops` would need the same change.
reply Gerrit AI review for Lustre kernelcomm.h:5 — (style) This isn't a bug today, but the new header has no `#ifndef`/`#define` guard, so a second include would redefine `enum lustre_ldlm_at
Gerrit AI review for Lustre
(style) This isn't a bug today, but the new header has no `#ifndef`/`#define` guard, so a second include would redefine `enum lustre_ldlm_attrs`. Cheap to add while the file is new.
reply Gerrit AI review for Lustre ldlm_lockd.c:23 — (minor) Nothing in this file appears to use anything from `lustre_kernelcomm.h` - `ldlm_netlink_init()`/`ldlm_netlink_fini()` come from the
Gerrit AI review for Lustre
(minor) Nothing in this file appears to use anything from `lustre_kernelcomm.h` - `ldlm_netlink_init()`/`ldlm_netlink_fini()` come from the local `kernelcomm.h`. Is this include needed?
reply Gerrit AI review for Lustre ldlm_lockd.c:27 — (style) This isn't a bug, but local includes are normally kept in alphabetical order. That would put "kernelcomm.h" before "ldlm_internal.h"
Gerrit AI review for Lustre
(style) This isn't a bug, but local includes are normally kept in alphabetical order. That would put "kernelcomm.h" before "ldlm_internal.h".
reply Gerrit AI review for Lustre ldlm_netlink.c:53 — (minor) `lru_size` is ns_nr_unused here, but ldlm.namespaces.*.lru_size shows ns_max_unused whenever LRU resize is off, and the current unus
Gerrit AI review for Lustre
(minor) `lru_size` is ns_nr_unused here, but ldlm.namespaces.*.lru_size shows ns_max_unused whenever LRU resize is off, and the current unused count is already exposed as lock_unused_count. Reusing lru_size for a different field next to the existing parameters is easy to misread - lock_unused_count for this one, and lru_size for the ns_max_unused attribute below, would line up with what admins already know.
owner Timothy Day · uploader Timothy Day · PS4 uploaded 35d ago · NEW · open in Gerrit ↗
commit message
LU-19768 ldlm: add LDLM genetlink family Add a new ldlm genetlink family that exposes per-namespace lock statistics (contention, LRU, timeouts, and lock stats) via the table-driven netlink framework introduced in the previous patches. TLC-bug-id: TLU-56 Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: I55bf842919d2cfd922f8050c11869ac962c57814
65205
master
J ✗1B ✓T ✓R 0/2
LU-19768 quota: add quota genetlink family
reviewing Timothy Day · CI green — awaiting your review
24 unresolved
L +805 −5
30d
LU-19768 quota: add quota genetlink family
reviewing Timothy Day · CI green — awaiting your review
24 unresolved
L +805 −5
30d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanityn@ldiskfs+DNE:test_4 | seen in 4 other reviews |
build #132538 SUCCESS · tests all Maloo sessions
patchsets:
PS1 04-09
PS2 07-22
PS3 07-29
PS4 09-29
PS5 09-29
threads: 24 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:10 — A few claims here don't match the code.
Gerrit AI review for Lustre
A few claims here don't match the code. "via the table-driven netlink framework": this file doesn't use lustre_nl_obd_ops / lustre_obd_nl_start()/dump()/done() from the previous patch - start/dump/done are hand-rolled here. Is there a reason the framework doesn't fit, and could that reason be stated instead? "QSD reports per-slave usage and grant state": qsd_collect_acct_obj() sets qne_granted/qne_hardlimit/qne_softlimit to 0 and the dump only emits kbytes/inodes for "acct" records, so no grant state is reported. "Add new quota genetlink families" is plural, but only the "lquota" family is added. The qsd_config.c hunk that drops `static` from qfs_list/qfs_list_lock also isn't mentioned - worth a sentence saying why the QSD list has to become module-visible.
reply Gerrit AI review for Lustre lustre_kernelcomm.h:599 — Tab alignment is off on this entry compared to its neighbours; same for the LUSTRE_QUOTA_ATTR_MANAGER and LUSTRE_QUOTA_ATTR_QTYPE lines in t
Gerrit AI review for Lustre
Tab alignment is off on this entry compared to its neighbours; same for the LUSTRE_QUOTA_ATTR_MANAGER and LUSTRE_QUOTA_ATTR_QTYPE lines in the doc comment above.
reply Gerrit AI review for Lustre lustre_kernelcomm.h:702 — This isn't a bug, but these two prototypes are already in lquota_internal.h, which is what lquota_lib.c includes - so the copies here are un
Gerrit AI review for Lustre
This isn't a bug, but these two prototypes are already in lquota_internal.h, which is what lquota_lib.c includes - so the copies here are unused. The preceding patch put mdd_netlink_init()/fini() only in mdd_internal.h. If they do stay, note that lquota is server-only (obj-$(CONFIG_LUSTRE_FS_SERVER) in lustre/Makefile), so they belong inside the HAVE_SERVER_SUPPORT block just below rather than above it.
reply Gerrit AI review for Lustre Makefile:16 — (style) This isn't a bug, but appending breaks the alphabetical order of the list - qmt_netlink.o belongs before qmt_pool.o, and qsd_netlink
Gerrit AI review for Lustre
(style) This isn't a bug, but appending breaks the alphabetical order of the list - qmt_netlink.o belongs before qmt_pool.o, and qsd_netlink.o before qsd_reint.o.
reply Gerrit AI review for Lustre kernelcomm.h:1 — (minor) No #ifndef/#define guard here, so including this header twice in one translation unit redefines enum lustre_quota_attrs, struct quot
Gerrit AI review for Lustre
(minor) No #ifndef/#define guard here, so including this header twice in one translation unit redefines enum lustre_quota_attrs, struct quota_nl_entry and the typedef. The neighbouring private headers all have one (_QMT_INTERNAL_H, _QSD_INTERNAL_H). It also leans on its includers for GENRADIX(), MAX_OBD_NAME and LOV_MAXPOOLNAME; pulling in <linux/generic-radix-tree.h> and the lustre headers directly would make it self-contained.
reply Gerrit AI review for Lustre kernelcomm.h:62 — (typo) There is nothing above this line, and no other GENRADIX typedef in the tree, so the "changelog typedefs above" reference doesn't reso
Gerrit AI review for Lustre
(typo) There is nothing above this line, and no other GENRADIX typedef in the tree, so the "changelog typedefs above" reference doesn't resolve. Did this mean to point at another file?
reply Gerrit AI review for Lustre kernelcomm.h:66 — (style) This isn't a bug, but neither name says which side of quota it belongs to, while everything else in this directory carries its file
Gerrit AI review for Lustre
(style) This isn't a bug, but neither name says which side of quota it belongs to, while everything else in this directory carries its file prefix (qmt_*, qsd_*, lquota_*). Something like qmt_nl_collect_glb() and qsd_nl_collect_acct() would sort with their neighbours and make the QMT/QSD split visible at the call sites in lquota_nl_start().
reply Gerrit AI review for Lustre lquota_netlink.c:123 — Both collect calls materialise every record before a single byte is sent, and the entry count here is unbounded - one struct quota_nl_entry
Gerrit AI review for Lustre
Both collect calls materialise every record before a single byte is sent, and the entry count here is unbounded - one struct quota_nl_entry (~208 bytes) per quota ID, per pool, per type on the QMT, plus one per ID per type on every QSD. A filesystem with a large project or user ID space turns an unprivileged dump request into hundreds of MB of GFP_KERNEL allocations, held for the life of the dump. It also means qmt_pool_lock and qfs_mutex are each held across a full on-disk index scan, blocking pool teardown and qsd_fini() for the duration. Has collecting incrementally from .dumpit (resuming the index iterator per message) been considered instead?
reply Gerrit AI review for Lustre lquota_netlink.c:180 — This return path can't paginate. netlink_dump() only calls .dumpit again while the previous return was positive; returning 0 ends the dump a
Gerrit AI review for Lustre
This return path can't paginate. netlink_dump() only calls .dumpit again while the previous return was positive; returning 0 ends the dump and returning a negative value ends it with that errno in NLMSG_DONE. So once the skb fills up the whole dump fails with EMSGSIZE rather than continuing in the next message. Nothing sets cb->min_dump_alloc either, so the skb is NLMSG_GOODSIZE (~1 page). At roughly 150 bytes per record that is on the order of 25 quota entries before the dump breaks - lustre_device_list_dump() and lustre_obd_nl_start() both pre-size min_dump_alloc for exactly this reason, and even U16_MAX won't cover a real quota table. Returning msg->len when the buffer fills (state is already carried in gql_index) would let the dump span messages.
reply Gerrit AI review for Lustre lquota_netlink.c:206 — (suggestion) Selecting the attribute layout with a strcmp() on the record-type string is easy to get wrong later: anything that isn't exactl
Gerrit AI review for Lustre
(suggestion) Selecting the attribute layout with a strcmp() on the record-type string is easy to get wrong later: anything that isn't exactly "global" silently formats as an accounting record. A small enum in struct quota_nl_entry, with the string derived only when it goes on the wire, would make the two cases explicit and drop the per-record compare.
reply Gerrit AI review for Lustre lquota_netlink.c:273 — (suggestion) With no .parallel_ops, the genl core runs .start/.dumpit/.done inside genl_lock() (genl_lock_start(), genl_lock_dumpit()), so t
Gerrit AI review for Lustre
(suggestion) With no .parallel_ops, the genl core runs .start/.dumpit/.done inside genl_lock() (genl_lock_start(), genl_lock_dumpit()), so the collection here holds the global genl mutex and serialises every other generic netlink user on the node, not just lquota. lnet_family sets .parallel_ops = true, and the handlers here already do their own locking - could this family set it as well?
reply Gerrit AI review for Lustre lquota_netlink.c:267 — (defect) This op has no .flags, so any local user can run the dump and read every user, group and project limit, grant and usage on the serv
Gerrit AI review for Lustre
(defect) This op has no .flags, so any local user can run the dump and read every user, group and project limit, grant and usage on the server. The ioctl path does not allow that. In quotactl_ioctl(), Q_GETQUOTA and LUSTRE_Q_GETQUOTAPOOL for another ID, and LUSTRE_Q_ITERQUOTA, return -EPERM unless check_owner() passes or the caller has CAP_SYS_ADMIN. The glb-*/acct_* debugfs files are root-only too. Should this op set `.flags = GENL_ADMIN_PERM`, as the lnet_family ops do? That would also stop unprivileged callers from triggering the full collection in lquota_nl_start().
owner Timothy Day · uploader Timothy Day · PS5 uploaded 35d ago · NEW · open in Gerrit ↗
commit message
LU-19768 quota: add quota genetlink family Add new quota genetlink families that expose per-pool and per-slave quota usage via the table-driven netlink framework. QMT reports pool-level grants and limits while QSD reports per-slave usage and grant state through genradix arrays. TLC-bug-id: TLU-56 Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: Ibb3bedaefc8c78f2f2b52d593fe0d6e080658cb9
66707
master
J ✗1B ✓T ✓R 0/2
LU-20000 lnetctl: bad CPTs/tunables with NL import
reviewing Cyril Bordage · CI green — awaiting your review
3 unresolved
L +551 −134
30d
LU-20000 lnetctl: bad CPTs/tunables with NL import
reviewing Cyril Bordage · CI green — awaiting your review
3 unresolved
L +551 −134
30d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity-quota@zfs+DNE:test_1a | seen in 21 other reviews |
build #132580 SUCCESS · tests all Maloo sessions
no vote yet: Manish Regmi, Xinxia Qu, Serguei Smirnov, Chris Horn, Timothy Day
patchsets:
PS7 09-16
PS8 09-21
PS9 09-25
PS10 09-29
PS11 09-30
+6 earlier
PS1 06-18 PS2 06-18 PS3 07-01 PS4 07-02 PS5 09-15 PS6 09-16threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Chris Horn lnetctl.c:5443 — Prefer a kernel-doc format https://docs.kernel.org/doc-guide/kernel-doc.html
Chris Horn
Prefer a kernel-doc format https://docs.kernel.org/doc-guide/kernel-doc.html
reply Gerrit AI review for Lustre lnetctl.c:5476 — (minor) This adds evidence to the NO_MATCH question that is already open on this patchset. Is the claim that the resolver selects an interfa
Gerrit AI review for Lustre
(minor) This adds evidence to the NO_MATCH question that is already open on this patchset. Is the claim that the resolver selects an interface "the same way the module-parameter path does" accurate?
lustre_lnet_resolve_ip2nets_rule()->lustre_lnet_match_ip_to_intf() only considers AF_INET addresses on non-"lo" interfaces that are UP. In the kernel, ksocknal_startup() calls lnet_inet_enumerate(), which also returns IPv6 addresses (IPv6 first when large NIDs are in use). lnet_inet_select() then takes the first entry. If no usable interface exists, the LND startup fails rather than being skipped.
So on an IPv6-only node, 'options lnet networks=tcp' brings up tcp. The lnet_legacy2yaml output for it ('net: - net type: tcp') gets NO_MATCH ("No UP interfaces were found") here, configures nothing, and the import exits 0. Before this patch, that input at least failed with -ENOMSG. Keeping NO_MATCH as an error for 'net:' blocks would fix the silent no-op. The comment should also mention the IPv4-only limitation.
reply Chris Horn lnetctl.c:5490 — (defect?) In the parent commit, LUSTRE_CFG_RC_NO_MATCH from lustre_lnet_resolve_ip2nets_rule() was an error for a 'net:' block. The import p
Chris Horn
(defect?) In the parent commit, LUSTRE_CFG_RC_NO_MATCH from lustre_lnet_resolve_ip2nets_rule() was an error for a 'net:' block. The import printed the resolver message and returned -ENOMSG. Only an 'ip2nets:' rule could skip a non-match. Here config_net_local_nis() returns 0 and drops errmsg. The import configures no net and exits 0. Should NO_MATCH stay an error here, as it was before?
owner Cyril Bordage · uploader Cyril Bordage · PS11 uploaded 35d ago · NEW · open in Gerrit ↗
commit message
LU-20000 lnetctl: bad CPTs/tunables with NL import
This is for netlink API. This fixes the same issues as for the old API
and uses the same tests.
ip2nets is also fixed but has some limitations: the format doesn't
allow to specify different tunables/cpts for interfaces in the same
net. If, at some point, it is needed, we will have to extend the
format.
Assisted-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Test-Parameters: trivial testlist=sanity-lnet
Fixes: 1b3c10b835ca ("LU-19386 lnet: use ip2nets handler for net sequence")
Signed-off-by: Cyril Bordage <cbordage@whamcloud.com>
Change-Id: I101c7a320d325413c387c5a15ac33ca8eff3e4a8
67825
master
J !B ✓T ✓R -1/2−
LU-20264 obd: add lustre_current_fsuid/fsgid() helpers
reviewing Timothy Day · CI green — awaiting your review (needs rebase first)
needs rebase
4 unresolved
L +486 −12
36d
LU-20264 obd: add lustre_current_fsuid/fsgid() helpers
reviewing Timothy Day · CI green — awaiting your review (needs rebase first)
needs rebase
4 unresolved
L +486 −12
36d
CI green — awaiting your review (needs rebase first)
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
janitor run: 4 failing config(s), none unique to this patch — janitor results
build #129124 SUCCESS · tests all Maloo sessions
no vote yet: Shuichi Ihara, Sebastien Buisson
patchsets:
PS1 08-07
PS2 08-11
threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:24 — (style) The message accounts for the two helpers, the mnt_idmap/nop_mnt_idmap aliases and the four shims that move out of llite_internal.h,
Gerrit AI review for Lustre
(style) The message accounts for the two helpers, the mnt_idmap/nop_mnt_idmap aliases and the four shims that move out of llite_internal.h, but most of the new header is not mentioned: FS_ALLOW_IDMAP, i_user_ns(), file_mnt_idmap(), the vfsuid_t / from_vfsuid() / ia_vfsuid compat, capable_wrt_inode_uidgid(), ll_vfs_iop_setattr(), and the LL_IOP_*/LL_XATTR_SET/LL_DEFINE_MKDIR trampolines - roughly 200 of the 344 new lines. None of those has a user in the tree yet, so no build exercises them on any kernel. Could the message at least describe what each group is for, so a reader can tell the unexplained hunks from the intended ones?
reply Gerrit AI review for Lustre mnt_idmapping.h:99 — (defect) mapped_fsuid()/mapped_fsgid() are not new in v5.17 - only their move into <linux/mnt_idmapping.h> and the second argument are. From
Gerrit AI review for Lustre
(defect) mapped_fsuid()/mapped_fsgid() are not new in v5.17 - only their move into <linux/mnt_idmapping.h> and the second argument are. From v5.13 through v5.16 <linux/fs.h> already carries:
static inline kuid_t mapped_fsuid(struct user_namespace *mnt_userns)
{
return kuid_from_mnt(mnt_userns, current_fsuid());
}
LC_HAVE_MAPPED_FSUID probes with mapped_fsuid(NULL, NULL), which is a hard error on those kernels, so HAVE_MAPPED_FSUID stays undefined and this block then redefines the same name with a different prototype. Since the header is pulled in by obd.h and lustre_compat/linux/fs.h, doesn't that fail to compile in every translation unit on 5.15.0-88 (Ubuntu 22.04), which lustre/ChangeLog lists as a primary client kernel? SLES15 SP4/SP5 (5.14.21) look exposed too. The probe needs to distinguish the one-argument form rather than treat its absence as "no mapped_fsuid at all".
On v5.12, the one version where this shim really is needed, the direction also looks inverted: the kernel spelled it kuid_from_mnt() = KUIDT_INIT(from_kuid(mnt_userns, kuid)), whereas kuid_into_mnt() = make_kuid(mnt_userns, __kuid_val(kuid)) is the opposite mapping (it is what i_uid_into_mnt() uses). That only diverges once an idmapped mount can exist over Lustre, which is exactly what the rest of this series is heading towards.
reply Gerrit AI review for Lustre mnt_idmapping.h:316 — (minor) 8b7ca4c0bbb2 is not in mainline, and the ->mkdir() return-type change is v6.14, not v6.19: config/lustre-core.m4 already documents i
Gerrit AI review for Lustre
(minor) 8b7ca4c0bbb2 is not in mainline, and the ->mkdir() return-type change is v6.14, not v6.19: config/lustre-core.m4 already documents it as v6.14-rc4-9-g88d5baf69082 above LC_HAVE_IOPS_MKDIR_RETURNS_DENTRY. The history list at the top of this file also tags two different commits (a793d79ea3e0 and a1ec9040a2a9) as v5.17-rc1-136-g, so at least one of those counts is wrong as well.
reply Gerrit AI review for Lustre obd.h:1590 — (defect) v6.2 looks like a gap here. It has struct mnt_idmap and nop_mnt_idmap and its ->getattr() takes struct mnt_idmap *, so HAVE_MNT_IDM
Gerrit AI review for Lustre
(defect) v6.2 looks like a gap here. It has struct mnt_idmap and nop_mnt_idmap and its ->getattr() takes struct mnt_idmap *, so HAVE_MNT_IDMAP_ARG is set and idmap really is a struct mnt_idmap * - but v6.2's mapped_fsuid() still takes struct user_namespace *:
static inline kuid_t mapped_fsuid(struct user_namespace *mnt_userns,
struct user_namespace *fs_userns)
The fs{g,u}id helpers were only ported to mnt_idmap in v6.3, by c14329d39f2d ("fs: port fs{g,u}id helpers to mnt_idmap"). LC_HAVE_MAPPED_FSUID still passes on v6.2 (both arguments are NULL), so no shim is generated and this call passes the wrong pointer type; v6.2's KBUILD_CFLAGS has -Werror=incompatible-pointer-types, and an uncalled static inline in a header is still type-checked, so every file including obd.h would fail to build.
Would a separate probe on the first argument's type work, with the v6.2 case going through mnt_idmap_owner() from <linux/mount.h>?
owner Timothy Day · uploader Timothy Day · PS2 uploaded 84d ago · NEW · open in Gerrit ↗
commit message
LU-20264 obd: add lustre_current_fsuid/fsgid() helpers Add helpers that map current's fsuid/fsgid through a mount idmap into the filesystem's user namespace and return the numeric id as it should appear on the wire. A NULL idmap means identity mapping (&nop_mnt_idmap) and a NULL fs_userns defaults to &init_user_ns. These helpers are written against the current mainline idmapped-mount API, but Lustre still builds against v4.18 (RHEL8), which predates all of it: <linux/mnt_idmapping.h> and mapped_fsuid() arrived in v5.17, vfsuid_t and the i_uid_into_vfsuid() helpers in v6.0, and "struct mnt_idmap" itself only in v6.2. Add lustre_compat/linux/mnt_idmapping.h reconstructing the modern spelling down to v4.18, along with the configure checks it needs, and include it from obd.h. The mnt_idmap/nop_mnt_idmap type aliases move there from lustre_compat/linux/fs.h, and the inode_permission(), generic_permission(), simple_setattr() and setattr_prepare() shims move there from llite_internal.h. These will be used by the following patches to plumb struct mnt_idmap [1] through the client RPC paths. [1] https://www.kernel.org/doc/html/latest/filesystems/idmappings.html Test-Parameters: trivial Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: I00c5068103144a6ebd293140e305c4c66a6a6964
67574
master
J !B ✓T ✓R 0/2
LU-19365 nodemap: allow dynamic IPv6 subranges
reviewing Manish Regmi · CI green — awaiting your review
3 unresolved
M +103 −20
42d
LU-19365 nodemap: allow dynamic IPv6 subranges
reviewing Manish Regmi · CI green — awaiting your review
3 unresolved
M +103 −20
42d
janitor run: 5 failing config(s), none unique to this patch — janitor results
build #132133 SUCCESS · tests all Maloo sessions
no vote yet: Chris Horn, Sebastien Buisson
patchsets:
PS4 08-07
PS5 09-02
PS6 09-15
PS7 09-16
PS8 09-22
+3 earlier
PS1 07-27 PS2 07-29 PS3 07-29threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:16 — (style) Not a bug, but the body doesn't account for the range_find_generic() hunk. Non-exact large-NID lookups now return the innermost encl
Gerrit AI review for Lustre
(style) Not a bug, but the body doesn't account for the range_find_generic() hunk. Non-exact large-NID lookups now return the innermost enclosing mask instead of the first list hit, and that path is not NID classification - it is nodemap_add_ban_range_helper()'s "is this ban inside my own range" check, plus the %guess% nodemap lookup in nodemap_add_banlist() and nodemap_del_banlist(). Worth a line so the banlist behavior change isn't a surprise.
reply Manish Regmi patchset comment — pinging for review
Manish Regmi
pinging for review
reply Gerrit AI review for Lustre nodemap_range.c:447 — (defect) Narrowing -EEXIST to the same nodemap lets two nodemaps carry the identical nidmask. The other lookups on nmc_netmask_setup pick an
Gerrit AI review for Lustre
(defect) Narrowing -EEXIST to the same nodemap lets two nodemaps carry the identical nidmask. The other lookups on nmc_netmask_setup pick an entry by list position and only then compare rn_nodemap, so they can land on the wrong owner.
lctl nodemap_add_range --name c0 --range 2001:db8::/64@tcp
lctl nodemap_add -d -p c0 c1
lctl nodemap_add_range --name c1 --range 2001:db8::/64@tcp
list_add() puts c1's range at the head, so afterwards:
nodemap_del_range("c0") calls range_find(..., exact=true), which walks from the head and returns c1's range on the first equal-length match. The rn_nodemap != nodemap test then fails, and c0 cannot drop its own range while c1 exists.
nodemap_add_banlist("c0", 2001:db8::5@tcp) calls range_find(..., false) -> range_find_longest(), where both /64 entries tie and the head wins, so that fails with -EINVAL as well.
Both used to work because the duplicate could not be created. Should the tie-break prefer the range owned by the nodemap being operated on, or should these callers pass the nodemap down?
owner Manish Regmi · uploader Manish Regmi · PS8 uploaded 42d ago · NEW · open in Gerrit ↗
commit message
LU-19365 nodemap: allow dynamic IPv6 subranges
Test 72e failed because IPv6 nidmask insertion treated an identical
dynamic child range as a duplicate and returned EEXIST. The same path
also did not return an enclosing range for a true child subrange.
For dynamic large-NID ranges, select the innermost enclosing nidmask and
return it as the parent. Use the same longest-prefix rule when classifying
NIDs and preserve EEXIST for a duplicate range in the same nodemap. IPv4
CIDR nodemap handling is unchanged.
Assisted-by: Codex:5.6-Sol
Fixes: e9278b8da163 ("LU-17431 nodemap: make dynamic nodemaps hierarchical")
Test-Parameters: trivial testlist=sanity-sec env=ONLY=72e \
env=FORCE_LARGE_NID=true,LOAD_MODULES_REMOTE=true
Signed-off-by: Manish Regmi <mregmi@ddn.com>
Change-Id: I0f2ca4323492cf1700eda391e290a9e4ee9af1da
52038
master
J !B ✓T ✓R 0/2
LU-17044 ptlrpc: add TBF minrate floor scheduling
reviewing Etienne AUJAMES · CI green — awaiting your review
XL +910 −156
45d
LU-17044 ptlrpc: add TBF minrate floor scheduling
reviewing Etienne AUJAMES · CI green — awaiting your review
XL +910 −156
45d
janitor run: 2 failing config(s), none unique to this patch — janitor results
1 optional test failure(s) — informational
build #124807 SUCCESS · tests all Maloo sessions
no vote yet: Qian Yingjin, Chris Horn, Andreas Dilger, Nikitas Angelinas
patchsets:
PS8 04-15 Chris Horn
PS9 04-17 Chris Horn
PS10 05-07 Chris Horn
PS11 05-08 Chris Horn
PS12 05-09 Chris Horn
+7 earlier
PS1 08-22 PS2 08-28 PS3 08-28 PS4 08-28 PS5 04-09 Chris Horn PS6 04-10 Chris Horn PS7 04-13 Chris Hornowner Etienne AUJAMES · uploader Chris Horn · PS12 uploaded 178d ago · NEW · open in Gerrit ↗
commit message
LU-17044 ptlrpc: add TBF minrate floor scheduling The TBF rule model can currently express only one rate. Normal rules treat rate as a ceiling and realtime rules treat it as both floor and ceiling, so one rule cannot say "guarantee G RPC/s but cap at L RPC/s". That makes it impossible to reserve RPC bandwidth for a loaded class without either removing the cap or moving the class onto a dedicated realtime rule. Extend the existing heap-based scheduler with a second token bucket per class for minimum-rate accounting. The existing bucket continues to enforce the configured rate ceiling, while the new bucket tracks saved minrate credit for classes that are falling behind their guaranteed share. That floor credit boosts heap priority; the ceiling is enforced separately at dequeue, so a floor-prioritized class still throttles to its rate. Floor credit is bounded so that an idle class can recover its guaranteed share after becoming active under load without accumulating enough priority to starve other traffic. Add a tbf_mindepth parameter (default -1, meaning adaptive) that controls the maximum number of saved guaranteed tokens for any rule with a floor (explicit minrate or legacy realtime). The adaptive default is 8x the floor rate for realtime rules and 2x the floor rate for non-realtime rules. For legacy realtime, the floor rate is the configured rate itself. Operators can override this to a fixed value to tune how much priority an idle class accumulates before re-entering the scheduler under load. Add an explicit minrate= parameter to TBF rules and thread it through the parser, rule update paths, and rule dumps. start and change commands can now configure both floor and ceiling, change ... minrate=0 clears an explicit floor, and get_param shows the effective range as "min-max". Reject invalid combinations where the floor exceeds the ceiling. Because the rule model is shared, the new parameter works across the existing TBF rule types. Two issues found during testing/review and are fixed here: - nrs_tbf_cli_reset_value() updated to set ti_deadline = now so that a rate or rule change does not leave a stale past deadline that would give the reset client an unfair heap advantage over other eligible clients. - ptlrpc_nrs_req_throttling_nolock() adjusted so that when a policy is stopping or inactive during a runtime policy switch, its throttle gate does not prevent queued requests from draining. Without this, a policy change can stall the service partition until the old policy finishes stopping, because the throttle flag was set globally and checked without regard to which policy owns the queued work. Three new sanityn tests cover the minrate= parameter. 77t and 77u check parsing, start/change, input validation, etc. 77v is a live functional test: - Throttle OST to known max rate via OBD_FAIL_PTLRPC_PAUSE_REQ. - Measure baseline rate under congestion. - Set minrate TBF rule for secondary UID running under load. - Assert protected UID hits within 10% of its floor while background load still gets headroom. - Repeat with realtime=1 to cover realtime-minrate interaction. - Repeat with legacy realtime rule (no explicit minrate) Heap comparison and dequeue changes: The single scheduler heap now uses a two-tier comparison. When either class being compared has accumulated floor tokens, both are ranked by their min-bucket deadlines; otherwise they are ranked by max-bucket (ceiling) deadlines. This asymmetry is the mechanism by which floor credit boosts scheduling priority while keeping floor-ineligible classes on the normal ceiling path. The comparator adds two strict tiebreakers beyond deadline and check_time -- head request sequence number and pointer address -- so that classes with equal refreshed deadlines cannot oscillate indefinitely (resolving a pre-existing TODO in the old comparator). The dequeue path (nrs_tbf_req_get) takes a single frozen ktime_get() snapshot and runs a retry loop bounded by min(binheap_size + 1, NRS_TBF_REFRESH_MAX_PASSES) to lazily refresh stale per-class token state before selecting the heap root. NRS_TBF_REFRESH_MAX_PASSES is a small constant (currently 32). If the loop exhausts its pass budget without converging, it arms the throttle timer at the current root's deadline and returns NULL, deferring to the next dequeue. This replaces the old recursive self-call that realtime mode used when a refreshed class moved off the root. Per-dequeue cost is O(log n) in the common case, hard-capped at O(NRS_TBF_REFRESH_MAX_PASSES * log n) in the worst case. Floor bucket initialization: Both legacy realtime rules (without minrate=) and explicit minrate rules cap saved floor credit at tr_min_depth (the adaptive nrs_tbf_min_depth value, or tbf_mindepth when set). Sizing the cap from the floor rate, rather than from tr_max_depth, gives a class enough room to accumulate overdue token credit when it has been losing the heap to another class with older queued requests, so the realtime deadline-in-the-past mechanism can actually pull it back to the front. Legacy realtime rules additionally start with a small preloaded floor bucket (ti_ntoken = tr_max_depth) to preserve existing behavior where rate acts as both floor and ceiling. Explicit minrate rules start with zero floor tokens because the heap comparator treats any non-zero floor token count as a priority signal: when either class in a comparison has floor tokens, both are ranked on their min-bucket deadlines. If a newly created minrate class started with preloaded floor tokens it would immediately jump ahead of all non-floor traffic in the heap without having actually fallen behind its guaranteed share. Starting empty ensures that floor priority is only earned while a class is genuinely being underserved. Realtime flag interaction with explicit minrate: When a rule combines realtime=1 with minrate=, the max (ceiling) bucket loses realtime token semantics and operates as a normal capped bucket: its deadline advances forward by one token interval after each service. Only the min (floor) bucket retains realtime scheduling, where overdue saved tokens keep its deadline in the past to prioritize catching up. This means "realtime applies to the lower bound and rate remains the hard cap." Test-Parameters: trivial Test-Parameters: testlist=sanityn,conf-sanity Test-Parameters: testlist=sanityn env=ONLY=77v,ONLY_REPEAT=30 Signed-off-by: Chris Horn <chris.horn@hpe.com> Change-Id: I779e63cd84b7a9ca99b54bbe8df8616de77fc770
65412
master
J !B ✓T ✓R +1/2
LU-20090 nrs: add allowed dynamic classification types for TBF
reviewing Qian Yingjin · CI green — awaiting your review
3 unresolved
L +345 −22
46d
LU-20090 nrs: add allowed dynamic classification types for TBF
reviewing Qian Yingjin · CI green — awaiting your review
3 unresolved
L +345 −22
46d
janitor run: 1 failing config(s), none unique to this patch — janitor results
reviews:
Chris Horn +1
no vote yet: Etienne AUJAMES, Andreas Dilger
patchsets:
PS9 09-06 Chris Horn
PS10 09-07 Chris Horn
PS11 09-11 Chris Horn
PS12 09-12 Chris Horn
PS13 09-18 Chris Horn
+8 earlier
PS1 04-20 PS2 05-13 PS3 05-14 PS4 06-10 PS5 06-24 PS6 09-02 Chris Horn PS7 09-05 Chris Horn PS8 09-06 Chris Hornthreads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Chris Horn COMMIT_MSG:12 — "Why do we need this? I don't think somebody will use that."
Etienne AUJAMES
Why do we need this? I don't think somebody will use that.
Qian Yingjin
Please note that current TBF has UID|GID|PROJID|JobID|Opcode|NID 6 sub types in total, that means it can have 2^6 -1 = 63 combinations. In the future, we will add more sub types such as nodemap, OST index, which will increase the total combinations reach 255. Without any allowed permission, it may result that lookup from class hash table will need 64 search in worst, that maybe have negative impact on the lookup performance. Thus to reduce the lookup overhead, we limit the maximum allowed combinations with the limit of 16.
Chris Horn
"Why do we need this? I don't think somebody will use that." The allowed-type list bounds the lookup cost of the dynamic classifier. Without it, nrs_tbf_req_classify() must probe every combination of the enabled sub types. Six sub types give 63 combinations today. The planned nodemap and OST-index types raise that to 255. The cap of 16 holds the worst-case probe count at 16 hash lookups per request.
reply Gerrit AI review for Lustre lustre_nrs_tbf.h:231 — (minor) Is a set of 16 reachable in practice? The policy argument is capped at 255 bytes (NRS_POL_ARG_MAX, enforced in nrs_policy_start_lock
Gerrit AI review for Lustre
(minor) Is a set of 16 reachable in practice? The policy argument is capped at 255 bytes (NRS_POL_ARG_MAX, enforced in nrs_policy_start_locked()), and that budget also has to carry the head type and `classify=dynamic`. The 16 shortest distinct combinations already cost 243 of those bytes; a more usual set over nid/uid/gid/jobid/opcode runs to roughly 270 and is refused with -EINVAL and "arg ... is too long" before the allow= parser sees it. If the patch is refreshed, saying that the byte budget is the practical ceiling would make this match what an admin can actually configure. Small wording while here: "is defined with 16" reads as "is defined as 16", and "most of real use cases" as "most real use cases".
reply Gerrit AI review for Lustre nrs_tbf.c:611 — (style) This isn't a bug, but the message doesn't say which service refused the rule, and an OSS or MDS runs TBF on several of them. __nrs_t
Gerrit AI review for Lustre
(style) This isn't a bug, but the message doesn't say which service refused the rule, and an OSS or MDS runs TBF on several of them. __nrs_tbf_cli_debug() in this file already prints "%s.%d NRS: ..." from nrs_pol2svc(pol)->srv_name and nrs_pol2cptid(pol), and policy is in hand here. Worth matching if the patch is refreshed.
owner Qian Yingjin · uploader Chris Horn · PS13 uploaded 46d ago · NEW · open in Gerrit ↗
commit message
LU-20090 nrs: add allowed dynamic classification types for TBF
Add an "allow=" key to the TBF policy start command. The key names a
classification type that a dynamic rule can use. A rule starts only
when its type equals an allowed type. A "nid" rule therefore needs
"allow=nid", even under "allow=nid+opcode".
nrs_policies="tbf nid classify=dynamic allow=nid allow=nid+opcode"
lctl get_param -n ost.OSS.ost_io.nrs_tbf_allowed_types
The head sorts the allowed types in descending order of granularity,
for the class bucket lookup of the next patch.
nrs_tbf_parse_cmd() now returns the error code of the parser, not
-EINVAL for every error.
Add sanityn/test_77tc.
Test-Parameters: trivial testlist=sanityn env=ONLY=77
Signed-off-by: Yingjin Qian <qian@ddn.com>
Assisted-by: ClaudeCode:Opus-5
Change-Id: Ia2705a64f1347485da4159268c8925c20eedcdd6
65433
master
J !B ✓T ✓R +1/2
LU-20090 nrs: use allowed types for class bucket lookup
reviewing Qian Yingjin · CI green — awaiting your review
3 unresolved
L +429 −71
46d
LU-20090 nrs: use allowed types for class bucket lookup
reviewing Qian Yingjin · CI green — awaiting your review
3 unresolved
L +429 −71
46d
janitor run: 4 failing config(s), none unique to this patch — janitor results
reviews:
Chris Horn +1
no vote yet: Etienne AUJAMES, Andreas Dilger
patchsets:
PS10 09-06 Chris Horn
PS11 09-07 Chris Horn
PS12 09-11 Chris Horn
PS13 09-12 Chris Horn
PS14 09-18 Chris Horn
+9 earlier
PS1 04-21 PS2 05-14 PS3 05-14 PS4 06-11 PS5 06-11 PS6 06-24 PS7 09-02 Chris Horn PS8 09-05 Chris Horn PS9 09-06 Chris Hornthreads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre nrs_tbf.c:139 — (nit) Neither this nor nrs_tbf_key2str() writes through the key, and the ntt_str() callbacks already take a const struct nrs_tbf_key *. Wort
Gerrit AI review for Lustre
(nit) Neither this nor nrs_tbf_key2str() writes through the key, and the ntt_str() callbacks already take a const struct nrs_tbf_key *. Worth making both take const while the signature is being changed anyway.
reply Gerrit AI review for Lustre nrs_tbf.c:525 — (minor) Can this branch ever return something different from READ_ONCE(head->th_dyn_type_mask)?
Gerrit AI review for Lustre
(minor) Can this branch ever return something different from READ_ONCE(head->th_dyn_type_mask)? When nac_count > 0 the default rule is started with tr_type_flags = nac_allowed_mask (nrs_tbf_startup()), it is linked on th_list for the whole life of the head, and nrs_type_allowed_check() forces every other rule's type to be one of the nac_types[] entries, each of which is a subset of nac_allowed_mask. So nrs_tbf_dyn_type_mask_update() always leaves th_dyn_type_mask exactly equal to nac_allowed_mask. If that is the intent, a short note saying the two are the same would help; otherwise the early return reads as if the masks can diverge.
reply Gerrit AI review for Lustre nrs_tbf.c:601 — (minor) The last sentence doesn't seem to match the caller. nrs_tbf_res_get() reaches nrs_class_rule_rematch() precisely for a bucket whose
Gerrit AI review for Lustre
(minor) The last sentence doesn't seem to match the caller. nrs_tbf_res_get() reaches nrs_class_rule_rematch() precisely for a bucket whose rule is out of date, and then hands the request to that same bucket:
rule = nrs_class_rule_rematch(head, req);
if (rule != cli->tc_rule)
nrs_tbf_cli_reset(head, rule, cli);
...
*resp = &cli->tc_res;
So the bucket is re-pointed at the newly matched rule and keeps serving requests rather than being left to the LRU shrinker. The part about not rehashing a linked bucket is the reason for the local key and reads fine; it is the "takes no new request" claim that looks off.
owner Qian Yingjin · uploader Chris Horn · PS14 uploaded 46d ago · NEW · open in Gerrit ↗
commit message
LU-20090 nrs: use allowed types for class bucket lookup
A rule match walks every rule of the class head. The cost grows with
the rule count.
The dynamic classifier now builds a request key for each allowed type
and finds the class bucket by hash. The module parameter
tbf_dyn_rule_thresh (default 8 rules) starts the hash path.
The default rule takes the union of the allowed types. A "change
default rate=N" command then gives N RPC/s to each live tuple of that
union. The rate no longer applies to each NID.
When the start command has a free allowed type entry, it adds the
policy type to the list. Otherwise it returns -E2BIG.
Fix the cleanup of test_77k, test_77kh and test_77ki.
Add sanityn/test_77t{d,f} and the -E2BIG case of test_77tc.
Test-Parameters: trivial testlist=sanityn env=ONLY=77
Signed-off-by: Yingjin Qian <qian@ddn.com>
Assisted-by: ClaudeCode:Opus-5
Change-Id: If67f9afc6693310d17ce69c1b1c417ffccbf0b9c
65407
master
J !B ✓T ✓R +1/2
LU-20090 nrs: add dynamic granularity classifier for TBF
reviewing Qian Yingjin · CI green — awaiting your review
5 unresolved
L +424 −63
46d
LU-20090 nrs: add dynamic granularity classifier for TBF
reviewing Qian Yingjin · CI green — awaiting your review
5 unresolved
L +424 −63
46d
janitor run: 4 failing config(s), none unique to this patch — janitor results
reviews:
Chris Horn +1
no vote yet: Etienne AUJAMES, Sohei Koyama, Andreas Dilger
patchsets:
PS9 09-06 Chris Horn
PS10 09-07 Chris Horn
PS11 09-11 Chris Horn
PS12 09-12 Chris Horn
PS13 09-18 Chris Horn
+8 earlier
PS1 04-19 PS2 05-13 PS3 05-14 PS4 06-10 PS5 06-24 PS6 09-02 Chris Horn PS7 09-05 Chris Horn PS8 09-06 Chris Hornthreads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:21 — (minor) One more behaviour-changing hunk isn't covered here: nrs_tbf_startup() now seeds the default rule with `rs_valid_type = head->th_typ
Gerrit AI review for Lustre
(minor) One more behaviour-changing hunk isn't covered here: nrs_tbf_startup() now seeds the default rule with `rs_valid_type = head->th_type_flag & NRS_TBF_FLAG_VALID`. That is what decides the granularity of traffic no user rule matches (and what test_77tB exercises), so a sentence on it would round the paragraph out.
reply Gerrit AI review for Lustre nrs_tbf.c:186 — (minor) This guard looks carried over from nrs_tbf_cli2str_r(), where skipping a type with no key printer makes sense. Here only ntt_name is
Gerrit AI review for Lustre
(minor) This guard looks carried over from nrs_tbf_cli2str_r(), where skipping a type with no key printer makes sense. Here only ntt_name is printed, so whether the type has an ntt_str callback has no bearing on the output. Every entry in nrs_tbf_types[] sets ntt_str today, so nothing is lost right now. But a field added later without a key printer would silently drop out of the `type=` string, and a rule made only of such fields would dump as `type=`. Would dropping the check be simpler?
reply Gerrit AI review for Lustre nrs_tbf.c:531 — (suggestion) Now that the classify key is passed in, could the static branch use it too, the way the dynamic branch two lines above does?
Gerrit AI review for Lustre
(suggestion) Now that the classify key is passed in, could the static branch use it too, the way the dynamic branch two lines above does?
memcpy(&cli->tc_key, key, sizeof(cli->tc_key));
rule = nrs_tbf_rule_match(head, &cli->tc_key);
nrs_tbf_req_classify() already built this exact key with the same head->th_type_flag mask for the nrs_tbf_cli_find() lookup. For a uid/gid/projid policy the rebuild re-runs nrs_tbf_id_cli_set(), including the req_capsule_init()/req_capsule_extend() fallback that re-parses the request body, on every class-bucket miss. It would also make `req` unused here.
The comment on the dynamic branch argues a second build can produce a different key; if that is a concern it applies to the static head as well, where a differing key would mean the class is inserted under a key that the lookup will never find.
reply Gerrit AI review for Lustre sanityn.sh:5941 — (minor) nrs_class_def_rate doesn't exist anywhere in the tree at this commit, so the second sentence reads as a forward reference to a later
Gerrit AI review for Lustre
(minor) nrs_class_def_rate doesn't exist anywhere in the tree at this commit, so the second sentence reads as a forward reference to a later patch in the chain. Could the comment just say what tbf_rate is here (the ptlrpc module parameter that seeds the default rule's rate) and leave the series out of it?
reply Gerrit AI review for Lustre sanityn.sh:5981 — (style) Not a bug, but test_77tB() and test_77tb() both put the version gate on the first line of the body while this one sits below six `lo
Gerrit AI review for Lustre
(style) Not a bug, but test_77tB() and test_77tb() both put the version gate on the first line of the body while this one sits below six `local` declarations, one of which shells out to osts_nodes(). If the patch is refreshed, moving the gate to the top would match the other two and the rest of the suite.
owner Qian Yingjin · uploader Chris Horn · PS13 uploaded 46d ago · NEW · open in Gerrit ↗
commit message
LU-20090 nrs: add dynamic granularity classifier for TBF
The TBF policy start command sets one classification type for the
head. A rule of another type cannot start.
Add the dynamic classifier. Each rule takes its class type from its
own match conditions. The head keeps a mask of the types of its live
rules. The key of a dynamic head holds only those fields. The rule
dump adds a "type=" field.
nrs_tbf_id_cli_set() now clears each ID field that the rule does not
match. A "uid" policy put the gid in the key too. One uid under two
gids then got two class buckets, each with the full rule rate.
The rule stop path now holds th_rule_lock over the list removal.
Add sanityn/test_77t{B,h,b}.
Fixes: 3408489c96ba ("LU-20090 nrs: use fixed size key for NRS TBF class bucket")
Test-Parameters: trivial testlist=sanityn env=ONLY=77
Signed-off-by: Yingjin Qian <qian@ddn.com>
Assisted-by: ClaudeCode:Opus-5
Change-Id: Ie817ea1f714c0e087eb25ec72d1477cd5e2948e2
65391
master
J !B ✓T ✓R +1/2
LU-20090 nrs: add static and dynamic classify conf for TBF
reviewing Qian Yingjin · CI green — awaiting your review
1 unresolved
L +408 −151
46d
LU-20090 nrs: add static and dynamic classify conf for TBF
reviewing Qian Yingjin · CI green — awaiting your review
1 unresolved
L +408 −151
46d
janitor run: 6 failing config(s), none unique to this patch — janitor results
reviews:
Chris Horn +1
no vote yet: Etienne AUJAMES, Sohei Koyama, Andreas Dilger
patchsets:
PS9 09-06 Chris Horn
PS10 09-06 Chris Horn
PS11 09-11 Chris Horn
PS12 09-12 Chris Horn
PS13 09-18 Chris Horn
+8 earlier
PS1 04-17 PS2 05-13 PS3 05-13 PS4 06-09 PS5 06-10 PS6 06-24 PS7 09-02 Chris Horn PS8 09-05 Chris Hornthreads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Chris Horn patchset comment — "even that 'optimized' path still walks the rule list in
Sohei Koyama
Hi Yingjin, I spent the day reviewing this patch set (LU-20090). A few questions: Do we really need dynamic? I get that static has a limitation it can't work around, but is it really worth it? Also, about performance: the code already falls back to a simple linear rule match when there are few rules (nrs_dynamic_class_rule_match, default threshold 8). The whole hash-lookup-first path, and the rule sequence numbers added in this patch, only kick in for hundreds or thousands of rules. I don't think that's realistic; no admin is going to add that many rules by hand. If we assume the rule count is always small, the simple linear match is enough and we could drop the complex path (and this patch) entirely. (And even that "optimized" path still walks the rule list in nrs_tbf_rule_match_seq, so it isn't really O(1) anyway.)
Qian Yingjin
The reason why we need dynamic is about the TBF type granluarity. i.e. If TBF type is "nid", then each client has a 1 corresponding class bucket. But if TBF type is "nid+uid+gid+projid+opcode", then a client may have (2^5 - 1 = 31) class buckets. When the cluster has a large number of nodes (more than 1000), the total class buckets will reach 1000 So that's the reason why we need the dynamic classification. Please note in the cluster product cluster it already configured with thousands of rules for the TBF scheduler.
Qian Yingjin
Thanks for you reviewing!
Chris Horn
"even that 'optimized' path still walks the rule list in nrs_tbf_rule_match_seq, so it isn't really O(1) anyway" Correct. The number of rules newer than the matched class bucket's rule bounds the walk, not the total rule count. The hash lookup replaces a full list scan on every request. The per-type rule lists in 66704 bound the walk further. "If we assume the rule count is always small, the simple linear match is enough" The rule count is not always small. Some sites already run thousands of TBF rules. The dynamic classifier also multiplies the bucket count: a nid+uid+gid+projid+opcode type gives up to 31 buckets per client. A 1000-node cluster then reaches tens of thousands of buckets.
owner Qian Yingjin · uploader Chris Horn · PS13 uploaded 46d ago · NEW · open in Gerrit ↗
commit message
LU-20090 nrs: add static and dynamic classify conf for TBF
Add a "classify=" key to the TBF policy start command. Under
"classify=static", every rule takes the classification type of the
policy. Under "classify=dynamic", each rule takes its type from its
own match conditions. A later patch adds the dynamic classifier. The
strategy does not change until the policy stops.
lctl set_param *.*.ost_io.nrs_policies="tbf nid classify=dynamic"
lctl get_param ost.OSS.ost_io.nrs_tbf_classify
reg_classify:dynamic
hp_classify:dynamic
The maximum length of a policy argument grows from 16 to 256 bytes. A
second policy uses the command structures later, so they lose the TBF
prefix. For example, struct nrs_tbf_cmd becomes struct nrs_cmd.
Fix the 77k cleanup, which left TBF rules for the next test.
Add sanityn/test_77ta.
Test-Parameters: trivial
Test-Parameters: testlist=sanityn env=ONLY=77
Signed-off-by: Yingjin Qian <qian@ddn.com>
Assisted-by: ClaudeCode:Opus-5
Change-Id: Ia6d4ebc8705e67421b60eabc5cea54f1de23952a
68834
master
J ✗1B ✓T ✓R 0/2
LU-20438 clio: eagerly evaluate P2P DMA capability via layout
reviewing Shivaji Kant · CI green — awaiting your review
4 unresolved
M +55 −9
50d
LU-20438 clio: eagerly evaluate P2P DMA capability via layout
reviewing Shivaji Kant · CI green — awaiting your review
4 unresolved
M +55 −9
50d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity2@ldiskfs+DNE:test_63c | seen in 4 other reviews |
7 optional test failure(s) — informational
build #131691 SUCCESS · tests all Maloo sessions
no vote yet: Jinshan Xiong, Oleg Drokin, Pranjal Shrivastava, Timothy Day
patchsets:
PS1 09-11
PS2 09-14
threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:19 — (minor) The message says Data-on-MDT components are exempted because they "never support P2P DMA", but the code does the opposite: lsme_is_d
Gerrit AI review for Lustre
(minor) The message says Data-on-MDT components are exempted because they "never support P2P DMA", but the code does the opposite: lsme_is_dom() only selects bounds = 1 and the DoM target's import is then consulted exactly like an OST's. Should this sentence be dropped or reworded to match?
reply Gerrit AI review for Lustre lov_io.c:2195 — (minor) The comment doesn't describe the test. lle_valid is set in lov_init_composite() from lov_pattern_supported() + lov_supported_comp_ma
Gerrit AI review for Lustre
(minor) The comment doesn't describe the test. lle_valid is set in lov_init_composite() from lov_pattern_supported() + lov_supported_comp_magic() + !(lsme_flags & LCME_FL_STALE); an uninstantiated component still gets lle_valid = 1. What actually keeps this loop off an uninstantiated component is lle_raid0.lo_nr staying 0 (and lle_dom.lo_dom staying NULL) because lco_init() was skipped. Worth rewording on a refresh so the next reader doesn't rely on the guarantee stated here.
reply Gerrit AI review for Lustre lov_io.c:2201 — (defect) lov_pattern() only masks off LOV_PATTERN_F_MASK, so this equality matches plain RAID0 alone. Overstriped components are LOV_PATTERN
Gerrit AI review for Lustre
(defect) lov_pattern() only masks off LOV_PATTERN_F_MASK, so this equality matches plain RAID0 alone. Overstriped components are LOV_PATTERN_RAID0|LOV_PATTERN_OVERSTRIPING, EC parity adds LOV_PATTERN_PARITY and compressed adds LOV_PATTERN_COMPRESS - all three pass lov_pattern_supported(), and lov_init_composite() gives them raid0_ops with a fully populated lle_raid0.lo_sub[]. They land in the else branch and no target inside them is ever interrogated. With the osc_io_init() check gone, a file created with `lfs setstripe -C` on a non-capable OST now extracts P2P pages and fails halfway through osc_dio_submit() with -EOPNOTSUPP, which is the partial-I/O case the patch is removing and which osc_io_init() used to catch. Would a `lov_pattern(lsme->lsme_pattern) & LOV_PATTERN_RAID0` test cover these instead?
reply Gerrit AI review for Lustre lov_io.c:2226 — (defect) Is ld_obd ever set on this device? lle_raid0.lo_sub[] and lle_dom.lo_dom hold lovsub objects, and lovsub_object_init() shows what t
Gerrit AI review for Lustre
(defect) Is ld_obd ever set on this device? lle_raid0.lo_sub[] and lle_dom.lo_dom hold lovsub objects, and lovsub_object_init() shows what their lo_dev is:
struct lovsub_device *dev = lu2lovsub_dev(obj->lo_dev);
Those lovsub devices are created by cl_type_setup(env, &ld->ld_site, &lovsub_device_type, ...) in lov_device_init()/lov_mdc_dev_init(), which never assigns ld_obd; lu_device_init() memsets the struct, and ld_obd is only set on a device that actually backs an obd_device (obd_setup() and osc_device_alloc()/mdc_device_alloc()).
So obd is NULL for every sub-object here, imp is NULL, and ci_p2pdma_unsupported is set on the first stripe of every DIO. cl_dio_pages_init() then never passes ITER_ALLOW_P2PDMA, and every P2P direct I/O takes the -EFAULT - the feature is off everywhere.
The obd lives one layer down: lu_object_next(&subobj->co_lu)->lo_dev->ld_obd is the OSC (or MDC for DoM) device, both of which do set ld_obd. lov_init_raid0() also already reaches the same target as lov_tgt(dev->ld_lov, oinfo->loi_ost_idx)->ltd_exp.
owner Shivaji Kant · uploader Shivaji Kant · PS2 uploaded 51d ago · NEW · open in Gerrit ↗
commit message
LU-20438 clio: eagerly evaluate P2P DMA capability via layout
Evaluating P2P DMA support per-stripe sequentially inside cl_io_loop via
osc_io_init() suffers from partial-IO discovery failure on heterogeneous
storage pools. Specifically, if a file's first stripe supports P2P DMA
but a subsequent stripe does not, ll_direct_IO will submit successfully,
map ZONE_DEVICE memory for the first chunk, and then fail abruptly midway
resulting in an unexpected -EFAULT and a non-atomic file state.
This patch cleanly shifts the capability interrogation from the OSC loop
up to the LOV composite initialization phase (lov_io_init_composite).
By looping through the entire layout initially (safely exempting
Data-on-MDT components which never support P2P DMA), we guarantee
ci_p2pdma_unsupported is set before cl_dio_pages_init runs on the
first slice, thereby ensuring an immediate and graceful error before
any I/O is dispatched.
Fixes: 83142c39b087 ("LU-20438 clio: Enable P2P DMA in client Direct I/O path")
Signed-off-by: Shivaji Kant <shivajikant@google.com>
Change-Id: Ic798f885fdf5767f6d97277952d5fa650b499851
65796
b2_15
B ✓T ✓R +1/1
LU-19634 kernel: update SLES15 SP6 [6.4.0-150600.23.78.1]
reviewing Jian Yu · CI green — awaiting your review
XS +2 −2
67d
LU-19634 kernel: update SLES15 SP6 [6.4.0-150600.23.78.1]
reviewing Jian Yu · CI green — awaiting your review
XS +2 −2
67d
2 optional test failure(s) — informational
build #126023 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
patchsets:
PS1 05-11
PS2 05-28
PS3 06-04
owner Jian Yu · uploader Jian Yu · PS3 uploaded 152d ago · NEW · backport · open in Gerrit ↗
commit message
LU-19634 kernel: update SLES15 SP6 [6.4.0-150600.23.78.1] Update SLES15 SP6 kernel to 6.4.0-150600.23.78.1 for Lustre client. Lustre-change: https://review.whamcloud.com/62719 Lustre-commit: fe51801d4497fc1b5dafebf8608601e3fd526284 Test-Parameters: trivial fstype=ldiskfs mdtcount=4 mdscount=2 \ clientdistro=sles15sp6 serverdistro=el8.10 testlist=sanity Test-Parameters: optional fstype=ldiskfs mdtcount=4 mdscount=2 \ clientdistro=sles15sp6 serverdistro=el8.10 testgroup=full-dne-part-1 Test-Parameters: optional fstype=ldiskfs mdtcount=4 mdscount=2 \ clientdistro=sles15sp6 serverdistro=el8.10 testgroup=full-dne-part-2 Test-Parameters: optional fstype=ldiskfs mdtcount=4 mdscount=2 \ clientdistro=sles15sp6 serverdistro=el8.10 testgroup=full-dne-part-3 Change-Id: Idde44055208a61519185fd38341c53dd9a4dfec4 Signed-off-by: Jian Yu <yujian@whamcloud.com>
66229
b2_15
B ✓T ✓R +1/1
LU-20266 kernel: update RHEL 9.7 [5.14.0-611.55.1.el9_7]
reviewing Jian Yu · CI green — awaiting your review
XS +2 −2
67d
LU-20266 kernel: update RHEL 9.7 [5.14.0-611.55.1.el9_7]
reviewing Jian Yu · CI green — awaiting your review
XS +2 −2
67d
build #126017 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
patchsets:
PS1 05-28
PS2 06-04
owner Jian Yu · uploader Jian Yu · PS2 uploaded 152d ago · NEW · backport · open in Gerrit ↗
commit message
LU-20266 kernel: update RHEL 9.7 [5.14.0-611.55.1.el9_7] Update RHEL 9.7 kernel to 5.14.0-611.55.1.el9_7 for Lustre client. Lustre-change: https://review.whamcloud.com/65920 Lustre-commit: TBD (from 17408dda24eb80820252d868003ae5c5c97b0782) Test-Parameters: trivial fstype=ldiskfs mdtcount=4 mdscount=2 \ clientdistro=el9.7 serverdistro=el8.10 testlist=sanity Test-Parameters: optional fstype=ldiskfs mdtcount=4 mdscount=2 \ clientdistro=el9.7 serverdistro=el8.10 testgroup=full-dne-part-1 Test-Parameters: optional fstype=ldiskfs mdtcount=4 mdscount=2 \ clientdistro=el9.7 serverdistro=el8.10 testgroup=full-dne-part-2 Test-Parameters: optional fstype=ldiskfs mdtcount=4 mdscount=2 \ clientdistro=el9.7 serverdistro=el8.10 testgroup=full-dne-part-3 Change-Id: I463660fa411189bbf3f8e9395b496e5d406bf22f Signed-off-by: Jian Yu <yujian@whamcloud.com>
66462
b2_15
B ✓T ✓R +1/1
LU-20330 kernel: update RHEL 8.10 [4.18.0-553.129.1.el8_10]
reviewing Jian Yu · CI green — awaiting your review
M +88 −2
67d
LU-20330 kernel: update RHEL 8.10 [4.18.0-553.129.1.el8_10]
reviewing Jian Yu · CI green — awaiting your review
M +88 −2
67d
1 optional test failure(s) — informational
build #126016 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
owner Jian Yu · uploader Jian Yu · PS1 uploaded 152d ago · NEW · backport · open in Gerrit ↗
commit message
LU-20330 kernel: update RHEL 8.10 [4.18.0-553.129.1.el8_10] Update RHEL 8.10 kernel to 4.18.0-553.129.1.el8_10. Lustre-change: https://review.whamcloud.com/66460 Lustre-commit: TBD (from ddca7c1f47b49e5c9be1d195e8923aca07f16f6d) Test-Parameters: trivial fstype=ldiskfs mdtcount=4 mdscount=2 \ clientdistro=el8.10 serverdistro=el8.10 testlist=sanity Test-Parameters: optional fstype=zfs mdtcount=4 mdscount=2 \ clientdistro=el8.10 serverdistro=el8.10 testlist=sanity Test-Parameters: optional fstype=ldiskfs mdtcount=4 mdscount=2 \ clientdistro=el8.10 serverdistro=el8.10 testgroup=full-dne-part-1 Test-Parameters: optional fstype=ldiskfs mdtcount=4 mdscount=2 \ clientdistro=el8.10 serverdistro=el8.10 testgroup=full-dne-part-2 Test-Parameters: optional fstype=ldiskfs mdtcount=4 mdscount=2 \ clientdistro=el8.10 serverdistro=el8.10 testgroup=full-dne-part-3 Test-Parameters: optional fstype=zfs mdtcount=4 mdscount=2 \ clientdistro=el8.10 serverdistro=el8.10 testgroup=full-dne-zfs-part-1 Test-Parameters: optional fstype=zfs mdtcount=4 mdscount=2 \ clientdistro=el8.10 serverdistro=el8.10 testgroup=full-dne-zfs-part-2 Test-Parameters: optional fstype=zfs mdtcount=4 mdscount=2 \ clientdistro=el8.10 serverdistro=el8.10 testgroup=full-dne-zfs-part-3 Change-Id: I38c6acb97e29d4ec21336d1f904f3349af640992 Signed-off-by: Jian Yu <yujian@whamcloud.com>
67778
master
J ✗2B ✓T ✓R -1/2−
LU-16518 misc: remove unused uapi header helpers
reviewing Timothy Day · CI green — awaiting your review
3 unresolved
S +0 −38
78d
LU-16518 misc: remove unused uapi header helpers
reviewing Timothy Day · CI green — awaiting your review
3 unresolved
S +0 −38
78d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity2@ldiskfs+DNE:test_63c | seen in 1 other review |
| sanity3@zfs:test_907 | seen in 51 other reviews |
build #128751 SUCCESS · tests all Maloo sessions
reviews:
Arshad Hussain -1
no vote yet: Aurélien Cedeyn, Shaun Tancheff, Aurelien Degremont, Andreas Dilger
threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Arshad Hussain lustre_fiemap.h:38 — This now becomes a design question vs Test-Parameters: trivial. -1 (not blocking the patch) to be on safe side considering James + AI commen
Gerrit AI review for Lustre
(suggestion) get_fe_device() was the only decoder for the low 17 bits of fe_device. The client writes that field with set_fe_device_stripenr() in lov_object.c and a userspace caller reads it back after asking for FIEMAP_FLAG_DEVICE_ORDER, so the reader was always expected to live outside this tree. get_fe_stripenr() survives only because lov_object.c happens to reuse it for its own resume logic. After this, an installed-header user can still get the stripe number but has to open-code `fe->fe_device & 0x1ffff` for the OST index. Worth keeping the pair together?
Arshad Hussain
This now becomes a design question vs Test-Parameters: trivial. -1 (not blocking the patch) to be on safe side considering James + AI comment. If this is to be removed, i will very quickly change it. Otherwise LGTM.
reply Gerrit AI review for Lustre lustre_user.h:1303 — (minor) Not a bug, but lmv_is_restriping() in lustre/include/lustre_lmv.h open-codes exactly this:
Gerrit AI review for Lustre
(minor) Not a bug, but lmv_is_restriping() in lustre/include/lustre_lmv.h open-codes exactly this:
return lmv_hash_is_splitting(cpu_to_le32(lmv->lmv_hash_type)) ||
lmv_hash_is_merging(cpu_to_le32(lmv->lmv_hash_type));
It even converts lmv_hash_type twice. Switching that caller over to lmv_hash_is_restriping() may be a better outcome than deleting the helper, and it mirrors how lmv_hash_is_layout_changing() is kept.
reply Gerrit AI review for Lustre lustre_user.h:2003 — (suggestion) Same shape as the fe_device case. hsm_set_cl_event() is called only from mdd/mdt, and nothing in the tree ever reads the event
Gerrit AI review for Lustre
(suggestion) Same shape as the fe_device case. hsm_set_cl_event() is called only from mdd/mdt, and nothing in the tree ever reads the event bits back, so hsm_get_cl_event() is unused by design rather than by accident - it is the accessor a changelog consumer needs. Also note hsm_get_cl_flags() and hsm_get_cl_error() immediately below have no in-tree callers either and are being kept, so "no caller in this tree" is not quite the criterion actually applied here. Removing only the event getter leaves the family incomplete.
owner Timothy Day · uploader Timothy Day · PS1 uploaded 90d ago · NEW · open in Gerrit ↗
commit message
LU-16518 misc: remove unused uapi header helpers
... since they are no longer used. fid_seq_is_special(),
get_fe_device(), set_fe_device(), set_fe_stripenr(),
lu_extent_is_whole(), lmv_hash_is_restriping() and
hsm_get_cl_event() were never called since they were first
introduced. The last caller of ostid_set_seq_llog() was
removed a long time ago.
Fixes: 79d06b6fac3d ("LU-2240 mds: Assign special fid sequence to root.")
Fixes: 409719608cf0 ("LU-11848 lov: FIEMAP support for PFL and FLR file")
Fixes: b879bbc27db5 ("LU-9771 flr: lfs setstripe to create a new mirror")
Fixes: 2e2b16c28bcf ("LU-11025 dne: support directory restripe")
Fixes: 2e0ad6d40070 ("b=15599 hsm infrastructure")
Fixes: d0b3e251ad5d ("LU-2158 lvfs: remove llog_lvfs.c and other lvfs code from llog")
Test-Parameters: trivial
Signed-off-by: Timothy Day <timday@thelustrecollective.com>
Change-Id: I2002d56cbc7c8039b24fc808a5dfb1f29c2afdc6
67843
master
J !B ✓T ✓R 0/2
LU-9325 obdclass: do not absorb mount options into param= value
reviewing Timothy Day · CI green — awaiting your review
2 unresolved
S +11 −3
87d
LU-9325 obdclass: do not absorb mount options into param= value
reviewing Timothy Day · CI green — awaiting your review
2 unresolved
S +11 −3
87d
janitor run: 10 failing config(s), none unique to this patch — janitor results
build #128932 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Minh
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre obd_mount.c:1202 — Not a bug, but the name no longer describes what this does. It isn't finding a delimiter any more, it answers "does this fragment continue t
Gerrit AI review for Lustre
Not a bug, but the name no longer describes what this does. It isn't finding a delimiter any more, it answers "does this fragment continue the param value?", which is also what the rewritten kernel-doc now says. Something like lmd_param_continues() would read better at the call site if the patch is refreshed.
reply Gerrit AI review for Lustre obd_mount.c:1218 — A NID list fragment doesn't always carry an '@'. Bracketed address expressions are valid nidstrings and contain commas, e.g. `failover.node=
Gerrit AI review for Lustre
A NID list fragment doesn't always carry an '@'. Bracketed address expressions are valid nidstrings and contain commas, e.g. `failover.node=192.168.10.[8,10,12]@tcp` (see the `192.168.10.[8,10,12-16]@tcp` example in Documentation/man8/lst.8, and cfs_expr_list_parse() which strsep()s the bracket body on ',').
mount.lustre_tgt turns every ldd_params entry into `param=<entry>`, so with that failover.node value lustre_parse_monolithic() sees:
s1 = "param=failover.node=192.168.10.[8"
opts = "10,12]@tcp,svname=..."
The first fragment is "10", which has no '@', so this returns false and the rest of the NID is left behind. entry is then "failover.node=192.168.10.[8" and lmd_validate_param() rejects it (unbalanced '['), giving -EINVAL and "invalid mount string format". Before this patch match_token("10") returned LMD_NUM_MOUNT_OPT, the fragment was absorbed, and the mount worked.
A two-group form such as `192.168.[10,12].[8,10]@tcp` breaks the same way, and `10.0.0.[2,10]@tcp,10.0.1.[2,10]@tcp` silently drops the second NID instead of erroring.
Would it work to keep the '@' test but also treat the fragment as a continuation while the value accumulated so far has an unclosed '['? lmd_validate_param() already tracks exactly that bracket state.
owner Timothy Day · uploader Timothy Day · PS1 uploaded 88d ago · NEW · open in Gerrit ↗
commit message
LU-9325 obdclass: do not absorb mount options into param= value
lmd_find_delimiter() treated any comma-separated token that is not
a known server option as a continuation of a param= value, so any
backend mount options following a param= option (e.g.
errors=remount-ro) were glued into lmd_params and stripped from the
string saved as lmd_opts, silently dropping them and registering
garbage parameters with the MGS.
A param value only spans a comma when it is a NID list split by the
option parser, so require a "@" in the fragment before treating it
as a continuation.
Test-Parameters: trivial
Fixes: 415fa27540 ("LU-9325 obdclass: use match_table for server mount options")
Signed-off-by: Timothy Day <timday@thelustrecollective.com>
Change-Id: I5f1615b6cc1fe6fde67f25c9b815eca96a6a6964
54678
master
J !B ✓T ✓R 0/2
LU-17707 llite: ensure statahead task and info are valid
reviewing Shaun Tancheff · CI green — awaiting your review
2 unresolved
XS +4 −1
96d
LU-17707 llite: ensure statahead task and info are valid
reviewing Shaun Tancheff · CI green — awaiting your review
2 unresolved
XS +4 −1
96d
janitor run: 1 failing config(s), none unique to this patch — janitor results
build #112152 SUCCESS · tests all Maloo sessions
no vote yet: Qian Yingjin, Neil Brown, Andreas Dilger, Oleg Drokin
patchsets:
PS6 07-01
PS7 07-02
PS8 09-19
PS9 03-31
PS10 04-01
+5 earlier
PS1 04-05 PS2 06-30 PS3 06-30 PS4 06-30 PS5 06-30threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Qian Yingjin llite_lib.c:3252 — I am afraid with the shared stat()-ahead support (i.e. mdtest shared stat() workload), lli->lli_sai may be NULL without holding lli_sa_lock.
James Simmons
spin_lock is a heavy memory barrier while smp_store_release is a light weight barrier. You don't need to do both.
Neil Brown
spin_lock is an acquire memory barrier. smp_store_release is a release memory barrier. spin_unlock is also a release memory barrier. So if the wake_up_process were after the spun_unlock, we could store NULL in sai_task without an explicit memory barrier. (That doesn't mean we should - I haven't thought about it enough. It just means we could. The important point is we need a release between the store of null and the wake_up_process())
Qian Yingjin
I am afraid with the shared stat()-ahead support (i.e. mdtest shared stat() workload), lli->lli_sai may be NULL without holding lli_sa_lock. See the patch: https://review.whamcloud.com/c/fs/lustre-release/+/51592
reply Timothy Day llite_lib.c:1907 — We should either use the correct lock or remove the LASSERT().
Andreas Dilger
It seems strange to get a spinlock just for an LASSERT()?
Timothy Day
We should either use the correct lock or remove the LASSERT().
owner Shaun Tancheff · uploader Shaun Tancheff · PS10 uploaded 582d ago · NEW · open in Gerrit ↗
commit message
LU-17707 llite: ensure statahead task and info are valid A spin lock should be held when checking lli_sai A RELEASE is needed to ensure sai_task is correctly seen by the statahead thread. HPE-bug-id: LUS-12236 Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: Ifa4b5a3bf65520d1bc42710223400074ea588b8d
67279
master
J !B ✓T ✓R -1/2−
LU-16518 ldlm: remove unused extent rbtree helpers
reviewing Timothy Day · CI green — awaiting your review
1 unresolved
S +0 −37
99d
LU-16518 ldlm: remove unused extent rbtree helpers
reviewing Timothy Day · CI green — awaiting your review
1 unresolved
S +0 −37
99d
janitor run: 6 failing config(s), none unique to this patch — janitor results
build #127655 SUCCESS · tests all Maloo sessions
reviews:
Yang Sheng -1
no vote yet: Keguang Xu
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Timothy Day patchset comment — It triggers a custom static checker I use: https://github.com/tim-day-387/ktest/tree/master/cplugin. But if I mark it unused, I can update t
Yang Sheng
I agree extent_replace should be removed. But please keep extent_prev_lock.
Timothy Day
I can mark it unused. But why keep it?
Yang Sheng
Does it trigger the unused warning? It may be used for some cases for optimization.
Timothy Day
It triggers a custom static checker I use: https://github.com/tim-day-387/ktest/tree/master/cplugin. But if I mark it unused, I can update the check to ignore __maybe_unused functions.
owner Timothy Day · uploader Timothy Day · PS1 uploaded 111d ago · NEW · open in Gerrit ↗
commit message
LU-16518 ldlm: remove unused extent rbtree helpers
... since they are no longer used. extent_prev_lock() and
extent_replace() were never called after being introduced.
Fixes: 0cf356c4e427 ("LU-11085 ldlm: optimise extent locks with identical extent")
Test-Parameters: trivial
Signed-off-by: Timothy Day <timday@thelustrecollective.com>
Change-Id: Ie1f7162b1023c0e396951136b45da532520a742e
62929
master
J !B ✓T ✓R 0/2
LU-17000 lnet: Fix overflow return in lnet_net_cmd
reviewing Arshad Hussain · CI green — awaiting your review
stalled 103d
6 unresolved
S +16 −3
103d
LU-17000 lnet: Fix overflow return in lnet_net_cmd
reviewing Arshad Hussain · CI green — awaiting your review
stalled 103d
6 unresolved
S +16 −3
103d
janitor run: 2 failing config(s), none unique to this patch — janitor results
1 optional test failure(s) — informational
build #119476 SUCCESS · tests all Maloo sessions
threads: 6 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger COMMIT_MSG:9 — (typo) "sets"
Andreas Dilger
(typo) "sets"
reply Andreas Dilger COMMIT_MSG:11 — But in the error case, won't the error code be bounded by -4095 in the kernel?
Andreas Dilger
But in the error case, won't the error code be bounded by -4095 in the kernel?
reply Andreas Dilger api-ni.c:6687 — How can len be > INT_MAX when it is < 0 a few lines above?
Andreas Dilger
How can len be > INT_MAX when it is < 0 a few lines above?
reply Andreas Dilger api-ni.c:6690 — (style) no need for else after GOTO, which also removes one indent on the next line
Andreas Dilger
(style) no need for else after GOTO, which also removes one indent on the next line
reply Andreas Dilger api-ni.c:8152 — What range of negative numbers can be returned here?
Andreas Dilger
What range of negative numbers can be returned here?
reply Andreas Dilger api-ni.c:8158 — (style) no need for else after GOTO
Andreas Dilger
(style) no need for else after GOTO
owner Arshad Hussain · uploader Arshad Hussain · PS1 uploaded 332d ago · NEW · open in Gerrit ↗
commit message
LU-17000 lnet: Fix overflow return in lnet_net_cmd
In case nla_strscpy fails. It seets rc = len.
Since rc is int and len is ssize_t, it could
lead to overflow. This patch checks if the
return len is a valid int range and then safely
casts and assigns to rc. In case it is out of
INT min/max range it sets ERANGE to rc.
CoverityID: 429517 ("Overflowed return value")
Test-Parameters: trivial testlist=sanity-lnet
Fixes: 8f8f6e2f3 ("LU-10003 lnet: use Netlink to support old and new NI APIs")
Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com>
Change-Id: I293cfb559fc8e33d84ce012bf072c5b5299ec074
66224
b2_17
B ✓T ✓R +1/1
LU-19249 build: Compatibility updates for kernel v6.16
reviewing Gian-Carlo DeFazio · CI green — awaiting your review
stalled 124d
L +321 −183
124d
LU-19249 build: Compatibility updates for kernel v6.16
reviewing Gian-Carlo DeFazio · CI green — awaiting your review
stalled 124d
L +321 −183
124d
build #127181 SUCCESS · tests all Maloo sessions
reviews:
Shaun Tancheff +1
patchsets:
PS1 05-27
PS2 05-28
PS3 07-01 Jian Yu
PS4 07-02 Jian Yu
owner Gian-Carlo DeFazio · uploader Jian Yu · PS4 uploaded 124d ago · NEW · backport · open in Gerrit ↗
commit message
LU-19249 build: Compatibility updates for kernel v6.16
Linux commit v6.15-rc1-5-g06c567403ae5
Use try_lookup_noperm() instead of d_hash_and_lookup() outside \
of VFS
Provide try_lookup_noperm() and lookup_noperm for older kernels.
Linux commit v6.15-rc6-233-g7d0f0f061531
mm: move folio_index to mm/swap.h and remove no longer needed \
helper
Drop folio_index and use folio->index directly.
Linux commit v6.15-13744-g41cb08555c41
treewide, timers: Rename from_timer() to timer_container_of()
Provide timer_container_of for older kernels when is not defined.
Linux commit v6.15-rc6-297-gacc53a0b4c15
mm: rename page->index to page->__folio_index
Access page index either via folio->index or calculated using
folio_index_page()
Lustre-commit: 59d84ec3ffb83a938f13e0c93ad5c87ec2a0d258
Lustre-change: https://review.whamcloud.com/60619
Test-Parameters: optional fstype=ldiskfs mdtcount=4 mdscount=2 \
clientdistro=el10.1 serverdistro=el9.7 testgroup=full-dne-part-1
Test-Parameters: optional fstype=ldiskfs mdtcount=4 mdscount=2 \
clientdistro=el10.1 serverdistro=el9.7 testgroup=full-dne-part-2
Test-Parameters: optional fstype=ldiskfs mdtcount=4 mdscount=2 \
clientdistro=el10.1 serverdistro=el9.7 testgroup=full-dne-part-3
Test-Parameters: optional fstype=zfs mdtcount=4 mdscount=2 \
clientdistro=el10.1 serverdistro=el9.7 testgroup=full-dne-zfs-part-1
Test-Parameters: optional fstype=zfs mdtcount=4 mdscount=2 \
clientdistro=el10.1 serverdistro=el9.7 testgroup=full-dne-zfs-part-2
Test-Parameters: optional fstype=zfs mdtcount=4 mdscount=2 \
clientdistro=el10.1 serverdistro=el9.7 testgroup=full-dne-zfs-part-3
Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Change-Id: I25d4eec9a047a6e3aa796d9327d0857842c9c0ba
Reviewed-by: Timothy Day <timday@amazon.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Signed-off-by: Gian-Carlo DeFazio <defazio1@llnl.gov>
66666
master
J ✗1B ✓T ✓R 0/2
LU-20373 build: py3 updates for kernel v7.1
reviewing Shaun Tancheff · CI green — awaiting your review
stalled 128d
2 unresolved
L +184 −133
128d
LU-20373 build: py3 updates for kernel v7.1
reviewing Shaun Tancheff · CI green — awaiting your review
stalled 128d
2 unresolved
L +184 −133
128d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity-quota@ldiskfs+DNE:test_48 | seen in 44 other reviews |
build #126998 SUCCESS · tests all Maloo sessions
no vote yet: Timothy Day
patchsets:
PS1 06-15
PS2 06-26
PS3 06-26
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Shaun Tancheff osd_handler.c:481 — cast i_ino to (u64) to ensure matches with 7.1+
Shaun Tancheff
cast i_ino to (u64) to ensure matches with 7.1+
reply Shaun Tancheff osd_iam_lvar.c:361 — cast i_ino to (u64) to ensure matches with 7.1+
Shaun Tancheff
cast i_ino to (u64) to ensure matches with 7.1+
owner Shaun Tancheff · uploader Shaun Tancheff · PS3 uploaded 131d ago · NEW · open in Gerrit ↗
commit message
LU-20373 build: py3 updates for kernel v7.1
Update python configure checks:
v7.0-rc6-4-g14a51045e10d3'
get rid of busy-waiting in shrink_dcache_tree()
Drops d_u{} union from dcache, it is now anonymous
v7.0-rc5-146-g4e1d77a8f382a
folio_batch: rename pagevec.h to folio_batch.h
Provide a compat include for folio_batch.h that includes
pagevec.h and defines PAGEVEC_SIZE when it is missing.
v7.0-rc1-1-g96fefcabf340f
vfs: widen inode hash/lookup functions to u64
In libiam and osd_oi change:
struct osd_inode_id.oii_ino to u64
cast i_ino to (u64) to ensure older kernels align with upstream
Test-Parameters: trivial
Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Change-Id: If046b6f9df0ec890a6e023b01c4f4a763419be46
64069
master
J !B ✓T ✓R +1/2−
LU-19888 libcfs: filter & print ioctl() request with full command
reviewing Arshad Hussain · CI green — awaiting your review
stalled 135d
2 unresolved
M +123 −33
135d
LU-19888 libcfs: filter & print ioctl() request with full command
reviewing Arshad Hussain · CI green — awaiting your review
stalled 135d
2 unresolved
M +123 −33
135d
janitor run: 7 failing config(s), none unique to this patch — janitor results
reviews:
Andreas Dilger +1 · Oleg Drokin -1 · Jian Yu +1
no vote yet: Timothy Day
patchsets:
PS3 02-20
PS4 02-20 Janitor Bot
PS5 02-22
PS6 03-18
PS7 05-28 Andreas Dilger
+2 earlier
PS1 02-17 PS2 02-20threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger patchset comment — I don't think ioctl() calls are in a performance critical path anywhere? The `cmd2ioctl()` function is not called if the CDEBUG() mask is n
Oleg Drokin
do we *REALLY* need this as part of kernel code vs doing it in in the tools when the log is looked at/processed (which happens a lot less frequently)? Also this is mislabeled as utils, but this patch is all kernel code, zero utils?
Arshad Hussain
> do we REALLY need this as part of kernel code vs doing it in in the tools when the log is looked at/processed (which happens a lot less frequently)? I will see if this can be done in userspace. The reason for this was, Debug logs are often consumed immediately, Having the decoded ioctl immediately readable without post-processing is valuable. In normal operation, this code is a no-op and does not affect the ioctl path at all, only when debug flags are explicitly enabled. As such, both are infrequent. > Also this is mislabeled as utils, but this patch is all kernel code, zero utils? Yes, Agree. Should have been libcfs and not utils.
Oleg Drokin
debug logs are not consumed immediately. They are stored in a binary buffer (to save on processing that's alredy expensive as it is without adding any additional formatted prints) and usually are never read. When they ARE read, you are using either lctl debug_kernel command that reads the buffer, interprets the binary data, sorts it and then outputs. Or you are using something like debug_daemon that writes the binary buffers to a file that you are then passing through something like lctl debug_file that again does the pretty formatting from binary dumps, sorts and outputs the result. The third path is you have something trigger a debug log dump (dump_on_xxx like a timeout or eviction or whataver) and then you are going to process it with lctl debug_file too. I am not aware of anything that would just look into the raw binary dumps of the logs, what's the usecase I am missing?
Arshad Hussain
I Agree. Lustre debug logs are not plain text - they are binary buffers. You're right - for normal Lustre debug consumption, this belongs in userspace. Will move it to userspace.
Andreas Dilger
Oleg, is the objection to this patch based on the use of an on-stack buffer? I don't see the harm in making the debug logs more readable, and decoding these numbers is always annoying. IMHO, it would be relatively safe to return the symbolic ioctl name with a static buffer to the caller, to avoid the on-stack allocation, then it would have zero impact unless `D_VFSTRACE` debugging is enabled. The risk is low of many threads calling ioctls at the same time, and if that happens it would typically be the same ioctl, and the numeric value is still in the log in case of confusion.
Oleg Drokin
the objection is extra processing at log time. I'd rather the processing is to shift to lctl dk/df time. Same usability as this patch, less actual runtime overhead in the kernel. D_IOCTL is in the default debug mask. But I guess I missed that we also have CERROR where the message is output straight into the kernel console log. there's whole one place like that in lustre/lmv/lmv_obd.c
Andreas Dilger
I don't think ioctl() calls are in a performance critical path anywhere? The `cmd2ioctl()` function is not called if the CDEBUG() mask is not set, so this adds no overhead in that case. In general default debug masks are not set if they are in any common code paths, so I don't think this will add any measurable runtime overhead. My preference would be to have this inline in the debug logs rather than having to do it in post-processing.
reply Andreas Dilger module.c:414 — (minor) this should be changed to print %x regardless, since decoding the decimal value by hand is ugly
Andreas Dilger
(minor) this should be changed to print %x regardless, since decoding the decimal value by hand is ugly
owner Arshad Hussain · uploader Andreas Dilger · PS7 uploaded 160d ago · NEW · open in Gerrit ↗
commit message
LU-19888 libcfs: filter & print ioctl() request with full command
Currently, D_IOCTL debug just prints full command integer number.
This patch filters out ioctl integer number to IORW string and
adds to the the debug log for easy debug log reading.
This patch introduces no functional changes to ioctl() handling.
Before:
$ lfs osts
(dir.c:1991:ll_dir_ioctl()) VFS Op:inode=[0x200000007:0x1:0x0]
(ffff88800ca1ae10) cmd=800866a8 arg=7ffce147942c
After:
$ lfs osts
(dir.c:1991:ll_dir_ioctl()) VFS Op:inode=[0x200000007:0x1:0x0]
(ffff888033dda790) cmd=800866a8 (_IOR('f', 168, 8)) arg=7fff3073ab4c
Test-Parameters: trivial
Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com>
Change-Id: I18d0e85855a2de5a348da3df2e86bce4067ee11f
65457
master
J !B ✓T ✓R ✗
LU-1158 idl: introduce struct lu_times for timestamp grouping
reviewing Sohei Koyama · CI green — awaiting your review (CR -1 first)
CR -1
stalled 148d
M +56 −32
148d
LU-1158 idl: introduce struct lu_times for timestamp grouping
reviewing Sohei Koyama · CI green — awaiting your review (CR -1 first)
CR -1
stalled 148d
M +56 −32
148d
CI green — awaiting your review (CR -1 first)
blocked on the owner: Sohei Koyama voted -1
janitor run: 1 failing config(s), none unique to this patch — janitor results
build #124267 SUCCESS · tests all Maloo sessions
reviews:
Sohei Koyama -1 · Andreas Dilger +1
no vote yet: Qian Yingjin
patchsets:
PS1 04-22
PS2 04-22
owner Sohei Koyama · uploader Sohei Koyama · PS2 uploaded 196d ago · NEW · open in Gerrit ↗
commit message
LU-1158 idl: introduce struct lu_times for timestamp grouping Group the mtime/atime/ctime triples in struct obdo, struct mdt_body, struct ost_lvb, struct ost_lvb_v1, struct lu_attr and struct cl_attr into a shared struct lu_times. The on-wire order (mtime, atime, ctime) is preserved, so the packed size and offset of each wire structure is unchanged. Existing call sites continue to reference the fields by their original names (e.g. o_mtime, mbo_mtime, lvb_mtime, la_mtime, cat_mtime) via compatibility macros, so this patch is a pure refactor with no behavior change. The motivation is to prepare the tree for the nanosecond timestamp conversion in LU-1158 by making per-field changes mechanical: later patches can introduce helpers that operate on struct lu_times and swap sec->ns handling in a single place instead of across dozens of call sites, which keeps conflict surface small and each patch reviewable. Test-Parameters: trivial Signed-off-by: Sohei Koyama <skoyama@ddn.com> Change-Id: I3e7975c12448ecc7f5e67e83bbe19241bebf0d20
64124
master
J !B ✓T ✓R ✗
LU-15174 utils: use libyaml for llog YAML record parsing
reviewing Sohei Koyama · CI green — awaiting your review (needs rebase, CR -1 first)
needs rebaseCR -1
stalled 149d
3 unresolved
M +124 −93
149d
LU-15174 utils: use libyaml for llog YAML record parsing
reviewing Sohei Koyama · CI green — awaiting your review (needs rebase, CR -1 first)
needs rebaseCR -1
stalled 149d
3 unresolved
M +124 −93
149d
CI green — awaiting your review (needs rebase, CR -1 first)
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; Sohei Koyama voted -1
janitor run: 3 failing config(s), none unique to this patch — janitor results
5 optional test failure(s) — informational
build #121980 SUCCESS · tests all Maloo sessions
reviews:
Sohei Koyama -1
patchsets:
PS1 02-19
PS2 02-19
PS3 02-21
PS4 02-21
PS5 02-27
threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger obd.c:57 — (style) This should be up below "units.h". Headers should be in order of:
Andreas Dilger
(style) This should be up below "units.h". Headers should be in order of: - system - standard - lustre and alphabetical within each section. As such, the lustre_disk.h inclusion should be moved after lustre_cfg.h, and limits.h should also be moved up after getopt.h.
reply Andreas Dilger obd.c:3327 — It seems inefficient to initialize and run a yaml parser for every line of text just to find a string, and possibly multiple times per line
Andreas Dilger
It seems inefficient to initialize and run a yaml parser for every line of text just to find a string, and possibly multiple times per line if there are multiple values. Something like `strstr(record, key)` to find the key, check for and skip the following `:` and whitespace and optional quote, then continue until trailing quote (if quoted) or next whitespace (if unquoted) before copying into the return value buffer. That is executing a few lines of code vs. probably 1000 LOC using the libyaml parser to do this.
reply Andreas Dilger obd.c:6013 — Is seems super inefficient to call yaml_llog_get_value() three times in this function to just extract three strings from a line of text.
Andreas Dilger
Is seems super inefficient to call yaml_llog_get_value() three times in this function to just extract three strings from a line of text.
owner Sohei Koyama · uploader Sohei Koyama · PS5 uploaded 250d ago · NEW · open in Gerrit ↗
commit message
LU-15174 utils: use libyaml for llog YAML record parsing Replace hand-rolled strstr/sscanf parsing in lustre/utils/obd.c with libyaml to handle both quoted and unquoted YAML scalar values transparently. This prepares for a follow-up patch that adds proper YAML quoting to kernel-side llog output (class_config_yaml_output). The current string-based parsing in llog_poollist_cb() is fragile: it relies on exact character offsets and spacing that break when the output format changes. The libyaml event-based parser handles both plain and quoted scalars without any format assumptions. Add yaml_llog_get_value() helper that extracts a value for a given key from a YAML flow mapping record, following the pattern already used in lustre_cfg.c:yaml_get_limit_uid(). Test-Parameters: testlist=conf-sanity Signed-off-by: Sohei Koyama <skoyama@ddn.com> Change-Id: I2881a418b55f753591245b509d92d221ac39412a
62716
master
J !B ✓T ✓R ✗
LU-18141 mgs: don't check for NULL before free'ing
reviewing Timothy Day · CI green — awaiting your review (CR -1 first)
CR -1
stalled 201d
3 unresolved
XS +3 −5
201d
LU-18141 mgs: don't check for NULL before free'ing
reviewing Timothy Day · CI green — awaiting your review (CR -1 first)
CR -1
stalled 201d
3 unresolved
XS +3 −5
201d
CI green — awaiting your review (CR -1 first)
blocked on the owner: Timothy Day voted -1
janitor run: 3 failing config(s), none unique to this patch — janitor results
1 optional test failure(s) — informational
build #118957 SUCCESS · tests all Maloo sessions
reviews:
Arshad Hussain +1 · Andreas Dilger +1 · Timothy Day -1
threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger patchset comment — I have a similar concern as Oleg about using `ksize()` only in `OBD_FREE*()` since that might be the _object_ size and may be larger than th
Oleg Drokin
I am somewhat uneasy about these changes even if they appear to work now.
Timothy Day
The real fix IMHO is to make OBD_FREE() not accept a size argument. Size isn't needed. The allocator should know how big the pointer is already. We could use ksize(), for example.
Oleg Drokin
the only reason we had the size argument so we can sidestep the allocator and have our own accounting of what was allocated/freed, so we can display our own statistic of memory use and of suspected leaks (but it's not foolproof too!). Alternative would be storing the size somewhere? (how much can we trust ksize to be exact?_ If we thing current in-kernel allocator is good enough we can probably do away with a lot of this functionality.
Timothy Day
kmalloc itself uses ksize (or rather, the internal version of the same function). We don't need to store the size anywhere. If you look at the implementations:
```
#define OBD_FREE_PTR(ptr) OBD_FREE(ptr, sizeof(*(ptr)))
#define OBD_FREE(ptr, size) \
do { \
if (likely(ptr)) { \
OBD_FREE_PRE(ptr, size, "kfreed"); \
kfree(ptr); \
POISON_PTR(ptr); \
} \
} while (0)
```
We could just redefine `OBD_FREE_PTR` to `OBD_FREE(ptr, ksize(ptr))` and convert everything to `OBD_FREE_PTR`.
Newer kernels (6.12?) have fancy leak detection built-in. But it'll be a while until everyone using Lustre is that up-to-date.
Timothy Day
Interestingly, the upstream kernel is going in the same direction - https://lwn.net/Articles/1062856
Andreas Dilger
I have a similar concern as Oleg about using `ksize()` only in `OBD_FREE*()` since that might be the _object_ size and may be larger than the size that was originally passed to `OBD_ALLOC*()`. If this *always* used `ksize()` for the accounting that would at least be consistent. I would also be OK with getting rid of the built-in memory leak detection and use the kernel detection *IFF* it was wired in to run all the time (at the very minimum during testing) so that we have some chance of keeping the code with no/minimal leaks during operation. Today it is a test failure if there is a memory leak, and while that isn't 100% preventing any leak from landing, at least it is visible during testing and not only after running systems continually for a hundred hours at a customer and trying to debug it.
reply Andreas Dilger mgs_handler.c:874 — @green@whamcloud.com, I'm not sure what your concern is here? The `OBD_FREE*()` macros are all checking if `ptr` is non-NULL, and since the
Oleg Drokin
hm... is this really correct? What if some compilers decide to calculate the lcfg->XXX arguments first? (e.g. imagine OBD_FREE is a function - then this must be calculated before we jump in)
Andreas Dilger
@green@whamcloud.com, I'm not sure what your concern is here? The `OBD_FREE*()` macros are all checking if `ptr` is non-NULL, and since they are macros, the `size` argument cannot be evaluated until after that happens:
```
#define OBD_FREE(ptr, size) \
do { \
if (likely(ptr)) { \
OBD_FREE_PRE(ptr, size, "kfreed"); \
kfree(ptr); \
POISON_PTR(ptr); \
} \
} while (0)
```
`lustre_cfg_len()` value definitely needs to be calculated before the memory is freed, or it would be dereferencing freed memory. That is also OK because `size` is only used *before* the memory is freed, and not afterward.
reply Oleg Drokin mgs_nids.c:528 — similar concern here.
Oleg Drokin
similar concern here.
owner Timothy Day · uploader Timothy Day · PS1 uploaded 343d ago · NEW · open in Gerrit ↗
commit message
LU-18141 mgs: don't check for NULL before free'ing The common free'ing macros already check for NULL, so we don't need to explicitly check this beforehand. The patch has been generated with the coccinelle script below. @@ expression E; @@ - if (E != NULL) ( OBD_FREE_PTR(E); | OBD_FREE(E, ...); | LIBCFS_FREE(E, ...); | CFS_FREE_PTR(E); | CFS_FREE_PTR_ARRAY(E, ...); ) Test-Parameters: trivial Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: Ie6ae568738264444be9703e856254a0470e85f7b
61836
b2_15
J !B ✓T ✓R +1/1
LU-16335 mdt: skip target check for rm_entry
reviewing Etienne AUJAMES · CI green — awaiting your review
stalled 203d
M +42 −17
203d
LU-16335 mdt: skip target check for rm_entry
reviewing Etienne AUJAMES · CI green — awaiting your review
stalled 203d
M +42 −17
203d
janitor run: 1 failing config(s), none unique to this patch — janitor results
build #123904 SUCCESS · tests all Maloo sessions
reviews:
Lai Siyao +1
no vote yet: Qian Yingjin, Andreas Dilger
patchsets:
PS1 10-15
PS2 10-16
PS3 10-17
PS4 04-14
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS4 uploaded 204d ago · NEW · backport · open in Gerrit ↗
commit message
LU-16335 mdt: skip target check for rm_entry For "lfs rm_entry", target may not exist, sanity check of it may fail thus causes rm_entry fail. Add sanity 832. Lustre-commit: ae98c5fdaaf37daeb328b7110cbcf42754752c9d Lustre-change: https://review.whamcloud.com/49329 Signed-off-by: Lai Siyao <lai.siyao@whamcloud.com> Change-Id: I824c7581af05c7494cf03c0c9bc999ca1abfec01 Reviewed-by: Andreas Dilger <adilger@whamcloud.com> Reviewed-by: Qian Yingjin <qian@ddn.com> Reviewed-by: James Simmons <jsimmons@infradead.org> Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
63255
master
J ✗8B ✓T ✓R -1/2−
LU-17000 lnet: refactor lnet_net_show_dump
reviewing Patrick Farrell · CI green — awaiting your review (needs rebase first)
needs rebase
stalled 250d
1 unresolved
L +260 −230
250d
LU-17000 lnet: refactor lnet_net_show_dump
reviewing Patrick Farrell · CI green — awaiting your review (needs rebase first)
needs rebase
stalled 250d
1 unresolved
L +260 −230
250d
CI green — awaiting your review (needs rebase first)
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity-quota@zfs+DNE:test_12b | seen in 19 other reviews |
| sanity-quota@zfs+DNE:test_17 | seen in 23 other reviews |
| sanity-quota@zfs+DNE:test_25 | seen in 17 other reviews |
| sanity-quota@zfs+DNE:test_33 | seen in 23 other reviews |
| sanity-quota@zfs+DNE:test_34 | seen in 23 other reviews |
| sanity-quota@zfs+DNE:test_37 | seen in 23 other reviews |
| sanity-quota@zfs+DNE:test_38 | seen in 23 other reviews |
| sanity-sec@zfs:test_25b | seen in 31 other reviews |
4 optional test failure(s) — informational
build #120343 SUCCESS · tests all Maloo sessions
no vote yet: Arshad Hussain, Chris Horn, Andreas Dilger
patchsets:
PS1 01-06
PS2 01-12
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Chris Horn COMMIT_MSG:28 — This patch could run with `Test-Parameters: trivial` if it is refreshed.
Chris Horn
This patch could run with `Test-Parameters: trivial` if it is refreshed.
owner Patrick Farrell · uploader Patrick Farrell · PS2 uploaded 295d ago · NEW · open in Gerrit ↗
commit message
LU-17000 lnet: refactor lnet_net_show_dump Refactor lnet_net_show_dump() to improve readability and reduce function size from ~360 lines to ~160 lines. Changes: - Add lnet_ni_dump_ctx struct to hold shared dump state - Extract lnet_ni_dump_one_msg_stats() helper for message stats (send/recv/drop) - eliminates code duplication - Extract lnet_ni_dump_health_stats() helper for health statistics - Extract lnet_ni_dump_tunables() helper for net tunables - Extract lnet_ni_format_cpts() helper for CPT list formatting with proper buffer overflow checking - Extract lnet_ni_dump_extended() to handle all verbosity-dependent NI dumping with linear control flow instead of goto-based skipping The refactoring eliminates goto labels (skip_msg_stats, skip_udsp) by restructuring the verbosity-based logic into clear conditional blocks. Signed-off-by: Patrick Farrell <pfarrell@whamcloud.com> Change-Id: I210f78fdf201a416f16733bc5ba4afdf45e92065
59657
master
J !B ✓T ✓R -1/2−
LU-19094 mdt: Use a new generic mti big buffer to get pfid
reviewing Vandana Rungta · CI green — awaiting your review (needs rebase first)
needs rebase
stalled 250d
10 unresolved
M +65 −102
250d
LU-19094 mdt: Use a new generic mti big buffer to get pfid
reviewing Vandana Rungta · CI green — awaiting your review (needs rebase first)
needs rebase
stalled 250d
10 unresolved
M +65 −102
250d
CI green — awaiting your review (needs rebase first)
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
janitor run: 2 failing config(s), none unique to this patch — janitor results
3 optional test failure(s) — informational
build #118527 SUCCESS · tests all Maloo sessions
no vote yet: Shaun Tancheff, Neil Brown, Timothy Day
patchsets:
PS8 07-28
PS9 07-28 Janitor Bot
PS10 07-28
PS11 10-07
PS12 11-13
+7 earlier
PS1 06-09 PS2 06-09 PS3 06-09 PS4 06-09 PS5 06-17 PS6 06-18 PS7 07-28threads: 10 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Vandana Rungta mdt_handler.c:1255 — Abusing big_lov did seem like a very obscure case and would require pfid or pfid_name to be larger than 128 bytes in the current code. The
Shaun Tancheff
I am not entirely convinced the LASSERT() is failing to do the job of verify the extra big_lov is not abused.
Also adding an extra alloc/free for every pass ... possibly would it be better to add another generic buffer to: struct mdt_thread_info {} ?
Vandana Rungta
Abusing big_lov did seem like a very obscure case and would require pfid or pfid_name to be larger than 128 bytes in the current code. The intention for the change is to prevent future unintended use. Seemed like an unlikely event that pfid or pfid_name does not fit in 128 bytes. The extra alloc and free is only if the xattr was greater than 128 bytes - so I chose not to add another generic buffer. If the size is likely to be greater than 128 bytes, then if would make sense to add another generic buffer.
reply Timothy Day mdt_handler.c:4773 — I see in the first rev, it was in mdt_thread_info_reset(). But this made it so mdt_key_fini() would never find the pointers. Would this also
Timothy Day
Seems like this block should be added to mdt_thread_info_reset()
Vandana Rungta
Right - that was patch 1. Since mdt_thread_info_reset is also called from mdt_batch, would it then end up NULLing these values before the buffers are freed in thread_fini?
Timothy Day
I see in the first rev, it was in mdt_thread_info_reset(). But this made it so mdt_key_fini() would never find the pointers. Would this also cause a memory leak if these weren't freed yet?
reply Vandana Rungta mdt_handler.c:4779 — Thanks Shaun. This does help clarify and makes sense as to why we don't need to initialize those variables.
Shaun Tancheff
LU_KEY_INIT(mdt, struct mdt_thread_info); So info was allocated with __GFP_ZERO, so this is probably not needed and the de-constructor is mdt_key_fini(), so if these are not NULL here then probably memory is leaked? From Documentation/osd-api.txt: A component (like device or library) can register its own descriptor (see LU_KEY_INIT macro) and then every new thread will be populating the environment with buffers described.
Vandana Rungta
The comments on Line 4750-4753 - at the top of xattr_thread_info_init indicated that the info structure is not zeroed. If info was allocated with __GFP_ZERO, then we don't need these changes.
Timothy Day
When mdt_thread_info is first allocated in mdt_key_init() (defined by LU_KEY_INIT), it's OBD_ALLOC_PTR() which has __GFP_ZERO. So it'll be zeroed at first.
Shaun Tancheff
There seems to be some confusion about the lifetime of mdt_thread_info vs mdt_thread_info_init init only resets a minimal amount of the info struct upon each request. mdt_thread_info is not alloc()'d with each call and has a much longer lifetime which is why the buffers prefer to be grown and not free()'d until much later.
Vandana Rungta
Thanks Shaun. This does help clarify and makes sense as to why we don't need to initialize those variables. In the latest patch (patch4) - I've switched to using a generic buffer for pfid and pfid_name.
reply Timothy Day mdt_handler.c:982 — mdt_big_xattr_get() is doing the exact same thing as mdt_big_generic_xattr_get(), except that it changes which buffer is uses depending on t
Misc Code Checks Robot (Gatekeeper helper)
warning: sparse:symbol 'mdt_big_generic_xattr_get' was not declared. Should it be static?
Timothy Day
This warning is valid. Also, there’s some amount of code duplication here with the other xattr fetch function. I wonder if we could avoid that by using an lu_buf in thread info, and having a common function that accepts info/object/name/lu_buf?
Vandana Rungta
Will fix the warning, was waiting for additional comments before uploading a new patch. While there is some code duplication between mdt_big_generic_xattr_get and mdt_big_xattr_get, there is value to distinguishing between a generic method that does not store the values returned on md_attr, whereas the latter is specific to stripe get, and those attributes can be stored in md_attr. Trying to refactor these to be one routine will be harder to read. The allocated (or reallocated) memory pointers are stored in lu_buf->buf AND pointers off the thread info.
Timothy Day
mdt_big_xattr_get() is doing the exact same thing as mdt_big_generic_xattr_get(), except that it changes which buffer is uses depending on the xattr name. Presumably we could do something like:
int mdt_big_xattr_get(struct mdt_thread_info *info, struct mdt_object *o,
const char *name)
{
struct lu_buf *my_buf;
if (strcmp(name, XATTR_NAME_LMV) == 0) {
my_buf = info->mti_big_lmv_lu_buf;
} else if (strcmp(name, XATTR_NAME_LOV) == 0) {
my_buf = info->mti_big_lov_lu_buf;
} else {
my_buf = info->mti_big_generic_lu_buf;
}
rc = __mdt_big_xattr_get(info, o, my_buf);
return rc;
}
I think that logic would be a lot clearer.
reply Vandana Rungta mdt_handler.c:1001 — mti_big_lov_used, and mti_big_lmv_used are set specifically when we get the stripes associated with XATTR_NAME_LOV or XATTR_NAME_LMV and are
Timothy Day
We never define or check mti_big_generic_used. The other fields have a check like this. I noticed that mti_big_lov_used is set incorrectly. mdt_big_xattr_get() uses mti_big_lov if the xattr is not XATTR_NAME_LMV. But mti_big_lov_used is set if the xattr is XATTR_NAME_LOV. So the xattr is XATTR_NAME_FOOBAR - mti_big_lov will get used but mti_big_lov_used will not get set. We should fix this as well.
Vandana Rungta
mti_big_lov_used, and mti_big_lmv_used are set specifically when we get the stripes associated with XATTR_NAME_LOV or XATTR_NAME_LMV and are subsequently checked. The generic buffer can be used with any "name", and no specific data is saved, so there was no use for mti_big_generic_used.
reply Timothy Day mdt_handler.c:729 — Change the format string instead of casting.
Timothy Day
Change the format string instead of casting.
reply Timothy Day mdt_handler.c:738 — Same.
Timothy Day
Same.
reply Timothy Day mdt_handler.c:1003 — I still think it'd be useful to have an LASSERT(info->mti_big_generic_used == 0).
Timothy Day
I still think it'd be useful to have an LASSERT(info->mti_big_generic_used == 0).
reply Timothy Day mdt_internal.h:571 — They aren't currently, but they probably should be. An lu_buf is just a pointer and a size. A lot of the code handling mti_big_lov/lmv/acl/g
Timothy Day
These could all be lu_buf?
Vandana Rungta
These are not lu_bufs. lu_buf->buf is set to these values after the memory is allocated and pointed to by these fields.
Timothy Day
They aren't currently, but they probably should be. An lu_buf is just a pointer and a size. A lot of the code handling mti_big_lov/lmv/acl/generic seems to be reimplementing lu_buf methods for no reason.
owner Vandana Rungta · uploader Vandana Rungta · PS12 uploaded 355d ago · NEW · open in Gerrit ↗
commit message
LU-19094 mdt: Use a new generic mti big buffer to get pfid Added new generic big buffer, and use that when getting pfid and pfid_name, to avoid any potential overwrite conflicts since the big lov and big lmv buffers are saved in mdt_attr pointers. Refactored the code to use lu_buf in thread info instead of using mti_big_*, and mti_big_*size. This allows using the lu_buf methods to allocate and free. Signed-off-by: Vandana Rungta <vrungta@amazon.com> Change-Id: I8b3922c5409138db872b4819b2c4e7023613dd56
63139
master
J ✗1B ✓T ✓R ✗
LU-9641 mdt: Add kernel doc style for MDT (4)
reviewing Arshad Hussain · CI green — awaiting your review (CR -1 first)
CR -1
dwg
stalled 273d
1 unresolved
L +158 −148
273d
LU-9641 mdt: Add kernel doc style for MDT (4)
reviewing Arshad Hussain · CI green — awaiting your review (CR -1 first)
CR -1
dwg
stalled 273d
1 unresolved
L +158 −148
273d
CI green — awaiting your review (CR -1 first)
blocked on the owner: Arshad Hussain voted -1
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity-sec@zfs:test_25b | seen in 12 other reviews |
build #119975 SUCCESS · tests all Maloo sessions
reviews:
Arshad Hussain -1 · Anjus George +1
no vote yet: Andreas Dilger, Timothy Day
patchsets:
PS1 12-22
PS2 12-22
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Arshad Hussain mdt_handler.c:1771 — Oh, no this is not correct.
James Simmons
Is the '<' correct?
Arshad Hussain
Oh, no this is not correct.
owner Arshad Hussain · uploader Arshad Hussain · PS2 uploaded 317d ago · NEW · open in Gerrit ↗
commit message
LU-9641 mdt: Add kernel doc style for MDT (4) This patch converts existing functional comments to kernel doc style comments and removes '/**' for comments which is not meant to be a kernel-doc comment Test-Parameters: trivial Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Change-Id: I2673917fc660ba8ec7d5b9ed63376c3f882c83dc
61818
b2_15
J ✗5B ✓T ✓R +1/1
LU-18595 osd-ldiskfs: use local fake file for iteration
reviewing Etienne AUJAMES · CI green — awaiting your review
stalled 292d
M +82 −32
292d
LU-18595 osd-ldiskfs: use local fake file for iteration
reviewing Etienne AUJAMES · CI green — awaiting your review
stalled 292d
M +82 −32
292d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity1@zfs:test_24a | seen in 1 other review |
| conf-sanity1@zfs:test_24b | seen in 1 other review |
| recovery-small@ldiskfs+DNE:test_18c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| replay-single2@ldiskfs+DNE:test_100a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanityn@zfs:test_51c | seen in 2 other reviews |
2 optional test failure(s) — informational
build #117877 SUCCESS · tests all Maloo sessions
reviews:
Andrew Perepechko +1
no vote yet: Alexander Boyko, Andreas Dilger
patchsets:
PS1 10-14
PS2 10-16
PS3 10-24
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS3 uploaded 376d ago · NEW · backport · open in Gerrit ↗
commit message
LU-18595 osd-ldiskfs: use local fake file for iteration
LU-13783 introduced the alloc_file_pseudo() for directory iteration.
It leads to many file descriptors for a kernel and a special
logic to drop it LU-16973.
One of the reason of alloc_file_pseudo() was a security_alloc() call.
However we could initialize iteration like kernel and skip
security checks for a pseudo files.
Lustre-change: https://review.whamcloud.com/57574
Lustre-commit: 642009da4e03a7f56694a368a7e4ea3584428e02
HPE-bug-id: LUS-12253
Fixes: b0f150eba4c2 ("LU-13783 osd-ldiskfs: use alloc_file_pseudo to create fake files")
Signed-off-by: Alexander Boyko <alexander.boyko@hpe.com>
Change-Id: I67d95d84913520b088578923841065e5b1d8b6df
Reviewed-by: Andrew Perepechko <andrew.perepechko@hpe.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
60585
b2_15
J ✗7B ✓T ✓R 0/1
LU-17848 osd-zfs: remove osd_ladvise()/falloc()
reviewing Dominique Martinet · CI green — awaiting your review
stalled 373d
M +14 −50
373d
LU-17848 osd-zfs: remove osd_ladvise()/falloc()
reviewing Dominique Martinet · CI green — awaiting your review
stalled 373d
M +14 −50
373d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity1@zfs:test_27cc | seen in 2 other reviews |
| sanity1@zfs:test_27ce | seen in 2 other reviews |
| sanity-lfsck@ldiskfs+DNE:test_11b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-pfl@ldiskfs+DNE:test_21b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-pfl@ldiskfs+DNE:test_23e | seen in 3 other reviews |
| sanity-pfl@zfs:test_20a | seen in 8 other reviews |
| sanity-pfl@zfs:test_20b | seen in 2 other reviews |
build #117935 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Oleg Drokin
patchsets:
PS1 08-07
PS2 10-24 Etienne AUJAMES
owner Dominique Martinet · uploader Etienne AUJAMES · PS2 uploaded 376d ago · NEW · backport · open in Gerrit ↗
commit message
LU-17848 osd-zfs: remove osd_ladvise()/falloc() These are implemented as stub functions that return EOPNOTSUPP. Remove the functions and add a check in the corresponding dt functions instead. Test-Parameters: trivial Test-Parameters: trivial fstype=zfs Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: I6fad0a9ca8b07e3d09701e71773dc896a3845b9e Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/55608 Tested-by: jenkins <devops@whamcloud.com> Tested-by: Maloo <maloo@whamcloud.com> Reviewed-by: Andreas Dilger <adilger@whamcloud.com> Reviewed-by: James Simmons <jsimmons@infradead.org> Reviewed-by: Oleg Drokin <green@whamcloud.com> Lustre-change: https://review.whamcloud.com/55608 Lustre-commit: f1b39460a4712aa670567c8204b943f4423e6126 Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
57768
b2_15
J ✗8B ✓T ✓R 0/1
LU-16973 osd: adds SB_KERNMOUNT flag
reviewing Etienne AUJAMES · CI green — awaiting your review
stalled 373d
S +19 −0
373d
LU-16973 osd: adds SB_KERNMOUNT flag
reviewing Etienne AUJAMES · CI green — awaiting your review
stalled 373d
S +19 −0
373d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity2@ldiskfs+DNE:test_49a | seen in 3 other reviews |
| replay-single1@zfs:test_90 | seen in 1 other review |
| sanity2@ldiskfs+DNE:test_64e | seen in 7 other reviews |
| sanity2@ldiskfs+DNE:test_64f | seen in 7 other reviews |
| sanity-pfl@ldiskfs+DNE:test_20c | seen in 1 other review |
| sanity-quota@zfs:test_13 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@zfs:test_52 | seen in 1 other review |
| sanity-sec@zfs:test_59b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
1 optional test failure(s) — informational
build #117873 SUCCESS · tests all Maloo sessions
no vote yet: Andrew Perepechko, Alexander Boyko, Andreas Dilger, Neil Brown
patchsets:
PS1 01-15
PS2 10-16
PS3 10-24
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS3 uploaded 376d ago · NEW · backport · open in Gerrit ↗
commit message
LU-16973 osd: adds SB_KERNMOUNT flag During umount mntput() is called. It uses delayed_mntput() function, and it could take much time to finish. A block device is occupied during delayed work. [ 8753.941980] Lustre: server umount XXX complete [ 8800.129136] sysrq: SysRq : Trigger a crash PID: 319306 TASK:XXXX CPU: 2 COMMAND: "kworker/2:0" #0 __schedule at ffffffff9754e1d4 #1 preempt_schedule_common at ffffffff9754e6fa #2 _cond_resched at ffffffff9754e72d #3 invalidate_mapping_pages at ffffffff96e72da5 #4 invalidate_bdev at ffffffff96f5d13c #5 ldiskfs_put_super at ffffffffc1c82e34 [ldiskfs] #6 generic_shutdown_super at ffffffff96f1bdcc #7 kill_block_super at ffffffff96f1bed1 #8 deactivate_locked_super at ffffffff96f1b784 #9 cleanup_mnt at ffffffff96f3b86b Let's use SB_KERNMOUNT flag during mount, it leads to synchronous mntput(). It also calls flush_delayed_fput during umount to finish delayed fput. Lustre-change: https://review.whamcloud.com/51731 Lustre-commit: eff11c8ce1f89f30dcc5af88b67b3d6c15a631a6 HPE-bug-id: LUS-11629 Signed-off-by: Alexander Boyko <alexander.boyko@hpe.com> Change-Id: Ia6729f6cbac85c3626562e946a4b96665a143714 Reviewed-by: Andrew Perepechko <andrew.perepechko@hpe.com> Reviewed-by: Andreas Dilger <adilger@whamcloud.com> Reviewed-by: James Simmons <jsimmons@infradead.org> Reviewed-by: Neil Brown <neilb@suse.de> Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
10038
master
J ✗5B ✓T ✓R -1/2−
LU-4801 ldlm: use mutex instead of spinlock on server side resources
reviewing Oleg Drokin · CI green — awaiting your review
stalled 456d
2 unresolved
S +24 −4
456d
LU-4801 ldlm: use mutex instead of spinlock on server side resources
reviewing Oleg Drokin · CI green — awaiting your review
stalled 456d
2 unresolved
S +24 −4
456d
janitor flagged test failures unique to this patch — superseded (tests have since passed)
| unique failing test | history |
|---|---|
| sanity2@ldiskfs+DNE:test_63a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_63b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_64a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_64c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@ldiskfs+DNE:test_64d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
build #6747 SUCCESS
reviews:
Andreas Dilger -1
no vote yet: Neil Brown, Vitaly Fertman, Alex Zhuravlev
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger lustre_dlm.h:995 — Should lr_mutex and lr_lock be a union? Either we are confident that only one will be used at a time, or we have a bigger problem that they
Andreas Dilger
There is also lr_lvb_mutex, do we need two separate mutex for the same resource? A mutex is 32 bytes vs. only 4 bytes for a spinlock.
Andreas Dilger
Should lr_mutex and lr_lock be a union? Either we are confident that only one will be used at a time, or we have a bigger problem that they will not provide exclusion if different threads on the same node will be using different locks for the same resource.
reply Andreas Dilger ldlm_resource.c:1489 — (style) extra space before "="
Andreas Dilger
(style) extra space before "="
owner Oleg Drokin · uploader Oleg Drokin · PS4 uploaded 2671d ago · NEW · open in Gerrit ↗
commit message
LU-4801 ldlm: use mutex instead of spinlock on server side resources Since server side processing of resources during granting is potentially very cpu-intensive, it well might be that spinlock is improper choice and by using mutex we allow other threads to do something useful instead. Change-Id: I05129f07d32914ce68c30416f71ab92a4c581c53 Signed-off-by Oleg Drokin <oleg.drokin@intel.com>
40125
master
J ✗1B ✓T ✓R +0/2−
LU-12682 llite: make undeletable property generic
reviewing Bruno Faccini · CI green — awaiting your review
stalled 456d
L +358 −180
456d
LU-12682 llite: make undeletable property generic
reviewing Bruno Faccini · CI green — awaiting your review
stalled 456d
L +358 −180
456d
janitor flagged test failures unique to this patch — superseded (tests have since passed)
| unique failing test | history |
|---|---|
| sanity2@zfs:test_63a | seen in 5 other reviews |
2 optional test failure(s) — informational
build #16915 SUCCESS
reviews:
Patrick Farrell (personal) -1 · Andreas Dilger +1
no vote yet: Qian Yingjin, Neil Brown, Peter Jones
owner Bruno Faccini · uploader Bruno Faccini · PS3 uploaded 2214d ago · NEW · open in Gerrit ↗
commit message
LU-12682 llite: make undeletable property generic As part of Gerrit change #35856 foreign symlink files/dirs had the property of being undeletable using unlink/rmdir, in order to avoid losing reference to external objects by mistake. This patch makes this property generic and available to any Lustre file/dir. Signed-off-by: Bruno Faccini <bruno.faccini@intel.com> Change-Id: I252ac6edba506b3f866c74cdd7b90ae6747adaf2
43985
master
J ✓B ✓T ✓R 0/2
LU-14758 ptlrpc: add timer for distributed transactions
reviewing Lai Siyao · CI green — awaiting your review
stalled 456d
M +130 −25
456d
LU-14758 ptlrpc: add timer for distributed transactions
reviewing Lai Siyao · CI green — awaiting your review
stalled 456d
M +130 −25
456d
build #81485 SUCCESS · tests all Maloo sessions
no vote yet: Wang Shilong, Andreas Dilger, Hongchao Zhang
owner Lai Siyao · uploader Lai Siyao · PS4 uploaded 1962d ago · NEW · open in Gerrit ↗
commit message
LU-14758 ptlrpc: add timer for distributed transactions
Add a timer "tdtd_timer" for distributed transactions, if a
distributed transaction doesn't commit in time (3 * OBD_TIMEOUT),
dump the transaction to console to help understand what went wrong.
Besides, if a committed distributed transaction failed to get
canceled, also print warning on console.
Add a tunable to dump the first distributed transaction to console:
"lctl set_param mdt.<MDTDEV>.distribute_txn_dump=1"
Signed-off-by: Lai Siyao <lai.siyao@whamcloud.com>
Change-Id: Ifa9a56ed031d9e12658743200108631441e16f7b
46857
master
J !B ✓T ✓R 0/2
LU-15656 sec: deprecate legacy root squash
reviewing Sebastien Buisson · CI green — awaiting your review
stalled 456d
4 unresolved
M +74 −1
456d
LU-15656 sec: deprecate legacy root squash
reviewing Sebastien Buisson · CI green — awaiting your review
stalled 456d
4 unresolved
M +74 −1
456d
janitor run: 1 failing config(s), none unique to this patch — janitor results
3 optional test failure(s) — informational
build #96535 SUCCESS · tests all Maloo sessions
no vote yet: Etienne AUJAMES, Andreas Dilger, Patrick Farrell
patchsets:
PS6 04-17
PS7 06-29
PS8 06-30
PS9 07-03
PS10 07-31
+5 earlier
PS1 03-17 PS2 03-17 PS3 03-18 PS4 10-07 Andreas Dilger PS5 10-07 Andreas Dilgerthreads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger conf-sanity.sh:3677 — (style) prefer (( ... )) for numeric comparisons
Andreas Dilger
(style) prefer (( ... )) for numeric comparisons
reply Andreas Dilger conf-sanity.sh:3867 — (style) prefer (( ... ))
Andreas Dilger
(style) prefer (( ... ))
reply Sebastien Buisson conf-sanity.sh:3674 — We do. See for instance sanity-sec test_15 and test_17.
Andreas Dilger
Do we have equivalent nodemap-based root squash tests somewhere? It would also be useful to update the LOM to indicate that this set_param/conf_param mechanism is deprecated and to use nodemap instead (preferably referencing a section that explains the details of how to do it).
Sebastien Buisson
We do. See for instance sanity-sec test_15 and test_17. Regarding LOM, let's discuss in dedicated patch #46740.
reply Sebastien Buisson conf-sanity.sh:3925 — It makes sense, I will add this fail_loc and update the test.
Patrick Farrell
Is it possible to create a test to test that we can still modify legacy root squash settings? Perhaps using a fail_loc to disable the new check? I get this slight nervous feeling testing only one direction that we might break this in some distant future :)
Patrick Farrell
To be clear 'using a fail loc to disable the new check' so we can create the legacy setting for testing
Sebastien Buisson
It makes sense, I will add this fail_loc and update the test.
owner Sebastien Buisson · uploader Sebastien Buisson · PS10 uploaded 1192d ago · NEW · open in Gerrit ↗
commit message
LU-15656 sec: deprecate legacy root squash The legacy root squash mechanism relies on 2 parameters: - the root_squash parameter specifies the UID and GID to which the root user is squashed when accessing the Lustre file system; - the nosquash_nids parameter specifies the set of clients to which root squash does not apply. This legacy mechanism has become redundant with the ability provided by the nodemap feature to implement root squash, in a much more flexible way. Sor for new file systems, prevent setting the root_squash and nosquash_nids parameters. For upgraded file systems, maintain the ability to change the already set values. Signed-off-by: Sebastien Buisson <sbuisson@ddn.com> Change-Id: I439f2ad2272592da73066c7f8edf8b7a360a2286
51899
master
J !B ✓T ✓R -1/2−
LU-17022 obdclass: start converting obd flags to a bitmap
reviewing Neil Brown · CI green — awaiting your review
stalled 456d
1 unresolved
L +155 −134
456d
LU-17022 obdclass: start converting obd flags to a bitmap
reviewing Neil Brown · CI green — awaiting your review
stalled 456d
1 unresolved
L +155 −134
456d
janitor run: 3 failing config(s), none unique to this patch — janitor results
build #100471 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger -1
no vote yet: Timothy Day
patchsets:
PS1 08-09
PS2 08-09 Andreas Dilger
PS3 11-24
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Aurelien Degremont obd_config.c:806 — spin_unlock() without spin_lock()?
Aurelien Degremont
spin_unlock() without spin_lock()?
owner Neil Brown · uploader Neil Brown · PS3 uploaded 1076d ago · NEW · open in Gerrit ↗
commit message
LU-17022 obdclass: start converting obd flags to a bitmap struct obd_device has multiple single-bit flags. This usage is not normal in Linux and requires a spinlock when there is any chance of concurrent access. This makes access from bh or irq context awkward as all spinlock need to be protected. It is more normal to declare an unsigned long, or a bitmap, and use set_bit, clear_bit, test_bit, etc. This patch starts the process with obd_attached and obd_set_up becoming flags OBDF_ATTACHED and OBDF_SET_UP. In one case test is followed by setting the flag to zero. This is now done with test_and_clear_bit(), so the lock isn't needed. Test-Parameters: trivial Signed-off-by: Mr NeilBrown <neilb@suse.de> Change-Id: Id9a5c323cf088bf2cf4f94c8e81739053c959e8f
52946
master
J !B ✓T ✓R 0/2
LU-17242 debug: CDEBUG performance testing
reviewing Timothy Day · CI green — awaiting your review
stalled 456d
3 unresolved
M +109 −2
456d
LU-17242 debug: CDEBUG performance testing
reviewing Timothy Day · CI green — awaiting your review
stalled 456d
3 unresolved
M +109 −2
456d
janitor run: 3 failing config(s), none unique to this patch — janitor results
build #102462 SUCCESS · tests all Maloo sessions
no vote yet: Alexey Lyashkov, Andreas Dilger
patchsets:
PS6 11-07
PS7 11-07
PS8 11-08
PS9 02-24
PS10 02-25
+5 earlier
PS1 11-02 PS2 11-03 PS3 11-03 PS4 11-06 PS5 11-07threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Timothy Day debug_perf.c:35 — I was thinking about adding the timing check to the kunit test itself i.e. returning a KUNIT_FAIL() when things take too long.
Andreas Dilger
It would probably be useful to grab the time at the start, and add a single CWARN() at the end that prints the number of loops and elapsed time, so that this is useful even without kunit?
Timothy Day
I was thinking about adding the timing check to the kunit test itself i.e. returning a KUNIT_FAIL() when things take too long.
reply Andreas Dilger debug_perf.c:41 — Yes, the CDEBUG() macro is not evaluating the format string unless the message will actually be saved/printed (the cfs_cdebug_show() check b
Andreas Dilger
Good that you have added this in. Back in the day we were even looking at printing the CDEBUG messages without any printk formatting (doing *all* of the binary->ASCII conversion in "lctl" when the debug log was converted/sorted) because the number formatting itself was showing on the CPU profiles. That effort was abandoned because tracking the printk formats vs. the binary dump was too complex to get right in the end, but it is still useful to understand the performance overhead of this.
Timothy Day
The performance overhead of formatting seems huge. I ran this test with 1 billion statements. It took about 3 minutes 40 seconds with current debugging. It took the same amount of time with the most recent rev of my tracing patch (which still uses printf formatting). If you remove that single printf and have the tracepoint output a string literal, outputting 1 billions statements takes 0.5 seconds. The upstream implementation of trace_printk has some clever tricks to avoid useless formatting. We should be able to take advantage of that to get real performance improvements without any huge refactors.
Andreas Dilger
Yes, the CDEBUG() macro is not evaluating the format string unless the message will actually be saved/printed (the cfs_cdebug_show() check before calling libcfs_debug_msg()).
reply Timothy Day sanity.sh:9618 — I should probably restore this afterwards.
Timothy Day
I should probably restore this afterwards.
owner Timothy Day · uploader Timothy Day · PS10 uploaded 983d ago · NEW · open in Gerrit ↗
commit message
LU-17242 debug: CDEBUG performance testing To ensure that performance doesn't degrade from debugging changes, we must test performance. We do this by timing a kernel module. In the future, this test may be converted to use the kunit framework. But that change is far too large for this patch. This test was not added to the test package. I don't expect this test to be generally useful - it serves a very narrow goal. Test-Parameters: trivial Test-Parameters: testlist=sanity env=ONLY=62,ONLY_REPEAT=10,SLOW=yes Test-Parameters: testlist=sanity env=ONLY=62,ONLY_REPEAT=10,SLOW=yes Test-Parameters: testlist=sanity env=ONLY=62,ONLY_REPEAT=10,SLOW=yes Test-Parameters: testlist=sanity env=ONLY=62,ONLY_REPEAT=10,SLOW=yes Test-Parameters: testlist=sanity env=ONLY=62,ONLY_REPEAT=10,SLOW=yes Test-Parameters: testlist=sanity env=ONLY=62,ONLY_REPEAT=10,SLOW=yes Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: I273429b700bae080310994ff5e2a8e5a05b58eb5
53367
master
J ✓B ✓T ✓R +1/2
LU-13031 ofd: add jobid xattr to ost object
reviewing Thomas Bertschinger · CI green — awaiting your review
stalled 456d
2 unresolved
L +242 −115
456d
LU-13031 ofd: add jobid xattr to ost object
reviewing Thomas Bertschinger · CI green — awaiting your review
stalled 456d
2 unresolved
L +242 −115
456d
1 optional test failure(s) — informational
build #104591 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
no vote yet: Mikhail Pershin, Patrick Farrell
patchsets:
PS2 12-19
PS3 01-09
PS4 04-30
PS5 05-01
PS6 05-05
+1 earlier
PS1 12-07threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Thomas Bertschinger sanity.sh:20721 — I thought it made sense to have the OST inode checking be its own test, rather than add it into check_seq_oid(), so that it can easily test
Thomas Bertschinger
I thought it made sense to have the OST inode checking be its own test, rather than add it into check_seq_oid(), so that it can easily test multiple settings for the parameter. Right now I've duplicated the logic of parsing "lfs getstripe" output to get the object's filename -- do you think would it be worthwhile to try to refactor this so that the 2 tests call some common function do to this?
reply Thomas Bertschinger sanity.sh:20756 — does this need "skip parallel run"? I saw that the check_seq_oid() test (27z) has it. I wasn't sure if that's because the usage of "sync" mi
Thomas Bertschinger
does this need "skip parallel run"? I saw that the check_seq_oid() test (27z) has it. I wasn't sure if that's because the usage of "sync" might interfere with other tests, or something.
owner Thomas Bertschinger · uploader Thomas Bertschinger · PS6 uploaded 913d ago · NEW · open in Gerrit ↗
commit message
LU-13031 ofd: add jobid xattr to ost object
This stores the jobid of the process that creates an object in an
extended attribute in the OST inode for that object. The name of the
extended attribute is determined by a new sysfs parameter
"obdfilter.*.job_xattr". The default value is "user.job". A value of
"NONE" means that the jobid will not be stored.
This builds on 23a2db28dcf1 ("LU-13031 jobstats: store jobid in xattr
when files are created"), which stores the jobid in the MDT inode
for the file. Note that the jobid need not be the same on the MDT
inode and the OST inodes, because the process that creates a file
might not be the same process that performs the initial write to a
given stripe.
Signed-off-by: Thomas Bertschinger <bertschinger@lanl.gov>
Change-Id: I9ab1aa394def3869c8d87a252bd9f95962f214f6
41189
master
J ✓B ✓T ✓R ✗
LU-14315 tests: Increase fsx iteration to improve coverage
reviewing Arshad Hussain · CI green — awaiting your review (CR -1 first)
CR -1
stalled 463d
XS +4 −3
463d
LU-14315 tests: Increase fsx iteration to improve coverage
reviewing Arshad Hussain · CI green — awaiting your review (CR -1 first)
CR -1
stalled 463d
XS +4 −3
463d
CI green — awaiting your review (CR -1 first)
blocked on the owner: Arshad Hussain voted -1
build #78653 SUCCESS
reviews:
Arshad Hussain -1 · James Nunez +1 · Andreas Dilger +1
no vote yet: Wang Shilong, Qian Yingjin
owner Arshad Hussain · uploader Andreas Dilger · PS4 uploaded 2122d ago · NEW · open in Gerrit ↗
commit message
LU-14315 tests: Increase fsx iteration to improve coverage Test-suite sanityn.sh test_16* is already running 2500 iterations of fsx. To increase coverage particularly for fallocate() call increase iteration from 2500 to 10000. Although this increases the runtime sightly it also greatly increase the coverage for the fsx runs. Runtime For testcase 16a fstype=ldiskfs --------------------------------------- Iteration:2500 Runtime:150s Iteration:10000 Runtime:350s Runtime For testcase 16a fstype=zfs --------------------------------------- Iteration:500 Runtime:40s Iteration:6000 Runtime:520s Test-Parameters: trivial testlist=sanityn Test-Parameters: fstype=zfs testlist=sanityn Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Change-Id: Idb04b7d52e58c7df56580604ddfefd80f38fc989
59546
b2_15
J !B ✓T ✓R +1/1
LU-17043 enc: fix osd lookup cache for long encrypted names
reviewing Etienne AUJAMES · CI green — awaiting your review
LTS15
stalled 517d
XS +2 −2
517d
LU-17043 enc: fix osd lookup cache for long encrypted names
reviewing Etienne AUJAMES · CI green — awaiting your review
LTS15
stalled 517d
XS +2 −2
517d
janitor run: 1 failing config(s), none unique to this patch — janitor results
1 optional test failure(s) — informational
build #113905 SUCCESS · tests all Maloo sessions
reviews:
Sebastien Buisson +1
no vote yet: Andreas Dilger
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS1 uploaded 518d ago · NEW · backport · open in Gerrit ↗
commit message
LU-17043 enc: fix osd lookup cache for long encrypted names
Fix osd lookup cache to support files with long encrypted names.
Those encrypted names can be up to 256 bytes, not NUL terminated.
Lustre-change: https://review.whamcloud.com/52016
Lustre-commit: e16d5d7d6fb274b22a76fcd5858849215550d4e0
Fixes: 29f8eb2a67 ("LU-16405 osd: lookup cache")
Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Change-Id: Ica2329c8a0990395307a14fe9bb9d43db3b364ed
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
59353
b2_15
J ✓B ✓T ✓R +1/1
LU-16385 obdlcass: stop MGC before MGS
reviewing Etienne AUJAMES · CI green — awaiting your review
stalled 531d
S +8 −4
531d
LU-16385 obdlcass: stop MGC before MGS
reviewing Etienne AUJAMES · CI green — awaiting your review
stalled 531d
S +8 −4
531d
build #113594 SUCCESS · tests all Maloo sessions
reviews:
Alex Zhuravlev +1
no vote yet: Mikhail Pershin
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS1 uploaded 531d ago · NEW · backport · open in Gerrit ↗
commit message
LU-16385 obdlcass: stop MGC before MGS drops a reference to MGC when MGS is being umounted so that MGC doesn't try to disconnected from a missing MGS which can take long and hurt HA. Lustre-change: https://review.whamcloud.com//49378 Lustre-commit: 817184a9788ae399dcd5cf53ae7c9801e4778a43 Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com> Change-Id: Ib15f1ca56c47201bf6e29c12b3f81a11e55944ca Reviewed-by: Mikhail Pershin <mpershin@whamcloud.com> Reviewed-by: James Simmons <jsimmons@infradead.org> Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
53660
b2_15
J ✓B ✓T ✓R 0/1
LU-16235 hsm: check CDT state before adding actions llog
reviewing Etienne AUJAMES · CI green — awaiting your review
stalled 536d
S +24 −12
536d
LU-16235 hsm: check CDT state before adding actions llog
reviewing Etienne AUJAMES · CI green — awaiting your review
stalled 536d
S +24 −12
536d
build #113393 SUCCESS · tests all Maloo sessions
no vote yet: Nikitas Angelinas
patchsets:
PS1 01-12
PS2 01-12
PS3 05-14
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS3 uploaded 538d ago · NEW · backport · open in Gerrit ↗
commit message
LU-16235 hsm: check CDT state before adding actions llog
Don't allow HSM requests to be added to the actions llog when
cdt_state is in CDT_STOPPED/CDT_STOPPING as the CDT is unavailable, or
in CDT_INIT as any HSM requests in the llog may not have been fully
processed and so cdt_last_cookie may not have been set appropriately,
otherwise a colliding cookie value can be reused in
mdt_agent_record_add() and the assertions in
cdt_agent_record_hash_add() can be triggered:
"ASSERTION( carl0->carl_cat_idx == carl1->carl_cat_idx ) failed"
"ASSERTION( carl0->carl_rec_idx == carl1->carl_rec_idx ) failed"
Requests needed to implement the Remove Archive on Last Unlink (RAoLU)
policy are allowed when the CDT is shutdown, as those are safe
operations. They are also allowed during CDT initialization, even
though this can lead to the assertions being triggered, as doing so
maintains administrator expectations regarding file archives always
being removed when the RAoLU policy is enabled. This could possibly be
improved by e.g. failing when mdt_handle_last_unlink() is not able to
add an HSM remove request, or saving the requests in an llog so they
can be sent if the CDT is available later.
For the same reason, the llog needs to be processed before setting
cdt_state to CDT_RUNNING in the coordinator thread.
Lustre-change: https://review.whamcloud.com/48842
Lustre-commit: fe5706e0c19f96e4f821790004f05ab265002e9d
Change-Id: I4b5f5ee22f74827b31d8ed5917a8fc16e35d1f16
Signed-off-by: Nikitas Angelinas <nikitas.angelinas@hpe.com>
HPE-bug-id: LUS-8231, LUS-11064
Fixes: e26d7cc3 ("LU-14399 hsm: process hsm_actions in coordinator")
Reviewed-by: James Simmons <jsimmons@infradead.org>
Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
53295
b2_15
J ✗4B ✓T ✓R 0/1
LU-13048 mdd: allow release after a non-blocking migrate
reviewing Etienne AUJAMES · CI green — awaiting your review
stalled 651d
L +515 −130
651d
LU-13048 mdd: allow release after a non-blocking migrate
reviewing Etienne AUJAMES · CI green — awaiting your review
stalled 651d
L +515 −130
651d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| replay-single@zfs:test_39 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| replay-single@zfs:test_41 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| replay-single@zfs:test_42 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-lfsck@zfs:test_11b | seen in 1 other review |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-5 | RHEL 8.10 / x86_64 | ran 8 tests. 1 tests failed: lustre-rsync-test. | session |
build #110482 SUCCESS · tests all Maloo sessions
no vote yet: Guillaume Courrier, Andreas Dilger
patchsets:
PS1 11-30
PS2 11-30
PS3 01-18
PS4 01-15
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS4 uploaded 657d ago · NEW · backport · open in Gerrit ↗
commit message
LU-13048 mdd: allow release after a non-blocking migrate lfs setstripe -i0 file lfs hsm_archive file lfs migrate -n -i1 file lfs hsm_release file These actions lead to "Cannot send HSM request ...: Operation not permitted". This happens because of data version mismatch. This error is returned by mdt_hsm_release() when the data versions are not the same. This patch only corrects the non-blocking migrations. mdd_swap_layouts is updated to check and update the HSM archive version when possible. The new and old data versions are added as arguments to this function. If the old data version does not match the data version in the HSM attribute, we don't update the HSM attribute because we don't know what caused the inconsistency. During a swap between a volatile and a regular file, if both objects have an HSM xattr, mdd_swap_layouts was called from the MDT HSM layer (release and restore). In this case, we want to swap the HSM xattr (previously done using SWAP_LAYOUTS_MDS_HSM as a last argument to mdd_swap_layouts). If only the regular file has an HSM attribute, mdd_swap_layouts was called after a migration (blocking or not). In this case, we want to update the HSM archive version only if the file is not dirty and if the new data version is provided. Also, this patch removes the CL_LAYOUT event that was emitted for a release. Since a CL_HSM event with HE_RELEASE flag is also emitted, the CL_LAYOUT is unecessary. For "lfs swap_layouts", the operation is denied on 2 files with HSM xattr (HSM xattr swap will cause inconsistencies). With non-HSM file and archived file, the operation is allowed but the dirty flag is set on the HSM file. Add lustre_swab_close_data_special() to swab close_data fields inside the union (specific to some types of close). Add regression test sanity-hsm 607a, 607b and 607c. Lustre-change: https://review.whamcloud.com/49236 Lustre-commit: 94d02e5774cc0d9ca5c3c34d21c2698ab89f3a6d Test-Parameters: clientversion=2.15.4 testlist=sanity-hsm Test-Parameters: serverversion=2.15.4 testlist=sanity-hsm env=EXCEPT="114 409a" Test-Parameters: testlist=sanity-hsm env=ONLY=607,ONLY_REPEAT=15 Signed-off-by: Courrier Guillaume <guillaume.courrier@cea.fr> Signed-off-by: Etienne AUJAMES <eaujames@ddn.com> Change-Id: I6e90131235f96255b636eea366ad0cef5f4f0b19 Reviewed-by: Andreas Dilger <adilger@whamcloud.com> Reviewed-by: James Simmons <jsimmons@infradead.org>
54470
master
J –B ✓T ✓R +2/2
LU-10499 utils: show pin information in 'lfs pcc state' command
reviewing Qian Yingjin · CI green — awaiting your review
stalled 693d
S +35 −9
693d
LU-10499 utils: show pin information in 'lfs pcc state' command
reviewing Qian Yingjin · CI green — awaiting your review
stalled 693d
S +35 −9
693d
build #107860 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1 · Feng Lei +1
patchsets:
PS1 03-20
PS2 09-20
PS3 09-23
owner Qian Yingjin · uploader Qian Yingjin · PS3 uploaded 772d ago · NEW · open in Gerrit ↗
commit message
LU-10499 utils: show pin information in 'lfs pcc state' command If xattr lustre.pin exists, show its content in 'lfs pcc state' command. EX-5249 utils: don't complain for missing lustre.pin Don't print an error when running "lfs pcc status" against an older server without the "lustre.pin" xattr returns EOPNOTSUPP. Was-Change-Id: Iab235b8be497386752915baeb31347cf8137eed0 EX-bug-id: EX-5249 Test-Parameters: trivial Change-Id: I867ea3b246fc3b7d10e166d754c081c8afc462d5 Signed-off-by: Lei Feng <flei@whamcloud.com> Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
▶Awaiting review — CI not green yet
(91)
70283
master
J –B ✓T ↻R +1/2
LU-20984 lnet: check Netlink attributes fit in the message
reviewing Oleg Drokin · awaiting review (CI not green yet)
pw_shepherd
1 unresolved
M +131 −65
5h
LU-20984 lnet: check Netlink attributes fit in the message
reviewing Oleg Drokin · awaiting review (CI not green yet)
pw_shepherd
1 unresolved
M +131 −65
5h
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-dne-arm retesting | RHEL 8.10 / x86_64, Rocky 9.8 / aarch64 | ran 5 tests. 1 tests failed: lnet-selftest. | session |
build #135243 SUCCESS · tests all Maloo sessions
reviews:
Chris Horn +1
patchsets:
PS1 10-30
PS2 11-02
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre api-ni.c:3188 — (suggestion) nla_ok() only proves the attribute header fits within `rem`. It says nothing about the payload size. An LN_SCALAR_ATTR_INT_VALU
Gerrit AI review for Lustre
(suggestion) nla_ok() only proves the attribute header fits within `rem`. It says nothing about the payload size. An LN_SCALAR_ATTR_INT_VALUE attribute with nla_len == 4 (header only) placed last in the message still passes the new check and the type check, and nla_get_s64() then reads 8 bytes past the end of the message. The same applies to the other nla_get_s64() calls reached after nla_next(): lnet_genl_parse_tunables(), health, hop/priority, Multi-Rail, peer state, notify_time, the ping timeout, the selftest timeout, and the LND lnd_nl_set() handlers. This predates the patch and is limited to GENL_ADMIN_PERM commands. But the commit message says the read past the end of the message is closed, and for integer values it is not. Would a `nla_len(attr) < sizeof(s64)` check next to the type checks (or in nla_extract_val()) be worth adding? liblnetconfig always sends these as NLA_PUT_S64, so it would not reject anything real.
tags: pw_shepherd
owner Oleg Drokin · uploader Oleg Drokin · PS2 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-20984 lnet: check Netlink attributes fit in the message
The LNet Netlink handlers walk the nested attributes of a request
using the length stored in its first attribute header, which was
never compared with the length of the message received. They also
step to a value attribute with nla_next() and read it without
checking that it is still within the enclosing attribute, and
read integer values without checking that the attribute is long
enough to hold one. A malformed request could therefore make the
parser read past the end of the message.
Check the first attribute with nla_ok() against the message length
before walking it, and check every attribute reached by nla_next()
before using it. Add lnet_nla_is_int() to check both the type and
the length of an integer value attribute, and use it everywhere such
a value is read, including the LND tunables handlers. Also check
that each CPT given for a NI is in range and that the list fits in
the configuration it is stored in.
Test-Parameters: trivial
Fixes: 8f8f6e2f36e5 ("LU-10003 lnet: use Netlink to support old and new NI APIs.")
Signed-off-by: Oleg Drokin <green@whamcloud.com>
Assisted-by: ClaudeCode:Opus-5 llm_code_and_review_tools
Change-Id: I24e92280785004a4472e0d3d9a66e986157a6431
67626
master
J !B ✓T ✓R +2/2
LU-20513 selftest: page-size agnostic simple check
reviewing Chris Horn · blocked on the owner: Verified -1 by Oleg Drokin
Verified -1
M +146 −33
10h
LU-20513 selftest: page-size agnostic simple check
reviewing Chris Horn · blocked on the owner: Verified -1 by Oleg Drokin
Verified -1
M +146 −33
10h
blocked on the owner: Verified -1 by Oleg Drokin
awaiting review (CI not green yet)
janitor run: 2 failing config(s), none unique to this patch — janitor results
reviews:
Andreas Dilger +1 · Timothy Day +1
no vote yet: Jinshan Xiong, Oleg Drokin
patchsets:
PS1 07-29
PS2 07-29
owner Chris Horn · uploader Chris Horn · PS2 uploaded 97d ago · NEW · open in Gerrit ↗
commit message
LU-20513 selftest: page-size agnostic simple check
The LST_BRW_CHECK_SIMPLE pattern writes the magic value at the first
and at the last __u64 of each page of the bulk buffer. The two nodes
of a test can have different page sizes. Then they do not agree on
the marked offsets, and the node with the smaller page size reports
bulk data corruption.
For example, a 1MiB transfer from a node with 64KiB pages to a node
with 4KiB pages. The sender writes the magic value at offset 0 and at
offset 65528 of each 64KiB page. The receiver looks for the magic
value at offset 4088 of the buffer, and does not find it. Every such
transfer fails.
Put the markers at a fixed stride in the bulk buffer, and not at page
boundaries. The stride is 4096 bytes, which is the smallest supported
page size. Thus each page of each node gets at least one marker. Put
another marker at the end of the buffer to detect a short transfer.
All the offsets are relative to the buffer. Thus the two nodes agree
on them for all page sizes.
This also makes the markers agree when the two nodes use a different
start offset in the bulk buffer.
The marker positions are visible on the wire. Thus add the session
feature LST_FEAT_BULK_STRIDE, and keep the former positions when the
session does not have this feature. A test node that does not know
the feature rejects the session in sfw_make_session(). The user sees
this at lst add_group, which tells the user to select the features
with the LST_FEATURES environment variable.
The console takes the version of a Netlink session request as the
feature mask of the new session. But lst sent the version of the
Netlink interface. Thus the session got the features LST_FEAT_BULK_LEN
only, and LST_FEATURES had no effect. Send the selected features, and
keep them when the console accepts the request. The reply carries the
version of the Netlink interface, and not the features.
The LST_BRW_CHECK_NONE and LST_BRW_CHECK_FULL patterns do not change.
Extend lnet-selftest.sh to validate check=none/simple/full
Assisted-by: Claude:claude-opus-5
Fixes: fe651f6b21a4 ("LU-521 lnet: make LST support variable page size")
Test-Parameters: trivial
Test-Parameters: clientdistro=rocky9.5 clientarch=aarch64 serverarch=x86_64 testlist=lnet-selftest
Signed-off-by: Chris Horn <chorn@ddn.com>
Change-Id: I27be7f5c0bfe3787a491c6d75aef762b5db498fd
69332
master
J –B ✓T ✓R +3/2
LU-20157 llite: clear PageUptodate only on reclaim
reviewing Alexey Lyashkov · blocked on the owner: Verified -1 by Oleg Drokin
Verified -1
218_review_blocker218_review_priority
master-next
L +220 −61
11h
LU-20157 llite: clear PageUptodate only on reclaim
reviewing Alexey Lyashkov · blocked on the owner: Verified -1 by Oleg Drokin
Verified -1
218_review_blocker218_review_priority
master-next
L +220 −61
11h
blocked on the owner: Verified -1 by Oleg Drokin
awaiting review (CI not green yet)
build #134662 SUCCESS · tests all Maloo sessions
reviews:
Alexey Lyashkov +1 · Timothy Day +1 · Andreas Dilger +1 · Patrick Farrell +1
no vote yet: Qian Yingjin, wangdi, Andrew Perepechko, Alexander Boyko, Oleg Drokin
patchsets:
PS4 10-14
PS5 10-23
PS6 10-26 Patrick Farrell
PS7 10-27 Andreas Dilger
PS8 10-28 Andreas Dilger
+3 earlier
PS1 09-30 PS2 09-30 PS3 10-13tags: 218_review_blocker 218_review_priority
owner Alexey Lyashkov · uploader Andreas Dilger · PS8 uploaded 6d ago · NEW · open in Gerrit ↗
commit message
LU-20157 llite: clear PageUptodate only on reclaim
Client lock replay could deadlock with a buffered read. Before
replaying locks, ldlm_cancel_unused_locks_for_replay() cancels the
idle locks of the namespace, and discarding their pages in
osc_lock_discard_pages() took invalidate_lock of the inode exclusively
in vvp_io_init(). A reader filling the page cache of that inode holds
invalidate_lock shared while its read RPC waits for the import to
leave recovery, so the replay thread waited for the reader and the
reader for the replay. A blocking AST or LRU cancel waited the same
way for any reader of the inode (LU-19427).
vvp_page_delete() cleared PageUptodate on every cl_page teardown.
This violates the kernel invariant, relied upon since v5.13
79e3094c53c5 ("mm/filemap: drop check for truncated page after I/O"),
that invalidation leaves PG_uptodate intact. A buffered read racing
a DLM blocking AST could therefore find a !uptodate folio and return
-EIO (LU-16651) instead of retrying, which is why invalidate_lock was
taken there.
The flag is only needed where page removal can fail after the cl_page
is already gone. That is ->release_folio: do_release_folio() commits
cl_page_delete() before __remove_mapping() decides whether
folio_ref_freeze() succeeds, so an extra vmpage reference can leave a
folio in the mapping with no cl_page. Such a folio is invisible to
osc_page_gang_lookup(), which walks osc->oo_tree rather than
mapping->i_pages, and would be served stale forever. The lock cancel
and truncate paths remove the folio unconditionally: cl_page_discard()
via generic_error_remove_folio(), and ll_invalidate_folio() via
filemap_remove_folio().
Move the clear into do_release_folio(), inside the !cl_page_in_use()
branch so it fires only when the cl_page is actually destroyed. This
covers reclaim and also O_DIRECT write invalidation, which reaches
->release_folio through invalidate_inode_pages2_range() and never held
invalidate_lock. The lli_page_inv_lock seqlock is retained for the
reclaim race named in LU-16160.
With lock cancel no longer clearing PG_uptodate, it no longer needs to
exclude page cache filling, so drop ci_invalidate_page_cache and the
filemap_invalidate_lock() pair added by LU-16651. The
HAVE_INVALIDATE_LOCK configure check has no remaining users and is
removed.
The reclaim refcount race itself is deliberately left alone, and
PG_uptodate is still cleared to mask it. Gating the teardown on a
page_ref_freeze() of the vmpage was tried and rejected: where the
freeze succeeds the folio is freed and PG_uptodate is never observed,
so skipping the clear gains nothing, while a removal that still fails
in the residual window between the unfreeze and __remove_mapping()
would leave an orphan with PG_uptodate set. Aborting the release on a
failed freeze does prevent orphans, but changes ->release_folio
semantics for every caller and regressed sanity 255b and 398a.
Closing the window properly requires deferred teardown from
->free_folio.
Add recovery-small test_18d (from Di Wang) and test_18e (from
Alexander Boyko) for the lock replay deadlock, and sanityn test_126a-c
for a blocking AST, an mmap fault reader and an LRU cancel waiting for
a reader of another stripe of the same file.
Test-Parameters: testlist=sanity env=ONLY=833,ONLY_REPEAT=50
Test-Parameters: testlist=sanityn env=ONLY=16f,ONLY_REPEAT=20
Test-Parameters: testlist=sanity-pcc env=ONLY=99b,ONLY_REPEAT=50
Fixes: f2a16793fa43 ("LU-14541 llite: avoid stale data reading")
Fixes: b4da788a819f ("LU-16160 llite: SIGBUS is possible on a race with page reclaim")
Fixes: bba59b1287c9 ("LU-16651 llite: hold invalidate_lock when invalidate cache pages")
Fixes: 7e0ccbf24182 ("Revert "LU-19427 llite: fix invalidate_lock deadlock for mixed BIO/DIO"")
Signed-off-by: Alexey Lyashkov <alexey.lyashkov@hpe.com>
Signed-off-by: Andreas Dilger <adilger@thelustrecollective.com>
Assisted-by: ClaudeCode:claude-opus-5-5 ltvm llm_code_and_review_tools
Change-Id: I832610825184b701124f939a4a1750ae5108125b
64705
master
J –B ✓T ✗5R 0/2
LU-19412 libcfs: DNS multi-address name resolution
reviewing Louis-Marie Nicolas · blocked on the owner: enforced tests failed
pw_shepherd
9 unresolved
L +546 −71
12h
LU-19412 libcfs: DNS multi-address name resolution
reviewing Louis-Marie Nicolas · blocked on the owner: enforced tests failed
pw_shepherd
9 unresolved
L +546 −71
12h
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-3 | RHEL 9.8 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-subtest-change | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-3 | RHEL 10.1 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-subtest-change | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
build #134776 SUCCESS · tests all Maloo sessions
no vote yet: Etienne AUJAMES
patchsets:
PS1 03-19
PS2 03-19 Janitor Bot
PS3 10-29
threads: 9 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:17 — (minor) Every libcfs_strnid() user in userspace changes behaviour here, not only mount.lustre/mkfs.lustre: failed lookups now return -ENOENT
Gerrit AI review for Lustre
(minor) Every libcfs_strnid() user in userspace changes behaviour here, not only mount.lustre/mkfs.lustre: failed lookups now return -ENOENT instead of -EINVAL, all of 127.0.0.0/8 is rejected rather than only 127.0.0.1, and hostname lookups can now return IPv6 NIDs. These were mentioned in a Gerrit reply but not in the commit message. Please add them here.
reply Louis-Marie Nicolas patchset comment — About libcfs_strnid(): Done. Behavior changes to note: lookup failures may now return -ENOENT (instead of -EINVAL), and I widened the loopba
Andreas Dilger
I would assume that the libcfs_nidstr() function just becomes a 1-NID special case of libcfs_nidstrs()? That should reduce code duplication. Please also update the `mount.lustre(8)` and `mkfs.lustre(8)` man pages with details of how this works.
Louis-Marie Nicolas
About libcfs_strnid(): Done. Behavior changes to note: lookup failures may now return -ENOENT (instead of -EINVAL), and I widened the loopback rejection a bit from 127.0.0.1 only to 127.0.0.0/8. About the man pages: TBD.
reply Gerrit AI review for Lustre nidstrings.c:374 — (minor) Before this patch, hostname lookups used AF_INET only, so the old "Now consider AF_INET6" loop never matched anything and hostname N
Gerrit AI review for Lustre
(minor) Before this patch, hostname lookups used AF_INET only, so the old "Now consider AF_INET6" loop never matched anything and hostname NIDs were always IPv4. With AF_UNSPEC, a site that has dual-stack DNS but runs IPv4-only LNet will get IPv6 NIDs from the AAAA records added to mount sources and to the mgsnode=/failover.node= params that mkfs/tunefs write. Those params are persisted and sent to the MGS config log, so older peers will see them too. Is that what is intended for existing configurations? If not, IPv6 results could be limited to hostnames that have no A record, or put behind an option.
reply Gerrit AI review for Lustre nidstrings.c:377 — (defect) Before this patch, libcfs_ip_str2addr_size() and libcfs_ip_str2addr() only called getaddrinfo() when the string began with a letter
Gerrit AI review for Lustre
(defect) Before this patch, libcfs_ip_str2addr_size() and libcfs_ip_str2addr() only called getaddrinfo() when the string began with a letter. Now any string that inet_pton() rejects goes to getaddrinfo(). glibc's getaddrinfo() parses inet_aton() shorthand, so typos that used to be rejected now quietly become a different NID:
192.168.1@tcp -> 192.168.0.1@tcp
10.1@tcp -> 10.0.0.1@tcp
12@tcp -> 0.0.0.12@tcp
0x0a000001@tcp -> 10.0.0.1@tcp
This goes through libcfs_strnid() as well, so it affects lctl, lnetctl, liblnetconfig nidlist parsing and mkfs/mount.lustre, not only hostname expansion. Every malformed NID also costs a DNS query now, which can hang until the resolver times out on a cluster with no DNS reachable.
Could the alpha-first check come back, or could the numeric forms be rejected (for example, try AI_NUMERICHOST first and refuse to resolve if it succeeds)? libcfs_ip_str2addrs() at the getaddrinfo() call for o2ib/gip has the same problem.
reply Gerrit AI review for Lustre nidstrings.c:1232 — (style) This isn't a bug, but for the new exported API:
Gerrit AI review for Lustre
(style) This isn't a bug, but for the new exported API: - the comment should be kernel-doc, describing each argument and the return value (0 on success, even when nf > nr, i.e. truncated) - `nr`/`nf` are cryptic, and `nf` is the name already used for `struct netstrfns *` all over this file, which is why the local had to be renamed to `netfns`. Something like `nr_stored`/`nr_found` would read better - the prototype is in include/uapi/linux/lnet/nidstr.h outside `#ifdef __KERNEL__`, but only the userspace library implements it. Should it go inside a `#ifndef __KERNEL__` block?
reply Andreas Dilger conf-sanity.sh:12409 — It might be better to make up a "more fake" address, in case the "+10" address is live and in use? That might result in the mount trying a
Andreas Dilger
It might be better to make up a "more fake" address, in case the "+10" address is live and in use? That might result in the mount trying a totally unrelated test cluster.
reply Gerrit AI review for Lustre conf-sanity.sh:12912 — (minor) Carried over from patchset 2, which had no reply and is unchanged: mgs_ip1 + 10 may be a live address on the test network. Since tes
Gerrit AI review for Lustre
(minor) Carried over from patchset 2, which had no reply and is unchanged: mgs_ip1 + 10 may be a live address on the test network. Since test_161b then checks that the client has it as an MGS peer NID, the client may actually try to talk to that host. An address that can never be in use (e.g. one from 192.0.2.0/24, as test_161c/d already use) would be safer.
reply Gerrit AI review for Lustre mount_utils.c:1057 — (minor) The new malformed-source check jumps to out_bad_mnt_str without printing anything, unlike the strchr() check just above it. The user
Gerrit AI review for Lustre
(minor) The new malformed-source check jumps to out_bad_mnt_str without printing anything, unlike the strchr() check just above it. The user only sees the usage text. If the patch is refreshed, please print "Invalid mount string" here as well.
reply Gerrit AI review for Lustre mount_utils.c:1142 — (suggestion) Joining every address of a hostname with ',' tells the client they are interfaces of one node (see mount.lustre(8): "comma-sepa
Gerrit AI review for Lustre
(suggestion) Joining every address of a hostname with ',' tells the client they are interfaces of one node (see mount.lustre(8): "comma-separated list of NIDs, if there are different LNet interfaces for the same MGSNODE"). A DNS name with A records for both members of an MGS/OSS HA pair is a common setup. It used to resolve to only the first address; now both addresses are merged into one peer, and LNet discovery from each one will return a different peer. Should this case be documented as unsupported, or detected?
tags: pw_shepherd
owner Louis-Marie Nicolas · uploader Louis-Marie Nicolas · PS3 uploaded 5d ago · NEW · open in Gerrit ↗
commit message
LU-19412 libcfs: DNS multi-address name resolution Expand hostnames into all supported addresses when converting NIDs for mount.lustre and mkfs.lustre, instead of using only the first resolved address. Group addresses from each hostname with commas while preserving separators between explicitly specified NIDs. Add libcfs_strnids() and resolver callbacks with stored and total address counts so callers can resize their buffers. Support mixed IPv4 and IPv6 results for tcp and efa, retaining each address size. Reject failed lookups, loopback addresses and IPv6 link-local addresses. Grow conversion buffers to preserve expanded NID lists and filesystem suffixes. Test-Parameters: testlist=conf-sanity Signed-off-by: Louis-Marie Nicolas <lnicolas@ddn.com> Assisted-by: Codex:codex-6.1-sol (review) Change-Id: Icf09a7bcf4b4eae399525c01a31f710d04bd2015
70368
master
J –B ✓T …R 0/2
LU-21107 build: remove kernel objects in make clean
reviewing Thomas Bertschinger · awaiting review (CI not green yet)
1 unresolved
S +20 −0
18h
LU-21107 build: remove kernel objects in make clean
reviewing Thomas Bertschinger · awaiting review (CI not green yet)
1 unresolved
S +20 −0
18h
no vote yet: Arshad Hussain, Timothy Day
patchsets:
PS1 11-03
PS2 11-03
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Thomas Bertschinger patchset comment — I moved it over to the Makefile. In order to get it to run during distclean and maintainer-clean, I had to add the "*-recursive" targets as
Timothy Day
We eventually want to remove the top-level autoMakefile.am. It doesn't seem like this make target has an explicit dependency on automake. Could we add it to the top-level Makefile instead?
Thomas Bertschinger
I moved it over to the Makefile. In order to get it to run during distclean and maintainer-clean, I had to add the "*-recursive" targets as dependents. This way of handling it seems a little inelegant but it does seem to work. I am definitely not an autotools expert; maybe there's a better way to integrate with those targets.
owner Thomas Bertschinger · uploader Thomas Bertschinger · PS2 uploaded 18h ago · NEW · open in Gerrit ↗
commit message
LU-21107 build: remove kernel objects in make clean
make clean should remove kernel object files. Previously, it did via
the MOSTLYCLEANFILES variable. However, when that variable was
removed, nothing was left that cleaned up the kernel modules. This
cleans them up by delegating to the Kbuild clean target.
The new target runs for make clean, distclean, and maintainer-clean.
Signed-off-by: Thomas Bertschinger <bertschinger@lanl.gov>
Fixes: 31e5fc87aebf ("LU-18876 build: remove MOSTLYCLEANFILES")
Test-Parameters: trivial
Change-Id: Ie5a7894000f2eee81c0c7a1101615cdbb258cf5e
70241
master
J –B ✓T …R 0/2
LU-11962 lfs: find files with a foreign component
reviewing Andreas Dilger · awaiting review (CI not green yet)
ssompccro
M +165 −51
20h
LU-11962 lfs: find files with a foreign component
reviewing Andreas Dilger · awaiting review (CI not green yet)
ssompccro
M +165 −51
20h
no vote yet: Jian Yu
patchsets:
PS2 11-01
PS3 11-03
tags: ssom pccro
owner Andreas Dilger · uploader Andreas Dilger · PS3 uploaded 21h ago · NEW · open in Gerrit ↗
commit message
LU-11962 lfs: find files with a foreign component
"lfs find --foreign" only matches a file whose whole layout is
foreign, and "lfs find -L foreign" never matches, since the layout
check skips foreign entries. There is no way to find the files that
have a foreign mirror component, as PCC-RO adds. For directories,
"lfs find --foreign" matches the wrong ones, since the foreign LMV
check is inverted, and "lfs find ! --foreign" prints every unstriped
directory without checking the other options, such as -type f.
Match a composite layout in find_check_foreign() if it has a foreign
component, of the requested type if given, and match foreign layouts
and components with "-L foreign" in find_check_layout(). A file whose
whole layout is foreign now also matches a negated pattern, such as
"! -L raid0". Fix the foreign directory check, and remove the
shortcut that printed an unstriped directory for "! --foreign".
Add sanity test_56ya for foreign files and directories, and
sanity-pcc test_21ba to find a file attached to PCC-RO.
Test-Parameters: trivial testlist=sanity-pcc
Fixes: ce98bfe5f726 ("LU-10499 pcc: add readonly mode for PCC")
Fixes: baba1fd07a97 ("LU-14489 utils: fix 'lfs find --mdt-count'")
Signed-off-by: Andreas Dilger <adilger@thelustrecollective.com>
Assisted-by: ClaudeCode:claude-opus-5-5 ltvm llm_code_and_review_tools
Change-Id: Id8a52c244eadf77dd146a24fe9df46a812500c1e
50871
master
J –B ✓T …R 0/2
LU-9512 llite: Add O_TMPFILE support
reviewing Arshad Hussain · awaiting review (CI not green yet)
lug23ddhackathon
2 unresolved
L +525 −33
1d
LU-9512 llite: Add O_TMPFILE support
reviewing Arshad Hussain · awaiting review (CI not green yet)
lug23ddhackathon
2 unresolved
L +525 −33
1d
no vote yet: Qian Yingjin, Andreas Dilger, Sebastien Buisson, Oleg Drokin, Timothy Day
patchsets:
PS30 10-16
PS31 10-26
PS32 11-02
PS33 11-03
PS34 11-03
+29 earlier
PS1 05-05 PS2 05-22 PS3 05-22 PS4 05-22 PS5 08-12 PS6 08-12 PS7 08-12 PS8 08-13 PS9 08-14 PS10 08-14 PS11 08-14 PS12 08-24 PS13 08-24 PS14 08-25 PS15 08-26 PS16 08-26 PS17 09-07 PS18 09-07 PS19 09-09 PS20 09-09 PS21 09-14 PS22 09-21 PS23 09-30 PS24 10-01 PS25 10-04 PS26 10-04 PS27 10-05 PS28 10-05 PS29 10-07threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (minor) The body covers the client side but not several server-side changes that alter behaviour or on-disk format:
Gerrit AI review for Lustre
(minor) The body covers the client side but not several server-side changes that alter behaviour or on-disk format: - a new per-file LMA incompat bit, LMAI_TMPFILE, set at create time and never cleared - the new MDS_CREATE_TMPFILE op bias and sp_cr_tmpfile - mdd_link() now drops the object from the orphan index and logs CL_CREATE instead of CL_HARDLINK on the first link - mdd_close() now keeps an orphan with nlink > 1 - mdt_finish_open() no longer returns -ENOTDIR for MDS_OPEN_VOLATILE | MDS_OPEN_DIRECTORY Could these be described and named, so they can be found later with git log?
reply Gerrit AI review for Lustre lustre_user.h:485 — (defect) lma_incompat bits mean "a Lustre version that doesn't know this bit must refuse the object". osd_get_lma() and osd_check_lma() retu
Gerrit AI review for Lustre
(defect) lma_incompat bits mean "a Lustre version that doesn't know this bit must refuse the object". osd_get_lma() and osd_check_lma() return -EOPNOTSUPP for any bit outside LMA_INCOMPAT_SUPP. The bit is set at create time and nothing clears it when the file is linked into the namespace, so every file ever created with O_TMPFILE keeps it. After a server downgrade (or a backup restored on an MDS without this patch), those ordinary named files become inaccessible. The flag is only needed while the object is still a nameless orphan. Could it be held in lma_compat, or cleared in mdd_link() when the object leaves the orphan index? Also, LMAI_TMPFILE, LUSTRE_TMPFILE_FL and MDS_CREATE_TMPFILE are new wire/on-disk values without the matching CHECK_VALUE_X() in lustre/utils/wirecheck.c and LASSERTF() in both wiretest.c copies, unlike their neighbours (LMAI_ENCRYPT, LUSTRE_ENCRYPT_FL, MDS_NAMEHASH).
tags: lug23dd hackathon
owner Arshad Hussain · uploader Arshad Hussain · PS34 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-9512 llite: Add O_TMPFILE support This patch adds VFS tmpfile (O_TMPFILE (nameless)) file support. The file will be automatically deleted when it is closed. VFS tmpfile (tmpfile) support which is little different from standard volatile file creation already present. While volatile file is either destroyed on close or swapped (migrate) but never link'ed. The tmpfile support via inode_operations->tmpfile can be linked and be brought out of orphan list and can be listed like regular file. tmpfile uses unique (LUSTRE_VOLATILE_HDR + random) as name, same as volatile file. This is because, currently any file with such unique name is already put on orphan (unlink, yet still open). Therefore tmpfile piggybacks on this already implemented feature to implement tmpfiles. However, tmpfile and volatile files in Lustrefs is not same as mentioned above. With this we have: - File open with ll_tmpfile (O_TMPFILE): linking allowed - regular open-unlinked: linking not allowed - Volatile file (HSM/migrate): linking not allowed Test is exercised against older 2.16 server also. New sanity/63d test is added as verification. Test-Parameters: trivial serverversion=2.17.0 testlist=sanity Test-Parameters: trivial serverversion=2.16.0 testlist=sanity env=ONLY="63d" Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Change-Id: I74b44bf2e4cfac10fef09d32679b104e83020b36
67100
master
J ✗1B ✓T ✗1R -1/2−
LU-18687 misc: use bound workqueues
reviewing Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; janitor: test failures unique to this patch; enforced tests failed
needs rebase
1 unique failure
11 unresolved
M +96 −95
6d
LU-18687 misc: use bound workqueues
reviewing Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; janitor: test failures unique to this patch; enforced tests failed
needs rebase
1 unique failure
11 unresolved
M +96 −95
6d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-slow@ldiskfs+DNE:test_255c | seen in 1 other review |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-zfs | RHEL 8.10 / x86_64 | ran 8 tests. 1 tests failed: sanity-quota. | session |
build #131615 SUCCESS · tests all Maloo sessions
no vote yet: Shaun Tancheff, Andreas Dilger
patchsets:
PS1 07-07
PS2 09-11
threads: 11 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — The body opens mid-sentence as a continuation of the subject, so the patch has no statement of what it accomplishes and why before it descri
Gerrit AI review for Lustre
The body opens mid-sentence as a continuation of the subject, so the patch has no statement of what it accomplishes and why before it describes how. Could it start with a short paragraph along the lines of "cfs_cpt_bind_workqueue() relied on apply_workqueue_attrs(), which is not exported ..."? Several parts of the diff aren't accounted for: - the new cfs_cpt_wq_cpu(), cfs_cpt_queue_work(), cfs_cpt_queue_delayed_work() and cfs_cpt_mod_delayed_work() helpers are not named anywhere, so this is hard to find later with `git log -S` - the swi_init_workitem() signature change and the new swi_cpt field in struct swi_workitem - the removal of compat_alloc_workqueue_attrs()/compat_free_workqueue_attrs()/compat_apply_workqueue_attrs() from lustre_compat/symbols.c - most importantly, that max_active changes meaning (per-pool to per-CPU) for every workqueue created through cfs_cpt_bind_workqueue() A `Test-Parameters:` line covering lnet-selftest would also be useful here given the change affects the LST work schedulers.
reply Gerrit AI review for Lustre lib-cpt.h:324 — A second consequence of the bound workqueue: max_active is applied per pool_workqueue, and a bound wq has one per CPU where an unbound wq ha
Gerrit AI review for Lustre
A second consequence of the bound workqueue: max_active is applied per pool_workqueue, and a bound wq has one per CPU where an unbound wq has one per node. So `nthrs` silently turns from a system/node-wide ceiling into a per-CPU ceiling, multiplying effective concurrency by the CPU count. That hits obd_zombid (cfs_cpt_number()), ll-readahead-wq and tgt_nid_notifier (1) - see the tgt_mount.c comment.
reply Gerrit AI review for Lustre lib-cpt.h:338 — "The @tbl/@cpt the caller binds to here must match what it later passes to cfs_cpt_queue_work()" describes a binding this function no longer
Gerrit AI review for Lustre
"The @tbl/@cpt the caller binds to here must match what it later passes to cfs_cpt_queue_work()" describes a binding this function no longer performs - `tbl` and `cpt` are now unused and the body is just alloc_workqueue() plus ERR_PTR() wrapping. Should the unused parameters be dropped, and the name changed to something that doesn't claim a CPT binding?
reply Gerrit AI review for Lustre lib-cpt.h:342 — Dropping WQ_UNBOUND makes this a per-CPU workqueue, and cfs_cpt_wq_cpu() below returns the queueing CPU whenever it is inside the partition.
Gerrit AI review for Lustre
Dropping WQ_UNBOUND makes this a per-CPU workqueue, and cfs_cpt_wq_cpu() below returns the queueing CPU whenever it is inside the partition. So work now runs on the CPU that submitted it rather than being spread over the partition's cores by the scheduler. That looks like it undoes what the callers wanted. ll-readahead-wq is sized `cfs_cpt_weight(cfs_cpt_tab, CFS_CPT_ANY) >> 1` and exists so the reader thread doesn't do the readahead itself - kickoff_async_readahead() even says "allowing the user thread to do fast i/o" - but the work item now lands on the reader's own CPU. lst_test_wq[i] is sized `cfs_cpt_weight(cpt) - 1` for the same reason and gets confined the same way. Would keeping WQ_UNBOUND and still calling queue_work_on() work better? For an unbound wq the cpu argument selects the pool for that CPU's node/pod, so you keep the partition affinity and still get parallelism across its cores, with no need for apply_workqueue_attrs().
reply Gerrit AI review for Lustre lib-cpt.h:359 — This isn't a bug, but a one-line note on why raw_ is used here (the result is only a placement hint, so migration between the read and queue
Gerrit AI review for Lustre
This isn't a bug, but a one-line note on why raw_ is used here (the result is only a placement hint, so migration between the read and queue_work_on() is harmless) would save the next reader a trip to check whether preemption is disabled.
reply Gerrit AI review for Lustre lib-cpt.h:361 — This check can't fire. cfs_cpt_cpumask() returns `&cptab->ctb_cpumask` or `&cptab->ctb_parts[cpt].cpt_cpumask` on SMP, and the !CONFIG_SMP s
Gerrit AI review for Lustre
This check can't fire. cfs_cpt_cpumask() returns `&cptab->ctb_cpumask` or `&cptab->ctb_parts[cpt].cpt_cpumask` on SMP, and the !CONFIG_SMP stub returns cpu_online_mask - never NULL. It also doesn't protect against a NULL @tbl, since in that case cfs_cpt_cpumask() hands back a small non-NULL offset and cpumask_test_cpu() faults on the next line anyway. Dropping it would be clearer.
reply Gerrit AI review for Lustre lib-cpt.h:367 — cpumask_any_and() is `#define`d to cpumask_first_and(), so the "fall back to any online CPU in the partition" in the comment above is really
Gerrit AI review for Lustre
cpumask_any_and() is `#define`d to cpumask_first_and(), so the "fall back to any online CPU in the partition" in the comment above is really "always the lowest-numbered online CPU". With a bound workqueue every caller outside the partition then funnels onto that one CPU. cpumask_any_and_distribute() would match the comment's intent.
reply Gerrit AI review for Lustre rpc.c:200 — srpc_serv_is_framework(scd->scd_svc) is evaluated twice in adjacent ternaries. If the patch is refreshed, a local `bool fw = srpc_serv_is_fr
Gerrit AI review for Lustre
srpc_serv_is_framework(scd->scd_svc) is evaluated twice in adjacent ternaries. If the patch is refreshed, a local `bool fw = srpc_serv_is_framework(scd->scd_svc);` would read better and keep the two selections obviously in step.
reply Gerrit AI review for Lustre selftest.h:559 — "CFS_CPT_ANY items ... are left to the core" doesn't match cfs_cpt_wq_cpu(): for CFS_CPT_ANY it uses cptab->ctb_cpumask, which normally cont
Gerrit AI review for Lustre
"CFS_CPT_ANY items ... are left to the core" doesn't match cfs_cpt_wq_cpu(): for CFS_CPT_ANY it uses cptab->ctb_cpumask, which normally contains the current CPU, so it returns raw_smp_processor_id() rather than WORK_CPU_UNBOUND. Framework RPCs on lst_serial_wq get a concrete CPU like everything else.
reply Gerrit AI review for Lustre tgt_mount.c:1720 — tgt_nu_wq is created with nthrs 1, which used to mean at most one NID-update work item in flight. With the workqueue now bound, max_active 1
Gerrit AI review for Lustre
tgt_nu_wq is created with nthrs 1, which used to mean at most one NID-update work item in flight. With the workqueue now bound, max_active 1 is per-CPU, so up to num_online_cpus() of these can run at once. lnet_notify_net_update() invokes the callbacks under ln_api_mutex, so a net delete and a subsequent net add are queued in order, but if they are queued from different CPUs they now execute concurrently. Two tgt_nid_notifier() runs each send a full NID snapshot via tgt_nids_notify(), so the MGS/targets can end up with the older snapshot last. Was losing that serialization intended?
reply Gerrit AI review for Lustre symbols.c:23 — (minor) This patch removes the last user of this header from this file - compat_alloc_workqueue_attrs()/compat_free_workqueue_attrs()/compat
Gerrit AI review for Lustre
(minor) This patch removes the last user of this header from this file - compat_alloc_workqueue_attrs()/compat_free_workqueue_attrs()/compat_apply_workqueue_attrs() are gone, and nothing left here touches __flush_workqueue() or HAVE_FLUSH___WORKQUEUE. If the patch is refreshed, the include can go too.
owner Timothy Day · uploader Timothy Day · PS2 uploaded 53d ago · NEW · open in Gerrit ↗
commit message
LU-18687 misc: use bound workqueues ... and adjusted callers to schedule work in a CPT aware manner, so we don't need unexported symbols from Linux. Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: Ia15e62d11d362ecccafb6cadd1c19853c00d0f6e
67498
master
J !B ✓T ✗1R -2/2−
LU-19805 llite: unregister client BDI on pre-5.11 kernels
reviewing Oleg Drokin · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
6 unresolved
M +48 −5
13d
LU-19805 llite: unregister client BDI on pre-5.11 kernels
reviewing Oleg Drokin · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
6 unresolved
M +48 −5
13d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
awaiting review (CI not green yet)
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-zfs-part-5 crashed | RHEL 9.7 / x86_64 | ran 5 tests. 1 tests failed: sanityn. %% THIS TEST SESSION CRASHED %% | session |
build #129722 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger -1
no vote yet: Shaun Tancheff
patchsets:
PS1 07-23
PS2 07-29 Andreas Dilger
PS3 07-29 Andreas Dilger
threads: 6 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:37 — (minor) This says the gate is the presence of bdi_dev_name(), added by 68f23b8906 and picked up in RHEL 8.6, but the new configure test prob
Gerrit AI review for Lustre
(minor) This says the gate is the presence of bdi_dev_name(), added by 68f23b8906 and picked up in RHEL 8.6, but the new configure test probes backing_dev_info.dev_name, which is a different commit: 6bd87eec23cb ("bdi: add a ->dev_name field to struct backing_dev_info", v5.7).
68f23b8906's bdi_dev_name() still returns dev_name(bdi->dev), so it alone is not the property the patch relies on. The two commits also end up attributed to each other between here and the config/lustre-core.m4 comment.
Would it be clearer to say the gate is the cached dev_name copy, and to re-check the RHEL 8.6 claim against that commit rather than against 68f23b8906?
reply Gerrit AI review for Lustre lustre-core.m4:947 — (minor) The sha and the quoted subject belong to different commits. 6bd87eec23cb is Christoph Hellwig's "bdi: add a ->dev_name field to stru
Gerrit AI review for Lustre
(minor) The sha and the quoted subject belong to different commits. 6bd87eec23cb is Christoph Hellwig's "bdi: add a ->dev_name field to struct backing_dev_info"; "memcg: fix a crash in wb_workfn when a device disappears" is 68f23b8906 (Ted Ts'o, v5.6). The next line then credits 6bd87eec23cb with adding bdi_dev_name(), which 68f23b8906 did. The rest of the sentence (the worker keeping its own copy of the name) does describe 6bd87eec23cb correctly, so only the subject and that one clause need fixing.
reply Gerrit AI review for Lustre lustre-core.m4:962 — (minor) The test compiles a reference to the dev_name field, but the macro, the configure message and the AC_DEFINE description all say bdi_
Gerrit AI review for Lustre
(minor) The test compiles a reference to the dev_name field, but the macro, the configure message and the AC_DEFINE description all say bdi_dev_name(). Those are separable: v5.6 has the function without the cached field, and only the field makes the name outlive device_unregister().
Since the name is what someone reads when they later decide whether the test is right, a name that disagrees with the test invites "correcting" it to probe the function and quietly losing the property the patch depends on. LC_HAVE_BDI_DEBUG_STATS just below is the model here:
[if 'struct backing_dev_info' has 'dev_name' field]
Renaming to HAVE_BDI_DEV_NAME_FIELD would make the C-side guards say what they mean too.
reply Andreas Dilger llite_lib.c:1599 — ```
James Simmons
There has to be a better way then this ifdef mess.
Andreas Dilger
``` #if !defined(SB_I_PERSB_BDI) && !defined(HAVE_BDI_DEV_NAME) #define SB_I_CGROUPWB 0 #endif ``` ?
reply Gerrit AI review for Lustre llite_lib.c:1683 — (suggestion) Is this branch needed? bdi_debug_register() creates the stats file as a child of debug_dir:
Gerrit AI review for Lustre
(suggestion) Is this branch needed? bdi_debug_register() creates the stats file as a child of debug_dir:
bdi->debug_dir = debugfs_create_dir(name, bdi_debug_root);
bdi->debug_stats = debugfs_create_file("stats", 0444, bdi->debug_dir, ...);
so debugfs_remove_recursive(bdi->debug_dir) in the #else already takes the stats file with it on kernels that have the field. That makes "restore the debug_stats removal that pre-v5.3 kernels need" in the commit message hard to back up.
Dropping it would also leave LC_HAVE_BDI_DEBUG_STATS with no users at all - this is its only one - so the configure test could go too.
reply Andreas Dilger llite_lib.c:1687 — This looks like the only real issue, the others are largely cosmetic.
Gerrit AI review for Lustre
(minor) Not something this patch introduces, but both branches touch fields that only exist under CONFIG_DEBUG_FS:
#ifdef CONFIG_DEBUG_FS
struct dentry *debug_dir;
struct dentry *debug_stats;
#endif
With CONFIG_DEBUG_FS=n the HAVE_BDI_DEBUG_STATS test fails too, so the #else is what gets compiled, and bdi->debug_dir is not a member. The patch narrows the affected range (it now needs HAVE_BDI_DEV_NAME as well), but v5.7-v5.10 without debugfs still won't build. Worth wrapping in #ifdef CONFIG_DEBUG_FS while these lines are being rewritten?
Andreas Dilger
This looks like the only real issue, the others are largely cosmetic.
owner Oleg Drokin · uploader Andreas Dilger · PS3 uploaded 98d ago · NEW · open in Gerrit ↗
commit message
LU-19805 llite: unregister client BDI on pre-5.11 kernels
Repeated client mount/umount eventually fails with:
sysfs: cannot create duplicate filename '/devices/virtual/bdi/fs-ffffa08a8a808000'
kobject_add_internal failed for fs-ffffa08a8a808000 with -EEXIST
llite: Unable to mount <unknown>: rc = -17
ll_fill_super() names the per-superblock BDI after the superblock
address (ll_get_cfg_instance()), so that name is only unique for as
long as the BDI does not outlive the superblock.
LU-16954 set SB_I_CGROUPWB on the Lustre superblock. Every cgroup
bdi_writeback created for the mount takes a reference on the BDI in
wb_init(), and those references are only dropped by bdi_unregister()
via cgwb_bdi_unregister(). Kernels older than v5.11 have no
SB_I_PERSB_BDI, so generic_shutdown_super() only calls bdi_put():
release_bdi() cannot run while a cgwb holds a reference, and the cgwbs
are not killed because that only happens from bdi_unregister(). The
BDI and its sysfs node therefore stay behind after umount, and the next
mount that gets a struct super_block back at the same address fails
with -EEXIST.
LU-16954 compensated for this by unregistering the BDI device from
ll_put_super(). LU-17745 disabled that for kernels which still have
backing_dev_info.debug_stats (before commit v5.2-rc3-11-g2d146b924e),
since RHEL 8.2 crashed in wb_workfn(), called dev_name(wb->bdi->dev)
with no NULL check. That was fixed by commit v5.5-5400-g68f23b8906
("memcg: fix a crash in wb_workfn when a device disappears"), which
added bdi_dev_name(), and which RHEL picked up in 8.6. The condition
that matters is therefore not the absence of debug_stats but presence
of bdi_dev_name(): on RHEL 8.6 and later the explicit unregister is
safe, and without it every mount/umount cycle strands a BDI.
Key the unregister off a new HAVE_BDI_DEV_NAME test and restore the
debug_stats removal that pre-v5.3 kernels need. Only ask for cgroup
writeback where the BDI can be unregistered again, so kernels with
neither SB_I_PERSB_BDI nor bdi_dev_name() do not strand BDIs either.
That affects RHEL 8.0 through 8.5, and SLES15 SP2/SP3, Ubuntu 20.04.
This removes the sysfs name collision. On pre-v5.11 kernels the BDI
itself is still only freed once the memory cgroups referencing it go
away; a module has no exported way to break that cycle.
Reproduced on a RHEL 8.10 client booted with cgroup v2 (memory and io
controllers) by mounting, writing a file from a non-root cgroup, and
unmounting in a loop: without the patch the mount fails after ~10
iterations and one /sys/class/bdi/<fsname>-<address> entry is stranded
per cycle; with it, 100 iterations pass leaving none. No regression
test is added, because triggering the failure requires cgroup v2 with
both the memory and io controllers on a client kernel older than v5.11,
which no autotest client configuration provides, and a test that cannot
fail without the fix is worse than none.
Test-Parameters: clientdistro=el8.10 testlist=conf-sanity
Test-Parameters: clientdistro=ubuntu2404 testlist=conf-sanity
Fixes: facff17860 ("LU-17745 llite: fix the umount panic due to BDI unregister")
Fixes: dcc1dd39a6 ("LU-16954 llite: add SB_I_CGROUPWB on super block for cgroup")
Signed-off-by: Oleg Drokin <green@whamcloud.com>
Assisted-by: ClaudeCode:Opus-4.8 llm_code_and_review_tools
Change-Id: I7cfbc98da727bc8ddb53c9282f62c666f5d5d929
65737
master
J –B ✓T ✗2R -1/2−
LU-10026 csdc: set compress component for file
reviewing Marc Vef · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
csdc
14 unresolved
XL +1163 −16
13d
LU-10026 csdc: set compress component for file
reviewing Marc Vef · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
csdc
14 unresolved
XL +1163 −16
13d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
awaiting review (CI not green yet)
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: sanity-pfl. | session |
| review-dne-part-7 | RHEL 9.8 / x86_64 | ran 6 tests. 1 tests failed: sanity-pcc. | session |
build #132858 SUCCESS · tests all Maloo sessions
no vote yet: Roman Bolshakov, Andreas Dilger, Artem Blagodarenko
patchsets:
PS11 08-19 Artem Blagodarenko
PS12 08-20 Artem Blagodarenko
PS13 08-20 Artem Blagodarenko
PS14 08-21 Artem Blagodarenko
PS15 10-05 Roman Bolshakov
+10 earlier
PS1 05-07 PS2 05-07 PS3 05-28 PS4 05-28 PS5 06-11 PS6 06-11 PS7 06-16 Artem Blagodarenko PS8 06-16 Artem Blagodarenko PS9 07-24 Artem Blagodarenko PS10 08-19 Artem Blagodarenkothreads: 14 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:56 — (minor) The body doesn't mention the client-side gate added by squashing Ib1e2123ff: the new lustre_check_lov_user_md() and lustre_check_lov
Gerrit AI review for Lustre
(minor) The body doesn't mention the client-side gate added by squashing Ib1e2123ff: the new lustre_check_lov_user_md() and lustre_check_lov_comp_md_v1() in ptlrpc/pack_generic.c, and their calls from ll_lov_setstripe_ea_info() and ll_xattr_set(). These reject a compress layout when `llite.*.enable_compression=0`, which is a user-visible behaviour change. Could a short paragraph describing them be added?
reply Artem Blagodarenko patchset comment — Hi Andreas. Thanks for poining to this. I have reverted all fixed by Patchset 11 pushing wrong branch. I have reverted to Patchset 10 where
Andreas Dilger
@ablagodarenko@thelustrecollective.com it looks like the patches were rebased, but did not address any of the AI review comments? While we can't go overboard changing every detail of the patches, I think it does make sense to fix the code where possible so that we don't carry technical debt later.
Artem Blagodarenko
Hi Andreas. Thanks for poining to this. I have reverted all fixed by Patchset 11 pushing wrong branch. I have reverted to Patchset 10 where I addressed AI bot comments and fixed build.
reply Roman Bolshakov patchset comment — Squashed Ib1e2123ffdb239c3e1401d682ae9c2c49e3f4a6f into the change. I'll address a couple more comments in another push.
Roman Bolshakov
Squashed Ib1e2123ffdb239c3e1401d682ae9c2c49e3f4a6f into the change. I'll address a couple more comments in another push.
reply Andreas Dilger lfs-getstripe.1:331 — Should be fixed if patch is refreshed.
Gerrit AI review for Lustre
(minor) There is no `.TP` before this entry, so `--compress-type|--compr-type` and its description get folded into the `-z, --extension-size` paragraph above instead of starting their own tagged item. The two entries below it do have theirs.
Oleg Drokin
weird but in my man output it looks ok.
Artem Blagodarenko
The entry was missing its .TP in the troff source. Some man implementations are lenient and reflow correctly, but others fold the entry into the previous paragraph. Added .TP for correctness.
Artem Blagodarenko
Done. Added the missing .TP before the --compress-type|--compr-type entry.
Andreas Dilger
Should be fixed if patch is refreshed.
reply Gerrit AI review for Lustre llapi_layout_compress_set.3:105 — (minor) Neither of the two new man3 pages has an EXAMPLES section. Lustre llapi pages are expected to carry a short usage example showing th
Gerrit AI review for Lustre
(minor) Neither of the two new man3 pages has an EXAMPLES section. Lustre llapi pages are expected to carry a short usage example showing the required header and a realistic call.
reply Gerrit AI review for Lustre llapi_layout_compress_set.3:71 — (minor) This, and the matching EINVAL entry under ERRORS, says a `stripe_size` that is not a multiple of `chunk_size` is an error. llapi_lay
Gerrit AI review for Lustre
(minor) This, and the matching EINVAL entry under ERRORS, says a `stripe_size` that is not a multiple of `chunk_size` is an error. llapi_layout_compress_set() never fails for that: it decrements `log_bits` until the chunk divides the stripe and stores the smaller chunk (sanity-pfl test_100c expects 3*64KiB to become 128KiB). Similarly, gzip/lz4/lz4fast levels outside the listed ranges are clamped by their from_*_level() helpers, not rejected with EINVAL as the text above says (test_100c expects gzip:15 to read back as 9). If the patch is refreshed, could the page describe the rounding and clamping instead?
reply Gerrit AI review for Lustre llapi_parse_compress_type.3:62 — (minor) llapi_parse_compress_type() also returns -EINVAL - for a level that isn't a valid number or falls outside +/-COMPR_LEVEL_MAX - which
Gerrit AI review for Lustre
(minor) llapi_parse_compress_type() also returns -EINVAL - for a level that isn't a valid number or falls outside +/-COMPR_LEVEL_MAX - which neither RETURN VALUES nor ERRORS mentions. Mixing -1 with -Exxx returns in one function is also awkward for callers; would returning -EINVAL for the unknown-type case be more consistent?
reply Gerrit AI review for Lustre lustreapi.h:1457 — (minor) The 9 used as the lz4 default collides with a real level. from_lz4_level(10) returns 9, and to_lz4_level(9) returns 9 because 9 == L
Gerrit AI review for Lustre
(minor) The 9 used as the lz4 default collides with a real level. from_lz4_level(10) returns 9, and to_lz4_level(9) returns 9 because 9 == LZ4HC_DEFAULT_CLEVEL, so 'lfs setstripe -Z lz4:10' reports back as lz4:9 and level 10 can never be displayed - even though lfs-setstripe.1 documents 1-16 as the valid lz4 range.
reply Gerrit AI review for Lustre file.c:2838 — (defect) This gate runs only for regular files: ll_lov_setstripe_ea_info(), and the `lov.` branch in ll_xattr_set(). A directory default goe
Gerrit AI review for Lustre
(defect) This gate runs only for regular files: ll_lov_setstripe_ea_info(), and the `lov.` branch in ll_xattr_set(). A directory default goes through ll_setstripe_ea() -> ll_dir_setstripe() (and the LL_IOC_LOV_SETSTRIPE case in ll_dir_ioctl()), which never calls lustre_check_lov_user_md(). So on a client with `enable_compression=0`:
lfs setstripe -E eof -Z lz4 $dir # accepted
touch $dir/f # MDS instantiates a compress layout
This still produces a file the client can't handle. lsm_lmm_verify_v1v3() rejects it with "file compression not enabled", and the PS14 report shows a later unlink or stripe change hitting the lov_io_layout_at() LBUG. Should ll_dir_setstripe() apply the same check? Or, if allowing compressed defaults on a disabled client is intended, should the client reject the layout cleanly instead of asserting?
reply Gerrit AI review for Lustre xattr.c:425 — (defect) On this `lov.` path nothing validates `size` before lustre_check_lov_user_md() walks the entries. lustre_check_lov_comp_md_v1() rea
Gerrit AI review for Lustre
(defect) On this `lov.` path nothing validates `size` before lustre_check_lov_user_md() walks the entries. lustre_check_lov_comp_md_v1() reads `lcm_entry_count` and then up to 65535 `lcm_entries[]`, but the buffer here is only the `size` bytes copied in by the VFS.
The `lustre.` xattr namespace needs only write permission on the inode, so any file owner can trigger it:
setxattr(f, "lustre.lov.add", buf, 8, 0); /* buf starts with LOV_USER_MAGIC_COMP_V1 */
That reads lcm_entry_count past the end of an 8-byte allocation and keeps reading for up to ~3MB. KASAN reports it as slab-out-of-bounds. Before this patch, little-endian clients only read `lmm_magic` here.
The next change in the series ("utils: add 'lfs find' support for compressed file") adds a `size < need` check just above this call. Since this patch introduces the read, should that check move here? Passing `size` into lustre_check_lov_user_md(), the way lustre_swab_lov_user_md() takes one, would also let it validate the buffer itself.
reply Gerrit AI review for Lustre lod_qos.c:3191 — (minor) This applies the chunk adjustment to every component including extension ones, where llc_stripe_size holds the extension size rather
Gerrit AI review for Lustre
(minor) This applies the chunk adjustment to every component including extension ones, where llc_stripe_size holds the extension size rather than a real stripe size. lod_declare_layout_add() deliberately skips LCME_FL_EXTENSION components for exactly that reason, so the same input layout gets different chunk_lum_bits depending on whether it arrives via create or via --component-add. Should this site skip extension components as well? While there: the comment added in lod_declare_layout_add() says chunk adjustment is deferred until instantiation, but nothing calls lod_adjust_compr_chunk_size() on the instantiation path - the only three callers are here, lod_declare_layout_add() and lod_striping_from_default().
reply Gerrit AI review for Lustre pack_generic.c:2672 — (defect) -ENOTSUPP (524) is kernel-internal and has no userspace errno, so this reaches `lfs setstripe` through ioctl()/setxattr() as "Unkno
Gerrit AI review for Lustre
(defect) -ENOTSUPP (524) is kernel-internal and has no userspace errno, so this reaches `lfs setstripe` through ioctl()/setxattr() as "Unknown error 524". The erasure-coding check just above it in ll_lov_setstripe_ea_info() returns -EOPNOTSUPP for the same kind of rejection. Should this be -EOPNOTSUPP too? While here, a couple of nits: `rc` is never changed from 0, there's a double blank line after the EXPORT_SYMBOL(), and the default case in lustre_check_lov_user_md() logs "Invalid LOV magic" but still returns 0.
tags: csdc
owner Marc Vef · uploader Roman Bolshakov · PS15 uploaded 29d ago · NEW · open in Gerrit ↗
commit message
LU-10026 csdc: set compress component for file
Introduce per-component compression support for composite LOV layouts.
A new LCME_FL_COMPRESS component flag marks entries that carry
compress fields; the flag is set when the user supplies a compression
type via 'lfs setstripe -Z' and is propagated through the LOD and LOV
layers so that compressed components are distinguished from plain
ones.
LOD layer:
- lod_parse_striping(): read lcme_compr_type/lvl/chunk_lum_bits from
the user-supplied lov_comp_md_v1 when LOV_PATTERN_COMPRESS is set.
- lod_use_defined_striping(): likewise for pre-defined layouts.
- lod_get_default_lov_striping(): carry compress fields into the LOD
component when inheriting a default layout that includes
compression.
- lod_generate_lovea(): serialise llc_compr_* fields into the on-wire
lcm entry when LOV_PATTERN_COMPRESS is set.
- lod_adjust_compr_chunk_size(): new helper that rounds down the
requested chunk-size exponent so the chunk fits evenly within one
stripe and within one RPC (clamped to COMPR_CHUNK_MAX_BITS in the
following changes).
API / utils layer:
- 'lfs setstripe' gains --compress|-Z <type>[:<level>] and
--compress-chunk=<size> options to set the compression type, level,
and chunk size on a new component. Like -S and -c, -Z is inherited
by subsequent -E components unless overridden by another -Z.
Example:
$ lfs setstripe -Eeof -Z lz4:5 --compress-chunk=512 <file>
- 'lfs getstripe' gains --compress-type, --compress-level, and
--compress-chunk options to print individual compress parameters:
Example:
$ lfs getstripe <file>
lcme_compr_type: lz4
lcme_compr_lvl: 5
lcme_compr_chunk_kb: 512
lmm_pattern: raid0,compress
- llapi_layout_merge(): copy compress fields when merging layouts.
- Two new man3 pages: llapi_layout_compress_set.3 and
llapi_parse_compress_type.3.
Misc:
- dump_lsm() in lov_ea.c prints compress fields for debugging.
- compr_name_from_type() helper added in lov_internal.h and wired up
in dump_lsm() to print compression type names in debug output.
Test-Parameters: testlist=sanity-pfl serverversion=2.17
Signed-off-by: Bobi Jam <bobijam@whamcloud.com>
Signed-off-by: Artem Blagodarenko <ablagodarenko@ddn.com>
Signed-off-by: Marc Vef <mvef@whamcloud.com>
Signed-off-by: Roman Bolshakov <rbolshakov@ddn.com>
Change-Id: Ife0382469cbc5099e0c6dc96534bb169ddeff61e
Was-Change-Id: Ib1e2123ffdb239c3e1401d682ae9c2c49e3f4a6f
63539
master
J !B ✓T ✗1R -1/2−
LU-19822 lnet: interfaces can be manually disabled
reviewing Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
11 unresolved
L +342 −11
13d
LU-19822 lnet: interfaces can be manually disabled
reviewing Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
11 unresolved
L +342 −11
13d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
awaiting review (CI not green yet)
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-dne-arm | RHEL 8.10 / x86_64, Rocky 9.8 / aarch64 | ran 5 tests. 1 tests failed: sanity. | session |
build #132750 SUCCESS · tests all Maloo sessions
no vote yet: Serguei Smirnov, Chris Horn
patchsets:
PS1 01-23
PS2 01-23 Janitor Bot
PS3 03-09
PS4 05-20
PS5 10-02
threads: 10 need your reply · 0 waiting on others · 1 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (style) This isn't a bug, but the subject describes a state rather than an action. Something imperative such as "lnet: allow LNet interfaces
Gerrit AI review for Lustre
(style) This isn't a bug, but the subject describes a state rather than an action. Something imperative such as "lnet: allow LNet interfaces to be manually disabled" would match the usual convention. Also, the body calls this "an lnetctl tunable", but what the patch adds is the `lnetctl net disable` / `lnetctl net enable` command pair.
reply Gerrit AI review for Lustre COMMIT_MSG:25 — (minor) Does "sends are routed over the other available interfaces" hold for non-MR peers? For those, lnet_select_preferred_best_ni() and ln
Gerrit AI review for Lustre
(minor) Does "sends are routed over the other available interfaces" hold for non-MR peers? For those, lnet_select_preferred_best_ni() and lnet_handle_any_router_nmr_dst() reuse the preferred local NI recorded by lnet_set_non_mr_pref_nid(). If that NI is disabled, lnet_handle_send() returns -ENETDOWN for every non-reserved-portal send to the peer, even when other healthy NIs exist on the same net. It may be the right choice, since non-MR peers need a stable source NID, but the commit message should say so. Otherwise admins disabling an interface on a node that talks to non-MR or discovery-disabled peers will be surprised.
note James Simmons api-ni.c:4900 — We really should use the Netlink interface. Once its not net namespace aware and second there is a limit to how many interfaces you can disa
James Simmons
We really should use the Netlink interface. Once its not net namespace aware and second there is a limit to how many interfaces you can disable at a time compared to Netlink.
reply Gerrit AI review for Lustre api-ni.c:4532 — (defect) When the NI is re-enabled, does anything restore *ni->ni_status to LNET_NI_STATUS_UP? Two paths write DOWN into the ping buffer whi
Gerrit AI review for Lustre
(defect) When the NI is re-enabled, does anything restore *ni->ni_status to LNET_NI_STATUS_UP? Two paths write DOWN into the ping buffer while the NI is disabled: - on a router, lnet_update_ni_status_locked() does it directly - on any node, a ping buffer rebuild such as `lnetctl net add`/`del` of another NI goes through lnet_ping_target_update()->lnet_ping_target_install_locked(). That stores ns_status = lnet_ni_get_status_locked(ni), which is DOWN for a disabled NI After `net enable`, lnet_ni_get_status_locked() falls through to *ni->ni_status, which is still DOWN. On a non-router nothing ever flips it back: the UP update in lnet_parse() requires lnet_routing_enabled(), and lnet_inc_ni_healthv() only sets UP on a health transition. As a result, `lnetctl net show` keeps reporting the NI as down, and peers keep seeing it DOWN in ping/push data. Should the enable path set the status back to UP (when the NI is not fatal) and push the update, and the disable path set DOWN symmetrically on non-routers as well?
reply Chris Horn lib-move.c:1501 — The two "goto select_ni" above could mean we select an NI that has been disabled. Administratively disabled should probably be the first che
Chris Horn
The two "goto select_ni" above could mean we select an NI that has been disabled. Administratively disabled should probably be the first check as it is a human operator telling us explicitly not to use an interface.
reply Gerrit AI review for Lustre lib-move.c:1508 — (minor) Every caller of lnet_find_best_ni_on_spec_net() passes cur_best_ni == NULL, so best_ni is always NULL here. The NI also can't be dis
Gerrit AI review for Lustre
(minor) Every caller of lnet_find_best_ni_on_spec_net() passes cur_best_ni == NULL, so best_ni is always NULL here. The NI also can't be disabled underneath us, because lnet_ni_set_disabled() takes LNET_LOCK_EX and our caller holds a cpt lock. As far as I can tell this block is dead code, and the "selected on another net before the admin disabled it" case in the comment can't happen. If the patch is refreshed, consider dropping it.
reply Gerrit AI review for Lustre lib-move.c:1539 — (defect) With this skip, lnet_get_best_ni() can return NULL for a net that still has NIs configured; before this change it always returned o
Gerrit AI review for Lustre
(defect) With this skip, lnet_get_best_ni() can return NULL for a net that still has NIs configured; before this change it always returned one. Some callers pick the net first, without considering whether any NI on it is usable: - lnet_find_route_locked() uses lnet_find_best_lpni(NULL, NULL, gw, LNET_NET_ANY), which can choose a gateway NI on a net whose local NIs are all disabled. lnet_handle_find_routed_path() then hits the "Internal Error. Expected local ni on %s but non found" CERROR and returns -EFAULT. With routes over two local nets (e.g. o2ib and tcp) and all o2ib NIs disabled to "block certain routes", some sends to the remote net would fail this way instead of using the tcp route. - lnet_find_best_ni_on_local_net() compares lpn_healthv and lpn_sel_priority before net health, so a fully disabled net with a UDSP-preferred or healthier peer net still wins. The NULL best_ni then turns into PASS_THROUGH to the routed path, even though another local net could reach the peer directly. Should route and net selection skip nets with no enabled NI, e.g. via lnet_get_net_healthv_locked() or a helper that checks for at least one enabled NI?
reply Gerrit AI review for Lustre router.c:1734 — (minor) The comment says lnet_local_ni_superseded() uses the same ordering as lnet_get_best_ni(), but it doesn't skip manually disabled NIs.
Gerrit AI review for Lustre
(minor) The comment says lnet_local_ni_superseded() uses the same ordering as lnet_get_best_ni(), but it doesn't skip manually disabled NIs. Take a disabled NI A at full health and an enabled NI B with a reduced health value. Here B is considered superseded by A, so with discovery disabled on the gateway, lnet_notify() for a gateway failure reported via B no longer marks the route down, even though path selection can never use A. Should a disabled `alt` be skipped here as well?
reply Chris Horn lnetctl.c:3638 — `default: return 0;` reports success on an unrecognized or malformed option. getopt_long returns '?' for both an unknown flag and a known fl
Chris Horn
`default: return 0;` reports success on an unrecognized or malformed option. getopt_long returns '?' for both an unknown flag and a known flag missing its argument, so e.g. `lnetctl net disable --net tcp --bogus` or `lnetctl net disable --net` exits 0 having done nothing. Return an error here (e.g. `return -EINVAL;`) so invalid invocations fail. The test_229 negative cases only exercise *missing* options, not this path.
reply Gerrit AI review for Lustre lnetctl.c:192 — (minor) The new `lnetctl net disable` / `lnetctl net enable` commands, and the `manually_disabled` field in `net show -v 2`, aren't document
Gerrit AI review for Lustre
(minor) The new `lnetctl net disable` / `lnetctl net enable` commands, and the `manually_disabled` field in `net show -v 2`, aren't documented in Documentation/man8/lnetctl.8. If the patch is refreshed, could the man page be updated in the same change?
reply Timothy Day sanity-lnet.sh:4481 — I should have a test case that ensures that a ping from a disabled interface or to a disabled interface fails.
Timothy Day
I should have a test case that ensures that a ping from a disabled interface or to a disabled interface fails.
owner Timothy Day · uploader Timothy Day · PS5 uploaded 32d ago · NEW · open in Gerrit ↗
commit message
LU-19822 lnet: interfaces can be manually disabled Implement lnetctl net disable/enable to allow admins to selectively block traffic on LNet interfaces. Currently, the only way to manually disable an LNet interface is to delete it. An lnetctl tunable would give admins a network agnostic method to temporarily block traffic to a subset of clients or block certain routes. The request is sent over Netlink as a "disabled" key in the local NI section of an LNET_CMD_NETS NLM_F_REPLACE message, so no new ioctl is needed and several interfaces can be changed with a single command: lnetctl net disable --net tcp --if eth0,eth1 This patch also implements the needed kernel infrastructure. A disabled interface is never considered by local NI selection, so sends are routed over the other available interfaces (if any). Sends that name a disabled interface as the source fail with -ENETDOWN. recv are dropped outright. The state is reported as "manually_disabled" in the health stats of 'lnetctl net show -v 2', so admins can tell why an interface is down. Test-Parameters: trivial Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: I2387ef98f265b3fa77a5b8a22413a5c29b4c627f
69495
master
J –B ✗T –R 0/2
LU-20315 ptlrpc: mark module init functions __init
reviewing Timothy Day · blocked on the owner: build failure
3 unresolved
S +22 −22
21d
LU-20315 ptlrpc: mark module init functions __init
reviewing Timothy Day · blocked on the owner: build failure
3 unresolved
S +22 −22
21d
blocked on the owner: build failure
awaiting review (CI not green yet)
build #133575 FAILURE
no vote yet: Arshad Hussain
patchsets:
PS1 10-07
PS2 10-13
threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (style) The subject has no LU-XXXXX ticket. The earlier __init/__exit cleanups in this series (libcfs, lnet, target, obdclass) all used LU-2
Gerrit AI review for Lustre
(style) The subject has no LU-XXXXX ticket. The earlier __init/__exit cleanups in this series (libcfs, lnet, target, obdclass) all used LU-20315 "Fix missing __init and __exit annotations". Should this be "LU-20315 ptlrpc: mark module init functions __init"? LU-20315 is currently marked Done, so it may need reopening or a new ticket.
reply Gerrit AI review for Lustre COMMIT_MSG:13 — (minor) The gss flavour isn't reached from ptlrpc_init(). gss_init_tunables() and gss_init_at_reply_offset() are in the separate ptlrpc_gss.
Gerrit AI review for Lustre
(minor) The gss flavour isn't reached from ptlrpc_init(). gss_init_tunables() and gss_init_at_reply_offset() are in the separate ptlrpc_gss.ko module and are called from sptlrpc_gss_init(). If the patch is refreshed, consider rewording, e.g. "... and the gss module's init helpers called from sptlrpc_gss_init()".
reply Gerrit AI review for Lustre wiretest.c:33 — (minor) This file is generated by `make -C lustre/utils newwiretest`, which copies wirehdr.c and then appends the output of wirecheck. wirec
Gerrit AI review for Lustre
(minor) This file is generated by `make -C lustre/utils newwiretest`, which copies wirehdr.c and then appends the output of wirecheck. wirecheck.c main() still prints "void lustre_assert_wire_constants(void)", so the next wire-protocol change that regenerates this file will silently drop the __init. This function is also by far the largest one in the patch. The same generator output is used for the userspace lustre/utils/wiretest.c, so wirecheck can't just emit __init. Options: put the __init on the prototype in ptlrpc_internal.h instead, or have wirecheck emit __init and define it as empty in lustre/utils/wirehdr.c.
owner Timothy Day · uploader Timothy Day · PS2 uploaded 21d ago · NEW · open in Gerrit ↗
commit message
LU-20315 ptlrpc: mark module init functions __init The helpers that ptlrpc_init() calls once at module load, and the helpers they call in turn, are only reachable during initialisation: request cache and XID setup, connection table, LNet portals, lproc and sysfs registration, NRS, the pinger, the HR threads, sptlrpc and its null, plain and gss flavours, nodemap, early reply size and the wire constant assertions. Mark them __init so the kernel places them in the init section and frees them once ptlrpc_init() returns, instead of keeping them resident for the life of the module. Test-Parameters: trivial Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: I5e37805c5b11489b92cadc360a842ab36a6a6964
64263
master
J !B ✗T –R ✗
LU-19938 lnet: CONFIG_MEM_ALLOC_PROFILING support
reviewing Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; build failure; Timothy Day voted -1
needs rebaseCR -1
S +11 −5
22d
LU-19938 lnet: CONFIG_MEM_ALLOC_PROFILING support
reviewing Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; build failure; Timothy Day voted -1
needs rebaseCR -1
S +11 −5
22d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; build failure; Timothy Day voted -1
awaiting review (CI not green yet)
janitor run: build failed — no tests ran — janitor results
build #121991 FAILURE
reviews:
Timothy Day -1
no vote yet: Alex Zhuravlev
owner Timothy Day · uploader Timothy Day · PS1 uploaded 249d ago · NEW · open in Gerrit ↗
commit message
LU-19938 lnet: CONFIG_MEM_ALLOC_PROFILING support Support CONFIG_MEM_ALLOC_PROFILING by wrapping our allocators in alloc_hooks. We may need to update other functions as well. Test-Parameters: forbuildonly Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: I0263ead8233800aa0eb14ba4c466974d471d3380
54552
master
J !B ✓T ✗2R -1/2−
LU-17671 libcfs: track each OBD_ALLOC()
reviewing Alex Zhuravlev · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
1 unresolved
M +188 −13
22d
LU-17671 libcfs: track each OBD_ALLOC()
reviewing Alex Zhuravlev · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
1 unresolved
M +188 −13
22d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
awaiting review (CI not green yet)
janitor run: 2 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-selinux-ssk-part-1 crashed | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-selinux-ssk-part-2 crashed | RHEL 8.10 / x86_64 | ran 9 tests. 3 tests failed: sanity-selinux, sanity-sec, recovery-small. %% THIS TEST SESSION CRASHED %% | session |
build #131936 SUCCESS · tests all Maloo sessions
no vote yet: Neil Brown, Timothy Day
patchsets:
PS40 03-24
PS41 05-11
PS42 06-16
PS43 06-28
PS44 09-18
+39 earlier
PS1 03-25 PS2 03-26 PS3 03-27 PS4 03-28 PS5 03-28 PS6 03-28 PS7 03-28 PS8 03-29 PS9 03-29 PS10 03-29 PS11 03-29 PS12 04-05 PS13 05-23 PS14 11-13 PS15 11-13 PS16 11-15 PS17 11-15 PS18 11-15 PS19 11-16 PS20 11-17 PS21 11-24 PS22 12-06 PS23 12-08 PS24 12-11 PS25 01-23 PS26 01-23 PS27 02-12 PS28 02-21 PS29 03-18 PS30 06-06 PS31 10-30 PS32 10-30 PS33 10-30 PS34 10-30 PS35 10-30 PS36 10-31 PS37 11-07 PS38 12-17 PS39 03-24threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — lustre/llite/file.c:
Misc Code Checks Robot (Gatekeeper helper)
lustre/llite/file.c: parse ll_file_ioctl():error: Function too hairy. Giving up. 5 seconds warn: ll_file_ioctl():Function too hairy. No more merges.
owner Alex Zhuravlev · uploader Alex Zhuravlev · PS44 uploaded 47d ago · NEW · open in Gerrit ↗
commit message
LU-17671 libcfs: track each OBD_ALLOC() and dump leaked ones when a module is being unloaded Test-Parameters: fortestonly Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com> Change-Id: Ia499928bde821cc3a6b558a175b0e279bdfc68fa
53190
master
J !B ✓T ✗1R -1/2−
LU-15372 mdd: Add projid in Changelog
reviewing Arshad Hussain · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
26 unresolved
L +400 −52
22d
LU-15372 mdd: Add projid in Changelog
reviewing Arshad Hussain · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
26 unresolved
L +400 −52
22d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
awaiting review (CI not green yet)
janitor run: 1 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-zfs-part-7 failed 2× | RHEL 9.7 / x86_64 | ran 6 tests. 1 tests failed: sanity-ec. | session |
build #129922 SUCCESS · tests all Maloo sessions
no vote yet: Robert Read, Etienne AUJAMES, Aurelien Degremont, Andreas Dilger
patchsets:
PS53 08-10 Etienne AUJAMES
PS54 08-14 Etienne AUJAMES
PS55 08-19 Etienne AUJAMES
PS56 08-20 Etienne AUJAMES
PS57 08-21 Etienne AUJAMES
+52 earlier
PS1 11-21 PS2 11-29 PS3 11-30 PS4 05-02 PS5 05-02 PS6 05-02 PS7 05-06 PS8 05-07 PS9 05-07 PS10 05-08 PS11 05-09 PS12 05-12 PS13 05-12 PS14 05-14 PS15 05-14 PS16 05-19 PS17 06-21 PS18 06-22 PS19 06-28 PS20 12-07 PS21 04-01 PS22 04-07 PS23 04-08 PS24 04-11 Andreas Dilger PS25 04-13 PS26 04-13 PS27 04-13 PS28 04-25 PS29 05-11 PS30 05-13 PS31 05-17 PS32 06-08 Etienne AUJAMES PS33 06-08 Etienne AUJAMES PS34 06-09 PS35 06-09 PS36 06-09 Etienne AUJAMES PS37 06-09 Etienne AUJAMES PS38 06-09 PS39 06-09 PS40 06-09 Etienne AUJAMES PS41 06-10 PS42 06-10 Etienne AUJAMES PS43 06-10 Etienne AUJAMES PS44 06-11 Etienne AUJAMES PS45 06-11 Etienne AUJAMES PS46 06-11 Etienne AUJAMES PS47 06-11 Etienne AUJAMES PS48 06-12 Etienne AUJAMES PS49 06-12 Etienne AUJAMES PS50 07-16 Etienne AUJAMES PS51 07-22 Etienne AUJAMES PS52 08-07 Etienne AUJAMESthreads: 26 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:15 — The "Before change" record shows `ef=0x33`, but 0x33 already includes CLFE_PROJID (0x20), which does not exist before this patch. Should tha
Gerrit AI review for Lustre
The "Before change" record shows `ef=0x33`, but 0x33 already includes CLFE_PROJID (0x20), which does not exist before this patch. Should that read `ef=0x13` (CLFE_UIDGID|CLFE_NID|CLFE_NID_BE)?
reply Gerrit AI review for Lustre COMMIT_MSG:24 — mdd_llog_record_calc_size() also gained a `type` argument and now adds CLFE_OPEN / CLFE_XATTR to the declared record size. That is independe
Gerrit AI review for Lustre
mdd_llog_record_calc_size() also gained a `type` argument and now adds CLFE_OPEN / CLFE_XATTR to the declared record size. That is independent of projid: before this patch a CL_SETXATTR / CL_GETXATTR declare computed llog_data_len(24 + 144) = 168, while the record written by mdd_changelog_data_store_by_fid() is 24 + 144 + sizeof(struct changelog_ext_xattr) = 424 bytes, so the declared length was short by 256 bytes. Could the commit message say that this hunk fixes the under-declared record length for the OPEN/XATTR record types? It is a separate fix and would deserve its own `Fixes:` tag if split out.
reply Arshad Hussain lustre_user.h:1922 — Yes. We need to change the commit message for this.
Arshad Hussain
(we need to add ) CL_PROJID = 25?
Etienne AUJAMES
No, this enum is for changelog type. e.g: ``` 07RMDIR 06:25:21.451572548 2026.06.12 0x1 t=[0x2000013a1:0x7f7d:0x0] j=rmdir.0 ``` CL_RMDIR = 7 is the changelog type. But here we don't add a new type but a new field that can be added for every types.
Arshad Hussain
Yes. We need to change the commit message for this.
reply Arshad Hussain lustre_user.h:1932 — (add here as well) NOPEN, "PROJID", ?
Arshad Hussain
(add here as well) NOPEN, "PROJID", ? So, we can have ability to mdd.<MDT>.changelog_mask=+PROJID ?
reply Gerrit AI review for Lustre lustre_user.h:2168 — (suggestion) Once CLFE_PROJID ships, changelog_extra_field_size(CLFE_PROJID) is frozen at 4 bytes forever, so this struct can never grow wit
Gerrit AI review for Lustre
(suggestion) Once CLFE_PROJID ships, changelog_extra_field_size(CLFE_PROJID) is frozen at 4 bytes forever, so this struct can never grow without burning a second CLFE_* bit. Would a reserved word now be worth it?
struct changelog_ext_projid {
__u32 cep_projid;
__u32 cep_padding;
};
changelog_ext_nid carries `extra`/`padding` for the same reason, and it would also leave room for the file attribute flags (immutable, projinherit, ...) that were discussed on an earlier patch set and then dropped.
reply Etienne AUJAMES mdc_changelog.c:315 — We did not asked for projid field (otherwise, changelog_trim() will remove projid field to provide a compatible record for old client).
Etienne AUJAMES
We did not asked for projid field (otherwise, changelog_trim() will remove projid field to provide a compatible record for old client).
reply Gerrit AI review for Lustre mdd_internal.h:906 — (style) Not a bug, but the name reads like a getter while the return value is 0/-ENOENT, so all three call sites end up as `if (!mdd_changel
Gerrit AI review for Lustre
(style) Not a bug, but the name reads like a getter while the return value is 0/-ENOENT, so all three call sites end up as `if (!mdd_changelog_projid(...))` meaning "a projid was found" - which reads backwards.
A boolean would say what the call sites actually mean:
if (mdd_changelog_get_projid(env, type, &projid))
xflags |= CLFE_PROJID;
reply Gerrit AI review for Lustre mdd_internal.h:906 — (style) This returns 0 / -ENOENT but every caller uses it as a predicate (`if (!mdd_changelog_projid(...))`). A `bool` return and a name tha
Gerrit AI review for Lustre
(style) This returns 0 / -ENOENT but every caller uses it as a predicate (`if (!mdd_changelog_projid(...))`). A `bool` return and a name that reads like a getter (mdd_changelog_get_projid()) would make the call sites easier to read. The `else if (parent && (parent->la_valid & LA_PROJID)) p = 0;` branch also assigns a value `p` already holds; it only exists to pick 0-vs-ENOENT, which a comment would make clearer.
reply Gerrit AI review for Lustre mdd_object.c:2098 — This record is for `vic`, but the projid ends up being `obj`'s. mdd_changelog_data_store() only passes the FID down, and mdd_changelog_proji
Gerrit AI review for Lustre
This record is for `vic`, but the projid ends up being `obj`'s. mdd_changelog_data_store() only passes the FID down, and mdd_changelog_projid() reads MDD_ENV_VAR(env, cattr), which mdd_xattr_set() filled from `md_obj` (the source file) before calling mdd_xattr_split(). Chain: `lfs mirror split --mirror-id N src -f dst` -> LL_LEASE_LAYOUT_SPLIT -> mdt_close_handle_layouts() (mdt_open.c:2386, `mdt_object_child(o)` is src) -> mdd_xattr_set() -> mdd_la_get(obj, cattr) -> mdd_xattr_split() -> the two CL_LAYOUT records here. `dst` is opened at a user-supplied path in mirror_split() (lfs.c:2843), so it can live under a directory with a different project. Nothing in mdd_xattr_split() copies the projid across, unlike mdd_xattr_merge() which sets vic's projid from cattr first, so the record for `dst` reports src's project. Should the projid be read from the object the record names?
reply Arshad Hussain llog_osd.c:896 — Etienne, you are correct and thanks for the detail explaination!
Etienne AUJAMES
Please check the https://review.whamcloud.com/28251. The computed offset is not correct.
Arshad Hussain
Alright, It have been sometime, I will check this. Will get back with findings.
Arshad Hussain
Is this the problem you see? Currently, projid is moved after XATTR. Since this is part of XATTR it should be moved along with XATTR and not after. I will get this changed.
Etienne AUJAMES
Please check https://review.whamcloud.com/c/fs/lustre-release/+/28251/22/lustre/include/uapi/linux/lustre/lustre_user.h#1504
e.g: xattr_mov should be unchanged:
```
max_xattr_mov = sizeof(struct changelog_ext_rename) +
sizeof(struct changelog_ext_jobid) +
sizeof(struct changelog_ext_extra_flags) +
sizeof(struct changelog_ext_uidgid) +
sizeof(struct changelog_ext_nid) +
sizeof(struct changelog_ext_openmode);
```
But now with:
```
xattr_mov = (char *)rec +
changelog_rec_offset(
(enum changelog_rec_flags)
(crf_wanted & CLF_SUPPORTED),
(enum changelog_rec_extra_flags)
(cref_want & ~CLFE_XATTR))
```
You get:
```
max_xattr_mov = sizeof(struct changelog_ext_rename) +
sizeof(struct changelog_ext_jobid) +
sizeof(struct changelog_ext_extra_flags) +
sizeof(struct changelog_ext_uidgid) +
sizeof(struct changelog_ext_nid) +
sizeof(struct changelog_ext_openmode) +
sizeof(struct changelog_ext_projid);
```
So you should update all the *_mov to unset CLFE_PROJID:
```
xattr_mov = (char *)rec +
changelog_rec_offset(
(enum changelog_rec_flags)
(crf_wanted & CLF_SUPPORTED),
(enum changelog_rec_extra_flags)
(cref_want & ~(CLFE_XATTR|CLFE_PROJID)))
```
Notes here to help the syntax:
```
cref_want & ~(CLFE_XATTR|CLFE_PROJID) == cref_want & (CLFE_XATTR - 1)
```
So you can use something like this to avoid those kind of errors in the future:
```
#define CLFE_PROJID_MASK = (CLFE_PROJID - 1)
#define CLFE_XATTR_MASK = (CLFE_XATTR - 1)
...
#define CLFE_UIDGID_MASK = (CLFE_UIDGID - 1)
...
uidgid_mov = (char *)rec +
changelog_rec_offset(
(enum changelog_rec_flags)
(crf_wanted & CLF_SUPPORTED),
(enum changelog_rec_extra_flags)
(cref_want & CLFE_UIDGID_MASK));
```
Arshad Hussain
Etienne, you are correct and thanks for the detail explaination! Added CLFE_BEFORE_MASK macro as you have mentioned. Done
reply Arshad Hussain llog_osd.c:931 — This is correct, I added this in PS41. But this masked out all PROJID. That is reason we see the failure now, IMO. I am checking.
Arshad Hussain
This is correct, I added this in PS41. But this masked out all PROJID. That is reason we see the failure now, IMO. I am checking.
Before
```
$ bpftrace -e 'kprobe:changelog_trim_rec { printf("rec: %p, crf_want: %d, cref_want: %d\n", arg0, arg1, arg2); }'
Attaching 1 probe...
rec: 0xffff888010368010, crf_want: 12288, cref_want: 32
rec: 0xffff8880103680c0, crf_want: 12288, cref_want: 32
```
After
```
$ bpftrace -e 'kprobe:changelog_trim_rec { printf("rec: %p, crf_want: %d, cref_want: %d\n", arg0, arg1, arg2); }'
Attaching 1 probe...
rec: 0xffff93c473000010, crf_want: 12288, cref_want: 0
rec: 0xffff93c4730000b8, crf_want: 12288, cref_want: 0
```
reply Gerrit AI review for Lustre sanity-sec.sh:10335 — (style) Not a bug, but this leaves a double blank line before the `is_rmentry_supported` block.
Gerrit AI review for Lustre
(style) Not a bug, but this leaves a double blank line before the `is_rmentry_supported` block.
owner Arshad Hussain · uploader Etienne AUJAMES · PS57 uploaded 75d ago · NEW · open in Gerrit ↗
commit message
LU-15372 mdd: Add projid in Changelog This patch adds projid support into Changelog. Projid would be printed under section "projid=". # touch /mnt/lustre/f1 Before change: 01CREAT 0x0 t=[0x200000401:0x7:0x0] j=touch.0 ef=0x33 u=0:0 nid=0@lo p=[0x200000401:0x5:0x0] f1 After change: 01CREAT 0x0 t=[0x200000402:0x4:0x0] j=touch.0 ef=0x33 u=0:0 nid=0@lo projid=7200 p=[0x200000402:0x3:0x0] f1 This patch introduces the mdd_key_exit() callback to reset the la_valid flag for all attributes used in the MDD thread context, ensuring these attributes can be safely used to determine project IDs. Add regression test sanity 160z and update 160u to handle the new changelog format. This needs project quota enabled for ZFS. restore_project_quota(), project_quota_enabled() have been added in test-framework.sh for this purpose. Test-Parameters: testlist=sanity clientversion=2.15 env=ONLY=160 Test-Parameters: testlist=sanity serverversion=2.15 env=ONLY=160 Test-Parameters: testlist=sanity env=ONLY=160z,ONLY_REPEAT=20 Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Signed-off-by: Etienne AUJAMES <eaujames@ddn.com> Change-Id: Ie716fd812e2cb3e24c7a5cd04a1ec43b31eb4c23
41689
master
J !B ✗T –R 0/2
LU-14407 osd-zfs: add basic direct IO support
reviewing Brian Behlendorf · blocked on the owner: build failure
31 unresolved
L +500 −47
41d
LU-14407 osd-zfs: add basic direct IO support
reviewing Brian Behlendorf · blocked on the owner: build failure
31 unresolved
L +500 −47
41d
blocked on the owner: build failure
awaiting review (CI not green yet)
janitor run: build failed — no tests ran — janitor results
build #132233 FAILURE
no vote yet: Olaf Faaland, Migeljan Imeri, Brian Atkinson, Timothy Day, Patrick Farrell (personal), Akash B, Alex Zhuravlev
patchsets:
PS8 09-15 Migeljan Imeri
PS9 09-15 Migeljan Imeri
PS10 09-15 Migeljan Imeri
PS11 09-22 Migeljan Imeri
PS12 09-23 Migeljan Imeri
+5 earlier
PS3 12-16 Timothy Day PS4 05-02 James Simmons PS5 05-04 Jihyeon Gim PS6 06-18 Migeljan Imeri PS7 06-26 Migeljan Imerithreads: 30 need your reply · 1 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — The autoconf test added here needs both DMU_DIRECTIO and DMU_UNCACHEDIO, and the comment next to it in lustre-build-zfs.m4 calls it a "ZFS 2
Gerrit AI review for Lustre
The autoconf test added here needs both DMU_DIRECTIO and DMU_UNCACHEDIO, and the comment next to it in lustre-build-zfs.m4 calls it a "ZFS 2.4 check". If DMU_UNCACHEDIO only appeared in 2.4, then HAVE_DMU_DIRECT stays undefined on 2.3 and the whole feature compiles out there, which does not match "As of OpenZFS 2.3". Should the uncached-IO probe be a separate test so 2.3 still gets plain direct IO?
reply Gerrit AI review for Lustre COMMIT_MSG:19 — This says the mechanism has no granularity and that "standard" means direct IO is only done when requested, and further down that the defaul
Gerrit AI review for Lustre
This says the mechanism has no granularity and that "standard" means direct IO is only done when requested, and further down that the default behavior is unchanged unless direct=always is set. osd_dmu_use_direct() does something different: under ZFS_DIRECT_STANDARD it returns B_TRUE unconditionally when od_nonrotational is set, and otherwise whenever the IO or file size crosses od_writethrough_max_iosize / od_readcache_max_iosize / od_readcache_max_filesize. Combined with the new od_nonrotational auto-detection at mount, an existing pool can switch to direct IO for all OST traffic without any property change. Can the message describe the actual "standard" policy?
reply Gerrit AI review for Lustre COMMIT_MSG:32 — (typo) "advantge" -> "advantage". Also "honor these setting" a few lines up reads better as "these settings".
Gerrit AI review for Lustre
(typo) "advantge" -> "advantage". Also "honor these setting" a few lines up reads better as "these settings".
reply Gerrit AI review for Lustre COMMIT_MSG:36 — Several user-visible hunks are not described here: the new `readcache_max_io_mb` and `writethrough_max_io_mb` sysfs tunables, the automatic
Gerrit AI review for Lustre
Several user-visible hunks are not described here: the new `readcache_max_io_mb` and `writethrough_max_io_mb` sysfs tunables, the automatic od_nonrotational detection (which also changes the OS_STATFS_NONROT flag reported to clients), the widening of `lnb_dio` to 2 bits in lustre/include/obd.h, and the new folio_lock()/folio_unlock() around the cached dio folios. Could the body cover those, or should any of them be split out?
reply Gerrit AI review for Lustre COMMIT_MSG:44 — This is osd-zfs only, and the default CI run is ldiskfs. Worth adding a `Test-Parameters: fstype=zfs ...` line so the new paths actually get
Gerrit AI review for Lustre
This is osd-zfs only, and the default CI run is ldiskfs. Worth adding a `Test-Parameters: fstype=zfs ...` line so the new paths actually get exercised before landing.
reply Timothy Day patchset comment — You might find https://review.whamcloud.com/c/fs/lustre-release/+/57453/1 interesting. We can wire up ZFS DIO to be per-IO, similar to what
Timothy Day
You might find https://review.whamcloud.com/c/fs/lustre-release/+/57453/1 interesting. We can wire up ZFS DIO to be per-IO, similar to what ldiskfs does.
reply Gerrit AI review for Lustre lustre-build-zfs.m4:611 — (style) `flags2` is set but never used, which will warn. The other tests in this file add a `(void) flag;` for exactly this - or just use it
Gerrit AI review for Lustre
(style) `flags2` is set but never used, which will warn. The other tests in this file add a `(void) flag;` for exactly this - or just use it in one of the calls below.
reply Gerrit AI review for Lustre obd.h:497 — (minor) The field is now tri-valued (0 none, 1 direct/fake folio, 2 unaligned - use DMU_UNCACHEDIO), but the comment still only describes th
Gerrit AI review for Lustre
(minor) The field is now tri-valued (0 none, 1 direct/fake folio, 2 unaligned - use DMU_UNCACHEDIO), but the comment still only describes the TLS-page meaning, and value 2 is not a TLS page at all. Worth spelling the three values out here since osd-ldiskfs also uses this field.
reply Gerrit AI review for Lustre osd_handler.c:584 — (minor) This comment is now stale - od_nonrotational is no longer "only set if explicitly set by the user", osd_mount() computes it. Worth u
Gerrit AI review for Lustre
(minor) This comment is now stale - od_nonrotational is no longer "only set if explicitly set by the user", osd_mount() computes it. Worth updating while the behavior is changing.
reply Gerrit AI review for Lustre osd_handler.c:795 — The unlock happens after the put. folio_alloc() in osd_dio_get_folio() leaves a single reference, so folio_put() here frees the folio and fo
Gerrit AI review for Lustre
The unlock happens after the put. folio_alloc() in osd_dio_get_folio() leaves a single reference, so folio_put() here frees the folio and folio_unlock() then touches freed memory. Even with the order swapped, PG_locked is in PAGE_FLAGS_CHECK_AT_FREE, so freeing a still-locked folio trips "BUG: Bad page state". The unlock has to come before the put.
reply Brian Behlendorf osd_handler.c:1190 — What I think we want is to only return that this is a non-rotational pool when there are no rotational devices (at all) in the vdev hierarch
Brian Behlendorf
What I think we want is to only return that this is a non-rotational pool when there are no rotational devices (at all) in the vdev hierarchy. The vd_nonrot value is propagated to the top-level parents, so I think something like this should work (untested):
```
static int
osd_detect_nonrotational(spa_t *spa)
{
vdev_t *rvd = spa->spa_root_vdev;
for (int i = 0; i < rvd->vdev_children; i++) {
vdev_t *vd = rvd->vdev_child[i];
if (vd->vdev_islog || vd->vdev_ishole)
continue;
if (vd->vdev_nonrot == B_FALSE)
return (B_FALSE);
}
return (B_TRUE);
}
```
reply Timothy Day osd_internal.h:1042 — This function was the biggest change compared to the earlier version of ZFS DIO. I think this is correct, but this needs a second look.
Timothy Day
This function was the biggest change compared to the earlier version of ZFS DIO. I think this is correct, but this needs a second look.
owner Brian Behlendorf · uploader Migeljan Imeri · PS12 uploaded 41d ago · NEW · open in Gerrit ↗
commit message
LU-14407 osd-zfs: add basic direct IO support
As of OpenZFS 2.3 direct IO is supported. This functionality allows
the zfs-osd to optionally bypass the ARC cache and perform the I/O
directly to the storage. This may improve performance when using a
fast flash based pool or large disk based pool.
The new "direct" dataset property can be used to enable direct IO
for the OSD. When set to "always" the DMU_DIRECTIO flag will always
be passed to the new DMU interface to request direct IO. When set
"disabled" direct IO will never be requested.
This initial mechanism provides no granularity so the long term
intent is to extend Lustre to only request direct IO when it makes
sense. This way the property can be left at its default value of
"standard" which indicates direct IO should only be done when
requested. However, supporting the "always" and "disabled" values
is important to make sure Lustre datasets honor these setting in
the same way as the ZFS Posix Layer. Hopefully, we'll be able to
take advantage of some of the existing Lustre/ldiskfs tunings to
control when direct IO should be performed.
The behavior of the existing DMU interfaces used by Lustre has not
been changed for OpenZFS 2.1. This means versions of Lustre without
this change can still be built against OpenZFS 2.1. They will simply
not be able to take advantge of the direct IO support.
Furthermore, new versions of Lustre with this change are compatible
with all OpenZFS releases. Again the default behavior will remain
unchanged unless the "direct=always" dataset property is manually set.
For reference, the new ZFS interfaces which can be used to request
direct IO by passing the DMU_DIRECTIO flag are the following:
- dmu_read_abd()
- dmu_write_abd()
Test-Parameters: fstype=zfs
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: MigeljanImeri <mimeri@lanl.gov>
Change-Id: I5a651a196f716feac671b71010733ea129543d38
67194
master
J !B ✓T ✗1R 0/2
LU-20162 obdclass: pin debugfs entries
reviewing Alex Zhuravlev · blocked on the owner: enforced tests failed
fortestonly
S +30 −4
47d
LU-20162 obdclass: pin debugfs entries
reviewing Alex Zhuravlev · blocked on the owner: enforced tests failed
fortestonly
S +30 −4
47d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 | RHEL 9.7 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. This build will be scored -1 since fortestonly was specif | session |
build #131892 SUCCESS · tests all Maloo sessions
patchsets:
PS1 07-13
PS2 07-13
PS3 09-17
tags: fortestonly
owner Alex Zhuravlev · uploader Alex Zhuravlev · PS3 uploaded 48d ago · NEW · open in Gerrit ↗
commit message
LU-20162 obdclass: pin debugfs entries pin debugfs entries so a racing umount blocks awaiting for them to get closed/release and only then release internal structures those debugfs entries may access. Test-Parameters: fortestonly fstype=zfs Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com> Change-Id: Id049cf6e9d2767de5e0b197b184ae36940583411
68661
master
J !B ✓T ✗1R 0/2
LU-18687 build: move aops compat code into fs.h
reviewing Shaun Tancheff · blocked on the owner: enforced tests failed
4 unresolved
L +271 −219
55d
LU-18687 build: move aops compat code into fs.h
reviewing Shaun Tancheff · blocked on the owner: enforced tests failed
4 unresolved
L +271 −219
55d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
janitor run: 4 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-dne | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
build #131407 SUCCESS · tests all Maloo sessions
patchsets:
PS1 09-05
PS2 09-09
PS3 09-09
PS4 09-09
threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:12 — (minor) The body describes the handler migration and the wbe_* removal, but a few hunks change behavior and aren't mentioned:
Gerrit AI review for Lustre
(minor) The body describes the handler migration and the wbe_* removal, but a few hunks change behavior and aren't mentioned: - cl_object.h and llite_lib.c drop the HAVE_MAPPING_SET_FOLIO_ORDER_RANGE gating of FGF_FOLIO_MAX_ORDER/FGF_FOLIO_MAX_SIZE and LL_SBI_LARGE_FOLIOS - ll_write_end() loses its `#ifdef SB_I_CGROUPWB` guard - ll_invalidate_folio() gains the OBD_FAIL_LLITE_PAGE_INVALIDATE_PAUSE block that used to exist only in ll_invalidatepage() - the HAVE_RELEASEPAGE_WITH_INT / RELEASEPAGE_ARG_TYPE handling and the `(void *)` cast on .releasepage are dropped Could these get a sentence each, or be split out? Also, the path in the second line is include/lustre_compat/linux/fs.h, not include/lustre_compat/fs.h.
reply Gerrit AI review for Lustre fs.h:372 — (minor) This is keyed off mapping_set_folio_order_range(), but fgf_set_order() itself is older: it is in include/linux/pagemap.h from v6.7,
Gerrit AI review for Lustre
(minor) This is keyed off mapping_set_folio_order_range(), but fgf_set_order() itself is older: it is in include/linux/pagemap.h from v6.7, while mapping_set_folio_order_range() only appears in v6.12. So on v6.7..v6.11 - which covers the 6.8 and 6.11 kernels - this macro replaces a working kernel helper with a stub, tree-wide, for everything that reaches lustre_compat.h. Harmless for the one caller in rw26.c today, since Lustre never turns on large folios on those kernels. But a later caller that wants the real thing gets 0 back with no build error to point at it. The compat helpers just above avoid that by keeping a Lustre name (ll_aops_read, ll_aops_release, ...). If the patch is refreshed, could this be an ll_fgf_set_order() wrapper, or a stub gated on its own HAVE_FGF_SET_ORDER test, rather than shadowing the kernel symbol? A name saying what it does would also read better than _safe.
reply Gerrit AI review for Lustre llite_lib.c:174 — (minor) With the HAVE_MAPPING_SET_FOLIO_ORDER_RANGE guard gone here and around FGF_FOLIO_MAX_ORDER in cl_object.h, kernels that cannot do la
Gerrit AI review for Lustre
(minor) With the HAVE_MAPPING_SET_FOLIO_ORDER_RANGE guard gone here and around FGF_FOLIO_MAX_ORDER in cl_object.h, kernels that cannot do large folios now set LL_SBI_LARGE_FOLIOS and ll_folio_max = 8. The IO paths are unaffected (mapping_set_folio_order_range() and fgf_set_order() are no-op stubs there), but llite.*.large_folios reads 1 and llite.*.folio_order_max reads 8 on a client that only ever allocates order-0 folios, and folio_order_max_store() will accept up to 8. Should these two tunables still reflect what the kernel can actually do?
reply Gerrit AI review for Lustre rw26.c:604 — (style) Not a bug, but the continuation lines still line up with the old `static int ll_write_begin(` opening paren, so they now sit one col
Gerrit AI review for Lustre
(style) Not a bug, but the continuation lines still line up with the old `static int ll_write_begin(` opening paren, so they now sit one column past `int ll_write_begin_kiocb(` - column 26 instead of 25. Same one-off in ll_write_end_kiocb() below and in both declarations in llite_internal.h; the copies in lustre_compat/linux/fs.h and the memfs_write_end_kiocb() ones are aligned correctly. Worth straightening if the patch is refreshed for anything else.
owner Shaun Tancheff · uploader Shaun Tancheff · PS4 uploaded 56d ago · NEW · open in Gerrit ↗
commit message
LU-18687 build: move aops compat code into fs.h Migrate the aops handlers into compat specific handlers in include/lustre_compat/fs.h This also allows us to kill the wbe_* macros Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun@tancheff.com> Change-Id: I900a1e73a44a3ce3abd387a5c573e8d7e9bad57f
52127
master
J !B ✓T ✗1R 0/2
LU-16796 quota: Change struct qmt_pool_info to use refcount_t
reviewing Arshad Hussain · blocked on the owner: enforced tests failed
lug23ddhackathon
4 unresolved
S +8 −9
61d
LU-16796 quota: Change struct qmt_pool_info to use refcount_t
reviewing Arshad Hussain · blocked on the owner: enforced tests failed
lug23ddhackathon
4 unresolved
S +8 −9
61d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
janitor run: 5 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-zfs-part-2 | RHEL 10.1 / x86_64 | ran 11 tests. 1 tests failed: sanity-lfsck. | session |
5 optional test failure(s) — informational
build #130897 SUCCESS · tests all Maloo sessions
no vote yet: Sergey Cheremencev, Andreas Dilger, Timothy Day
patchsets:
PS3 09-03
PS5 05-17
PS6 08-10
PS7 08-31
PS8 09-03
+2 earlier
PS1 08-28 PS2 08-28threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre qmt_internal.h:393 — (defect) refcount_inc() cannot take a counter back up from 0. It WARNs ("addition on 0; use-after-free") and pins the counter at REFCOUNT_SA
Gerrit AI review for Lustre
(defect) refcount_inc() cannot take a counter back up from 0. It WARNs ("addition on 0; use-after-free") and pins the counter at REFCOUNT_SATURATED, after which refcount_dec_and_test() never returns true again.
qpi_ref is resurrected from 0 by design:
qmt_pool_destroy() qmt_pool_lookup()
qpi_putref() -> 0 down_read(qmt_pool_lock)
qmt_pool_free() pool still on qmt_pool_list
down_write(...) blocks qpi_getref() /* 0 -> 1 */
The getref in qmt_pool_lookup()/qti_pools_add() runs under the read lock while the pool is still linked, so it strictly precedes the list_del_init() in qmt_pool_free().
Once saturated the pool is never freed, so the lu_device_get() taken in qmt_pool_alloc() is never dropped, and the lu_device_fini() LASSERTF(ld_ref == 0) LBUGs when the MDT is unmounted.
Would refcount_inc_not_zero() in the lookup path (skipping a pool that is already dead, and dropping the recheck in qmt_pool_free()) work here, or should qpi_ref stay atomic_t?
reply Gerrit AI review for Lustre qmt_internal.h:399 — (minor) With atomic_read() this caught a count that had already gone negative. refcount_dec_and_test() saturates rather than going negative,
Gerrit AI review for Lustre
(minor) With atomic_read() this caught a count that had already gone negative. refcount_dec_and_test() saturates rather than going negative, and refcount_read() returns unsigned int, so a corrupted counter now reads as a large positive and the assert passes. If it is being kept so an over-put produces a crash dump rather than a warning, it no longer covers that case.
reply Gerrit AI review for Lustre qmt_pool.c:86 — (style) This isn't a bug, but refcount_read() returns unsigned int, so %u matches this field better than %d.
Gerrit AI review for Lustre
(style) This isn't a bug, but refcount_read() returns unsigned int, so %u matches this field better than %d.
reply Gerrit AI review for Lustre qmt_pool.c:254 — (defect) This recheck is only reachable after refcount_dec_and_test() already returned true, so it can only fire when another thread took a
Gerrit AI review for Lustre
(defect) This recheck is only reachable after refcount_dec_and_test() already returned true, so it can only fire when another thread took a reference in the window before list_del_init() above - exactly the 0 -> 1 transition refcount_t forbids (see qmt_internal.h). The comparison also changes meaning: refcount_read() is unsigned, so "> 0" is now just "!= 0". A saturated counter reads as a large positive and takes this early exit, leaking the pool rather than freeing it.
tags: lug23dd hackathon
owner Arshad Hussain · uploader Arshad Hussain · PS8 uploaded 62d ago · NEW · open in Gerrit ↗
commit message
LU-16796 quota: Change struct qmt_pool_info to use refcount_t This patch changes struct qmt_pool_info to use refcount_t instead of atomic_t Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Change-Id: Ia33fafab3dbb86ff72b8c3d26b6fb2a27b334cf4
53169
master
J !B ✓T ✗1R -1/2−
LU-17295 llite: parallel creates via d_lookup_done
reviewing Qian Yingjin · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
9 unresolved
S +16 −0
68d
LU-17295 llite: parallel creates via d_lookup_done
reviewing Qian Yingjin · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
9 unresolved
S +16 −0
68d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
awaiting review (CI not green yet)
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-zfs-part-5 | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: recovery-small. | session |
15 optional test failure(s) — informational
build #125505 SUCCESS · tests all Maloo sessions
no vote yet: Sohei Koyama, Shuichi Ihara, Andreas Dilger, Lai Siyao, Neil Brown, Alex Zhuravlev
patchsets:
PS32 03-03 Sohei Koyama
PS33 03-03 Sohei Koyama
PS34 03-09 Sohei Koyama
PS35 03-11 Sohei Koyama
PS36 05-25 Sohei Koyama
+31 earlier
PS1 11-17 PS2 11-26 Sohei Koyama PS3 11-26 Sohei Koyama PS4 12-02 Sohei Koyama PS5 12-17 Sohei Koyama PS6 12-19 Sohei Koyama PS7 12-20 Sohei Koyama PS8 03-05 Lai Siyao PS9 03-06 Sohei Koyama PS10 03-06 Sohei Koyama PS11 05-07 Sohei Koyama PS12 05-08 Sohei Koyama PS13 05-08 Sohei Koyama PS14 05-09 Sohei Koyama PS15 05-12 Sohei Koyama PS16 05-12 Sohei Koyama PS17 05-12 Sohei Koyama PS18 05-14 Sohei Koyama PS19 05-14 Sohei Koyama PS20 05-14 Sohei Koyama PS21 05-14 Sohei Koyama PS22 05-16 Sohei Koyama PS23 05-19 Sohei Koyama PS24 05-27 Sohei Koyama PS25 11-10 Sohei Koyama PS26 11-10 Sohei Koyama PS27 11-25 Sohei Koyama PS28 11-26 Sohei Koyama PS29 11-26 Sohei Koyama PS30 12-09 Sohei Koyama PS31 02-27 Sohei Koyamathreads: 9 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Qian Yingjin lustre_compat.h:108 — This should use:
Qian Yingjin
This should use: #ifndef DCACHE_PAR_LOOKUP?
reply Sohei Koyama namei.c:1181 — OK, the performance data was shared in Jira. https://jira.whamcloud.com/browse/LU-17295
Lai Siyao
what the shared lock is protecting? IMHO this can be done without inode loc.
Sohei Koyama
Removing this lock now scales file creation performance for a shared directory from multiple clients on a single node. Is it okay to remove this VFS lock?
Qian Yingjin
Have you benchmarked with this patch? If so, could you please share the performance data. The patch is mostly OK but with some minor places needing to refine according to comments.
Sohei Koyama
OK, the performance data was shared in Jira. https://jira.whamcloud.com/browse/LU-17295
reply Lai Siyao namei.c:1186 — should this be called before unlock?
Lai Siyao
should this be called before unlock?
reply Lai Siyao namei.c:1194 — is this assertion still valid? maybe a specific test should be created against this race.
Lai Siyao
is this assertion still valid? maybe a specific test should be created against this race.
reply Lai Siyao namei.c:1198 — If we don't lock inode, this can be removed. And This can be applied to all parent directory locking code on client side since we reply on M
Lai Siyao
If we don't lock inode, this can be removed. And This can be applied to all parent directory locking code on client side since we reply on MDT locking.
reply Lai Siyao namei.c:1193 — IMHO it should be like this:
Lai Siyao
IMHO it should be like this:
#ifdef HAVE_INODE_LOCK_SHARED
if (open_flags & O_CREAT)
inode_unlock(dir);
else
inode_unlock_shared(dir);
#else
inode_unlock(dir);
#endif
reply Sohei Koyama namei.c:1406 — You’re absolutely right, Yingjin.
Qian Yingjin
Do we really need lli_create_rwsem as we only acquire read lock on it... With or without it the results are same.
Sohei Koyama
You’re absolutely right, Yingjin. I realized (after your comment) that lli_create_rwsem has no effect in this patchset 33, and moreover I found a pattern that can cause a deadlock (unfortunately). ``` PID A (fallocate / O_CREAT → ll_atomic_open): holds i_rwsem exclusive → acquires lli_create_rwsem (read) → releases i_rwsem → MDS RPC → tries to reacquire i_rwsem exclusive via inode_lock(dir) → blocks PID B (setfattr → path lookup): walk_component → acquires i_rwsem shared → __lookup_slow → d_alloc_parallel → waits for PID A’s parallel lookup to complete → blocks Deadlock: PID A: holds the parallel lookup → needs i_rwsem exclusive PID B: holds i_rwsem shared → needs the parallel lookup to complete ``` This is the structural reason why i_rwsem cannot be dropped in ll_atomic_open().
reply Sohei Koyama namei.c:1424 — The patch that called d_lookup_done() at the end of atomic_open() caused a deadlock in the racer test, so it was not pushed....
Qian Yingjin
I think d_lookup_done should be put in the end of atomic_open() and the server has already granted the DLM lock to the client.
Qian Yingjin
Otherwise, the dentry may be raced and deleted by unlink or rename() operation?
Sohei Koyama
The patch that called d_lookup_done() at the end of atomic_open() caused a deadlock in the racer test, so it was not pushed....
reply Qian Yingjin namei.c:1582 — Where do you put d_lookup_done()?
Qian Yingjin
Where do you put d_lookup_done()? I'd suggest to put here (Line 1582) before inode_lock() or Line 1577 before release the granted lock.
owner Qian Yingjin · uploader Sohei Koyama · PS36 uploaded 163d ago · NEW · open in Gerrit ↗
commit message
LU-17295 llite: parallel creates via d_lookup_done VFS holds parent i_rwsem exclusive for O_CREAT, serializing all creates in the same directory. This bottlenecks HPC workloads that create many files in a shared directory. In ll_atomic_open(), release i_rwsem to allow parallel MDS RPCs for concurrent file creates. Immediately call d_lookup_done() on the dentry to clear DCACHE_PAR_LOOKUP set by the VFS d_alloc_parallel() before entering atomic_open. Without this, any process calling d_alloc_parallel() for the same filename will block in d_wait_lookup() while holding i_rwsem, causing an ABBA deadlock when ll_atomic_open() tries to re-acquire i_rwsem at the end. The MDS provides create atomicity via LDLM locks, so client-side dentry serialization through PAR_LOOKUP is not needed. The VFS atomic_open() wrapper also calls d_lookup_done() after we return, but that is a no-op since the flag is already cleared. Signed-off-by: Sohei Koyama <skoyama@ddn.com> Signed-off-by: Qian Yingjin <qian@ddn.com> Change-Id: I5101bb8b108817e6facaafc7d28b497245fc3024
65762
master
J ✗1B ✓T ✗1R 0/2
LU-10026 csdc: prefer uncompressed mirror for read and write
reviewing Marc Vef · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
1 unique failure
csdc
4 unresolved
L +213 −47
74d
LU-10026 csdc: prefer uncompressed mirror for read and write
reviewing Marc Vef · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
1 unique failure
csdc
4 unresolved
L +213 −47
74d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity3@zfs:test_907 | seen in 57 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 7 tests. 1 tests failed: sanity-sec. | session |
build #129912 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Artem Blagodarenko, Zhenyu Xu
patchsets:
PS8 08-19 Artem Blagodarenko
PS9 08-19 Artem Blagodarenko
PS10 08-20 Artem Blagodarenko
PS11 08-20 Artem Blagodarenko
PS12 08-21 Artem Blagodarenko
+7 earlier
PS1 05-08 PS2 05-28 PS3 05-28 PS4 06-11 PS5 06-11 PS6 07-27 Artem Blagodarenko PS7 07-28 Artem Blagodarenkothreads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre lod_lov.c:622 — This bonus is added once per allocated stripe, which is exactly the weight the OS_STATFS_NONROT bonus a few lines above uses, so the two can
Gerrit AI review for Lustre
This bonus is added once per allocated stripe, which is exactly the weight the OS_STATFS_NONROT bonus a few lines above uses, so the two can cancel out.
Two mirrors, no LCME_FL_PREF_WR anywhere, one stripe each:
mirror 0: compressed, stripe on a NONROT OST -> pref = 1
mirror 1: uncompressed, stripe on a rotating OST -> pref = 1
lme_preference ties, so the `!found_preferred` fallback below keeps the lower index (`>` is strict) and sets lme_prefer on mirror 0. lod_primary_pick() then classifies mirror 0 as case B (preferred + compressed) and mirror 1 as case C, and B outranks C, so the write goes to the compressed mirror.
A wider compressed mirror wins outright rather than tying: 4 NONROT stripes compressed = 4 vs 1 NONROT stripe uncompressed = 2.
Mixed flash/disk mirrors are the case the non-rotational preference was added for, so this is not an exotic layout. Should the uncompressed bonus be on a different scale than the per-stripe NONROT count (or applied once per mirror) so it can't be traded away against OST speed?
The comment also says "mirror", but this sits in the per-stripe loop of one component.
reply Gerrit AI review for Lustre lod_object.c:8060 — (style) Not a bug, but this comment has a UTF-8 em dash in it; the rest of the tree is plain ASCII. A plain '-' would do.
Gerrit AI review for Lustre
(style) Not a bug, but this comment has a UTF-8 em dash in it; the rest of the tree is plain ASCII. A plain '-' would do.
reply Gerrit AI review for Lustre lod_object.c:8088 — Ranking B (preferred + compressed) above C (uncompressed) reads as "an explicit `lfs setstripe --flags=prefer` beats the compression heurist
Gerrit AI review for Lustre
Ranking B (preferred + compressed) above C (uncompressed) reads as "an explicit `lfs setstripe --flags=prefer` beats the compression heuristic". But lme_prefer is not only user intent: when no component carries LCME_FL_PREF_WR, lod_fill_mirrors() picks the highest lme_preference non-stale mirror and sets lme_prefer = 1 on it. So tier B is reachable on a file the user never flagged, and the heuristic ends up overriding its own compression preference. Should case B be restricted to mirrors that actually carry LCME_FL_PREF_WR, or should the synthesized preference be tracked separately from the user flag?
reply Gerrit AI review for Lustre lov_io.c:662 — (minor) ci_ndelay_tried > 0 means "not the first lov_io_mirror_init() for this env", which is broader than "this is an FLR error retry".
Gerrit AI review for Lustre
(minor) ci_ndelay_tried > 0 means "not the first lov_io_mirror_init() for this env", which is broader than "this is an FLR error retry".
ll_file_io_generic() restarts the io for reasons unrelated to mirror failure and preserves the counter:
partial_io -> io->ci_need_restart = 1 (file.c)
retried = io->ci_ndelay_tried; goto restart;
A single buffered read larger than max_io_bytes therefore takes the uncompressed mirror for the first chunk only; from the second chunk on ci_ndelay_tried is non-zero, lis_mirror_index has been advanced by one, and the first in-range mirror is accepted even when it is compressed. The layout-change restart in vvp_io_iter_init() has the same shape.
Would gating on something that only the -EAGAIN mirror-failover path sets (io->ci_tried_all_mirrors, or a dedicated flag set where cl_io_loop() retries) keep the failover fix without giving up the preference on ordinary io continuation?
tags: csdc
owner Marc Vef · uploader Artem Blagodarenko · PS12 uploaded 75d ago · NEW · open in Gerrit ↗
commit message
LU-10026 csdc: prefer uncompressed mirror for read and write When accessing a mirrored file with both compressed and uncompressed components, choose uncompressed components for read (lov_io.c). When writing to mirrored files with both compressed and uncompressed mirrors, prefer the uncompressed components to write; this is better for performance, more compatible with older clients, and better fits the model of compressing files after initial write. The write-side preference is implemented via lod_fill_mirrors() and lod_primary_pick() using a new lme_compressed flag. Note: the changes to lod_fill_mirrors() and lod_primary_pick() affect all FLR files, not only those with compressed mirrors. Plain FLR writes will also use the updated preferred-mirror selection logic. DDN-bug-id: EX-6510 Was-Change-Id: I62a117d5cc3d34e2c0c96d1a9ade8eef0a2d1291 Signed-off-by: Bobi Jam <bobijam@whamcloud.com> Signed-off-by: Artem Blagodarenko <ablagodarenko@gmail.com> Signed-off-by: Marc Vef <mvef@whamcloud.com> Change-Id: I043b27bd891c039901075a08c76630f8f0f9f182
65769
master
J !B ✓T ✗1R 0/2
LU-10026 csdc: add ll_compr_hdr structure
reviewing Marc Vef · blocked on the owner: enforced tests failed
csdc
4 unresolved
L +270 −58
74d
LU-10026 csdc: add ll_compr_hdr structure
reviewing Marc Vef · blocked on the owner: enforced tests failed
csdc
4 unresolved
L +270 −58
74d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 7 tests. 1 tests failed: sanity-sec. | session |
build #129913 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Artem Blagodarenko
patchsets:
PS10 08-19 Artem Blagodarenko
PS11 08-19 Artem Blagodarenko
PS12 08-20 Artem Blagodarenko
PS13 08-20 Artem Blagodarenko
PS14 08-21 Artem Blagodarenko
+9 earlier
PS1 05-08 PS2 05-28 PS3 05-28 PS4 06-11 PS5 06-11 PS6 07-28 Artem Blagodarenko PS7 07-28 Artem Blagodarenko PS8 07-31 Andreas Dilger PS9 07-31 Andreas Dilgerthreads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:21 — (minor) Two hunks aren't accounted for by the body.
Gerrit AI review for Lustre
(minor) Two hunks aren't accounted for by the body. COMPR_GET_CHUNK_SIZE() in lustre_user.h gains argument parentheses and a 1U base. That is a real hardening of the macro, but nothing in the message mentions it. llapi_layout_compress_set() gains a type range check that makes the function return -1/EINVAL for inputs it previously accepted. That is a behaviour change to a public liblustreapi entry point and deserves a line. Are both meant to ride along in this patch?
reply Gerrit AI review for Lustre lustre_idl.h:4134 — (minor) This isn't a bug today, but the two arguments are treated asymmetrically: `lvl` is masked with 0x0f, `bits` isn't. The matching acce
Gerrit AI review for Lustre
(minor) This isn't a bug today, but the two arguments are treated asymmetrically: `lvl` is masked with 0x0f, `bits` isn't. The matching accessor LLCH_CHUNK_LUM_BITS() does mask on the way out.
LLCH_LEVEL_AND_CHUNK(3, 16) -> (16 << 4) | 3 == 259
The result is an int, so the overflow only disappears when it's stored into the __u8 llch_level_and_chunk, and the header then decodes as chunk_lum_bits 0 (64 KiB) rather than anything detectable. Valid chunk_lum_bits is 0..10 so no current caller can hit it, but masking `bits` the same way as `lvl` would keep the macro self-contained.
reply Gerrit AI review for Lustre liblustreapi_layout.c:1721 — (minor) Documentation/man3/llapi_layout_compress_set.3 doesn't seem to be updated to match. Its ERRORS section lists EINVAL only for the str
Gerrit AI review for Lustre
(minor) Documentation/man3/llapi_layout_compress_set.3 doesn't seem to be updated to match. Its ERRORS section lists EINVAL only for the stripe_size/chunk_size cases, and DESCRIPTION enumerates the valid `type` values without saying that an out-of-range type or the new LL_COMPR_TYPE_UNCHANGED sentinel is now rejected. Should the man page change land in the same patch?
reply Gerrit AI review for Lustre liblustreapi_layout.c:1736 — (style) Not a bug, but the first test can never decide the branch on its own: LL_COMPR_TYPE_UNCHANGED is 255 and LL_COMPR_TYPE_MAX is 8, so
Gerrit AI review for Lustre
(style) Not a bug, but the first test can never decide the branch on its own: LL_COMPR_TYPE_UNCHANGED is 255 and LL_COMPR_TYPE_MAX is 8, so `type >= LL_COMPR_TYPE_MAX` already covers the sentinel. Keeping it reads as documentation, but a reader has to work that out.
tags: csdc
owner Marc Vef · uploader Artem Blagodarenko · PS14 uploaded 75d ago · NEW · open in Gerrit ↗
commit message
LU-10026 csdc: add ll_compr_hdr structure It is an important structure for CSDC feature. Will be used in the next patches. Also adds: - LL_COMPR_TYPE_UNCHANGED enum value (used to signal that the compression type should not be changed on update). - LL_LZ4FAST_MAX_LEVEL define (15: the largest value the 4-bit stored level field can hold for the LZ4FAST algorithm). - LLCH_FL_COMPR_CSUM / LLCH_FL_HDR_CSUM flags in llch_flags to signal checksum presence explicitly (a crc32 of 0 is ambiguous otherwise). - wirecheck: pin COMPR_CHUNK_MIN_BITS, COMPR_CHUNK_MAX_BITS, and LL_LZ4FAST_MAX_LEVEL values. Signed-off-by: Artem Blagodarenko <ablagodarenko@ddn.com> Signed-off-by: Marc Vef <mvef@whamcloud.com> Change-Id: I26f2fc7c0212f1a4cad36805c75aa766d6aed548
65761
master
J !B ✓T ✗1R 0/2
LU-10026 utils: add 'lfs find' support for compressed file
reviewing Marc Vef · blocked on the owner: enforced tests failed
csdc
9 unresolved
L +715 −67
74d
LU-10026 utils: add 'lfs find' support for compressed file
reviewing Marc Vef · blocked on the owner: enforced tests failed
csdc
9 unresolved
L +715 −67
74d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
janitor run: 4 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 7 tests. 1 tests failed: sanity-sec. | session |
build #129911 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Artem Blagodarenko, Zhenyu Xu
patchsets:
PS13 08-19 Artem Blagodarenko
PS14 08-19 Artem Blagodarenko
PS15 08-20 Artem Blagodarenko
PS16 08-20 Artem Blagodarenko
PS17 08-21 Artem Blagodarenko
+12 earlier
PS1 05-08 PS2 05-28 PS3 05-28 PS4 06-11 PS5 06-11 PS6 06-17 Artem Blagodarenko PS7 06-18 Artem Blagodarenko PS8 07-24 Artem Blagodarenko PS9 07-27 Artem Blagodarenko PS10 07-27 Andreas Dilger PS11 07-27 Andreas Dilger PS12 07-27 Andreas Dilgerthreads: 9 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (minor) The first three bullets read as new functionality, but `--comp-flags=[^]compress` and `--comp-flags=[^]nocompr` already work (LCME_F
Gerrit AI review for Lustre
(minor) The first three bullets read as new functionality, but `--comp-flags=[^]compress` and `--comp-flags=[^]nocompr` already work (LCME_FL_COMPRESS/LCME_FL_NOCOMPR are in comp_flags_table[]), and so does `-L compress` (LOV_PATTERN_COMPRESS is in lov_pattern_names[]). This patch documents them and adds test coverage rather than adding them. Could the wording say "document" for those three, so the message matches the diff?
reply Gerrit AI review for Lustre lustre_user.h:3278 — (style) COMPR_LEVEL_MAX is already defined with the same value earlier in this header, just after `enum ll_compr_type`, with a comment expla
Gerrit AI review for Lustre
(style) COMPR_LEVEL_MAX is already defined with the same value earlier in this header, just after `enum ll_compr_type`, with a comment explaining it. Two definitions can drift apart later; can this one be dropped?
reply Gerrit AI review for Lustre sanity-pfl.sh:3078 — (style) extra blank line. Also z1..z4 here, and `expect` in test_100d, are not declared `local`.
Gerrit AI review for Lustre
(style) extra blank line. Also z1..z4 here, and `expect` in test_100d, are not declared `local`.
reply Gerrit AI review for Lustre lfs.c:4637 — (style) not a bug, but `compress-chunk` already appears in this long_opts[] further down, so it is listed twice now. getopt_long takes the f
Gerrit AI review for Lustre
(style) not a bug, but `compress-chunk` already appears in this long_opts[] further down, so it is listed twice now. getopt_long takes the first match so it still works; `compr-chunk` looks like the only new alias actually needed here.
reply Gerrit AI review for Lustre lfs.c:8226 — (typo) this comment uses a UTF-8 em dash; the tree is otherwise plain ASCII. Same in the `%LZ` directory-branch comment in liblustreapi_pfin
Gerrit AI review for Lustre
(typo) this comment uses a UTF-8 em dash; the tree is otherwise plain ASCII. Same in the `%LZ` directory-branch comment in liblustreapi_pfind.c.
reply Gerrit AI review for Lustre lfs.c:8248 — (defect) atoi() cannot report a parse failure, so `--compr-level=abc` silently becomes level 0, and `--compr-level=+abc` becomes "level > 0"
Gerrit AI review for Lustre
(defect) atoi() cannot report a parse failure, so `--compr-level=abc` silently becomes level 0, and `--compr-level=+abc` becomes "level > 0", i.e. every compressed component. The unsigned range check above cannot catch it. `-Z gzip:abc` is rejected by llapi_parse_compress_type(), and the setstripe `--compress-level` path uses strtol() with an end-pointer check, so the three spellings of the same thing disagree. strtol() plus `*end != '\0'` here would line them up.
reply Gerrit AI review for Lustre liblustreapi_pfind.c:509 — (minor) This helper backs every numeric `lfs find` predicate, and the new exact-match branch only changes behaviour when `margin == 0`. `lfs
Gerrit AI review for Lustre
(minor) This helper backs every numeric `lfs find` predicate, and the new exact-match branch only changes behaviour when `margin == 0`. `lfs find -z N` with a plain number is such a caller: lfs.c does `fp_ext_size_units /= SEL_UNIT_SIZE`, so 1/1024 becomes 0, and an exact `-z` match that previously reported "no match" now matches. That may well be desirable, but it is a silent change to an unrelated option. The new compression predicates are the only callers passing margin 0; the rest pass 1 or a unit size, and with margin 1 this function already returns 1 on an exact match. Passing 1 there would avoid touching the shared helper, and would also make `--compr-level=-N` / `--compr-chunk=-N` mean "< N" like `-c -N`, `--size -N` and friends, rather than "<= N". The table above the function (rows 5 and 6, and the note about the interval `(limit - margin, limit]`) no longer describes the code either.
reply Gerrit AI review for Lustre liblustreapi_pfind.c:975 — (defect) Negation is handled differently for level/chunk than for type. `fp_exclude_compr_lvl` is passed into find_value_cmp() as `negopt`,
Gerrit AI review for Lustre
(defect) Negation is handled differently for level/chunk than for type. `fp_exclude_compr_lvl` is passed into find_value_cmp() as `negopt`, so `found_lvl` ends up meaning "some component does not match" instead of "no component matches", and the aggregation here then ignores the exclude flag entirely - unlike the fp_check_compr_type block just above.
For a file with two compressed components, level 3 and level 5:
lfs find ! --compr-level=3 dir
entry(lvl 5) makes find_value_cmp() return -1, negopt flips it to 1, found_lvl is set, and the file is reported - even though it does have a level-3 component. The equivalent `! --compr-type=gzip` on a gzip+lz4 file correctly does not match.
Should the level and chunk comparisons drop the negopt argument and be inverted here the same way type is?
reply Gerrit AI review for Lustre liblustreapi_pfind.c:1771 — (defect) `fp_lum_size` is the size common_param_init() allocated for the lmd buffer (>= XATTR_SIZE_MAX, 64KiB), not the length of the layout
Gerrit AI review for Lustre
(defect) `fp_lum_size` is the size common_param_init() allocated for the lmd buffer (>= XATTR_SIZE_MAX, 64KiB), not the length of the layout stored in it. For a non-composite lum, llapi_layout_get_by_xattr() never narrows that value, so llapi_layout_objects_in_lum() computes (65536 - 32) / 24 = 2729 objects and __llapi_comp_alloc() rejects it with EINVAL because 2729 > LOV_MAX_STRIPE_COUNT (2000). So this call fails for every plain V1/V3 file and always falls through to llapi_layout_get_by_path(); only composite layouts reach the new path, because the entry loop resets the size to `ent->lcme_size`. Passing the actual layout length instead would make the fast path work for non-PFL files too.
tags: csdc
owner Marc Vef · uploader Artem Blagodarenko · PS17 uploaded 75d ago · NEW · open in Gerrit ↗
commit message
LU-10026 utils: add 'lfs find' support for compressed file * Add "--comp-flags=[^]compress" to locate file with/without compressed components. * Add "--comp-flags=[^]nocompr" to locate file with/without setting component compress preference. * Add "[!] --layout=compress" to locate file with/without compressed components. * Add "[!] --compress-type=<compress-type>" to locate compressed file with/without specified compress algorithm. * Add "[!] --compress-level=[+-]<compress-level>" to locate compressed file with/without specified compress level. * Add "[!] --compress-chunk=[+-]<compress-chunk>" to locate compressed file with/without specified compress chunk in KiB. utils: add -Z option for 'lfs getstripe/find' Add support for "lfs getstripe -Z" to get the last instantiated component compression information. Add support for "lfs find -Z <type>[:[+-]<level>]" to keep consistent options with "lfs setstripe -Z". DDN-bug-id: EX-6856 Was-Change-Id: Ia5e2a2ea6937dc2b46e224cec808504a196b974c utils: logical AND for 'lfs find' compression exprs All search expressions provided to 'lfs find' must be combined as a logical AND. Fix newly added options for compression support, so that they comply with this logical AND. DDN-bug-id: EX-7714 Was-Change-Id: I3b28cd87c1d304df6d04753b413d46f5abcfe16e csdc: don't set compression layout when disabled When llite_enable_compression is disabled (lfs set_param llite.*.enable_compression=0), we should check it before sending it to MDS lest we get a file with compressed component which we cannot handle. DDN-bug-id: EX-7593 Was-Change-Id: Ib1e2123ffdb239c3e1401d682ae9c2c49e3f4a6f utils: support 'lfs find --printf %LZ' Add support for "lfs find --printf %LZ" to print the compression type:level of the last instantiated component of a file. DDN-bug-id: EX-6856 Was-Change-Id: Iaf1b6c031b06c70e7b5be51354697aa6bdcc9850 csdc: right error code in case compression is disabled Currently, if compression is disabled on a client the error message is confusing "Cannot set layout EA: Unknown error 524" Let's replace the error code from ENOTSUPP to EOPNOTSUPP, so error messages become more informative ctl get_param -n llite.*.enable_compression 0 lfs setstripe -i 0 -c 1 -E -1 -Z lz4 /mnt/lustre/foo.txt Cannot set layout EA: Operation not supported lfs setstripe: cannot create composite file '/mnt/lustre/foo.txt': Inappropriate ioctl for device This message could be even more informative, but this version is already much better. DDN-bug-id: EX-10577 Was-Change-Id: I7fd67d5d3d20bc7de169f35f6fa63b53f2bfe718 Signed-off-by: Bobi Jam <bobijam@whamcloud.com> Signed-off-by: Artem Blagodarenko <ablagodarenko@ddn.com> Signed-off-by: Marc Vef <mvef@whamcloud.com> Change-Id: Ic36946738c3463fd862aeca4ee2e2c2ed85eff84
64942
master
J –B ✗T –R 0/2
LU-17916 dbg: force build with in-kernel crypto
reviewing Sebastien Buisson · blocked on the owner: build failure
fortestonly
1 unresolved
XS +1 −1
77d
LU-17916 dbg: force build with in-kernel crypto
reviewing Sebastien Buisson · blocked on the owner: build failure
fortestonly
1 unresolved
XS +1 −1
77d
blocked on the owner: build failure
awaiting review (CI not green yet)
build #123844 FAILURE
patchsets:
PS1 03-27
PS2 04-13
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Misc Code Checks Robot (Gatekeeper helper) COMMIT_MSG:1 — lustre/llite/file.c:
Misc Code Checks Robot (Gatekeeper helper)
lustre/llite/file.c: parse ll_file_ioctl():error: Function too hairy. Giving up. 14 seconds warn: ll_file_ioctl():Function too hairy. No more merges.
tags: fortestonly
owner Sebastien Buisson · uploader Sebastien Buisson · PS2 uploaded 204d ago · NEW · open in Gerrit ↗
commit message
LU-17916 dbg: force build with in-kernel crypto Force build with in-kernel crypto. Test-Parameters: forbuildonly Signed-off-by: Sebastien Buisson <sbuisson@ddn.com> Change-Id: I0943412d7b42cbdcb50271bb0bf728425ed4fb3d
65668
master
J !B ✓T ✗1R -1/2−
LU-11433 lnet: move wire constant checks into wiretest.c
reviewing Sonia Sharma · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
L +472 −288
94d
LU-11433 lnet: move wire constant checks into wiretest.c
reviewing Sonia Sharma · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
L +472 −288
94d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
awaiting review (CI not green yet)
janitor run: 1 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-dne-arm | RHEL 8.10 / x86_64, Rocky 9.5 / aarch64 | ran 5 tests. 1 tests failed: sanity. | session |
build #126671 SUCCESS · tests all Maloo sessions
patchsets:
PS3 05-05
PS4 06-16
PS5 06-16 Janitor Bot
PS6 06-17
PS7 06-17 Janitor Bot
+2 earlier
PS1 05-04 PS2 05-05 Janitor Botowner Sonia Sharma · uploader Janitor Bot · PS7 uploaded 140d ago · NEW · open in Gerrit ↗
commit message
LU-11433 lnet: move wire constant checks into wiretest.c Move lnet_assert_wire_constants() out of api-ni.c into a dedicated wiretest.c file, following the same pattern as used by Lustre wire constant checks. Update lnet/utils/wirecheck.c to generate the standalone LNet wiretest coverage and add missing checks for LNet wire-visible structures and constants, including NID, message header, ping metadata, acceptor, and counters. Test-Parameters: trivial testlist=sanity-lnet Signed-off-by: Sonia Sharma <sonia.sh.sharma@oracle.com> Change-Id: I57dbdbde8f1b1a5398231e0f325a00662016697e
65197
master
J ✗40B ✓T ✗11R 0/2
LU-20108 sec: updates for in-kernel crypto
reviewing Shaun Tancheff · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
40 unique failures
11 unresolved
L +424 −28
99d
LU-20108 sec: updates for in-kernel crypto
reviewing Shaun Tancheff · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
40 unique failures
11 unresolved
L +424 −28
99d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-slow@ldiskfs+DNE:test_64b | seen in 2 other reviews |
| sanity-lfsck@ldiskfs+DNE:test_42 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@ldiskfs+DNE:test_37 | seen in 2 other reviews |
| sanity-sec@ldiskfs+DNE:test_39 | seen in 2 other reviews |
| sanity-sec@ldiskfs+DNE:test_40 | seen in 2 other reviews |
| sanity-sec@ldiskfs+DNE:test_41 | seen in 2 other reviews |
| sanity-sec@ldiskfs+DNE:test_42 | seen in 2 other reviews |
| sanity-sec@ldiskfs+DNE:test_43 | seen in 2 other reviews |
| sanity-sec@ldiskfs+DNE:test_45 | seen in 2 other reviews |
| sanity-sec@ldiskfs+DNE:test_46 | seen in 3 other reviews |
| sanity-sec@ldiskfs+DNE:test_47 | seen in 2 other reviews |
| sanity-sec@ldiskfs+DNE:test_48a | seen in 2 other reviews |
| sanity-sec@ldiskfs+DNE:test_49 | seen in 2 other reviews |
| sanity-sec@ldiskfs+DNE:test_50 | seen in 2 other reviews |
| sanity-sec@ldiskfs+DNE:test_52 | seen in 4 other reviews |
| sanity-sec@ldiskfs+DNE:test_56 | seen in 1 other review |
| sanity-sec@ldiskfs+DNE:test_57 | seen in 1 other review |
| sanity-sec@ldiskfs+DNE:test_58 | seen in 1 other review |
| sanity-sec@ldiskfs+DNE:test_59a | seen in 3 other reviews |
| sanity-sec@ldiskfs+DNE:test_59b | seen in 1 other review |
| sanity-sec@ldiskfs+DNE:test_59c | seen in 1 other review |
| sanity-sec@ldiskfs+DNE:test_60 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@ldiskfs+DNE:test_62 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@ldiskfs+DNE:test_65 | seen in 1 other review |
| sanity-sec@zfs:test_39 | seen in 2 other reviews |
| sanity-sec@zfs:test_40 | seen in 2 other reviews |
| sanity-sec@zfs:test_41 | seen in 2 other reviews |
| sanity-sec@zfs:test_42 | seen in 2 other reviews |
| sanity-sec@zfs:test_43 | seen in 2 other reviews |
| sanity-sec@zfs:test_45 | seen in 2 other reviews |
| sanity-sec@zfs:test_46 | seen in 2 other reviews |
| sanity-sec@zfs:test_47 | seen in 2 other reviews |
| sanity-sec@zfs:test_48a | seen in 2 other reviews |
| sanity-sec@zfs:test_49 | seen in 2 other reviews |
| sanity-sec@zfs:test_50 | seen in 2 other reviews |
| sanity-sec@zfs:test_52 | seen in 4 other reviews |
| sanity-sec@zfs:test_59a | seen in 3 other reviews |
| sanity-sec@zfs:test_59b | seen in 1 other review |
| sanity-sec@zfs:test_60 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-sec@zfs:test_65 | seen in 1 other review |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 failed 2× | RHEL 8.10 / x86_64 | ran 11 tests. 5 tests failed: sanity-pfl, lnet-selftest, pjdfstest, sanity-sec, sanity-lfsck. | session |
| review-dne-part-2 failed 2× | RHEL 9.7 / x86_64 | ran 11 tests. 5 tests failed: sanity-pfl, lnet-selftest, pjdfstest, sanity-sec, sanity-lfsck. | session |
| review-dne-part-3 failed 2× | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-3 failed 2× | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-7 failed 2× | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanity-pcc. | session |
| review-dne-part-7 failed 2× | RHEL 9.7 / x86_64 | ran 5 tests. 1 tests failed: sanity-pcc. | session |
| review-dne-selinux-ssk-part-2 failed 2× | RHEL 8.10 / x86_64 | ran 5 tests. 2 tests failed: sanity-selinux, sanity-sec. | session |
| review-dne-zfs-part-2 failed 2× | RHEL 8.10 / x86_64 | ran 11 tests. 4 tests failed: sanity-pfl, lnet-selftest, pjdfstest, sanity-sec. | session |
| review-dne-zfs-part-3 failed 2× | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-7 failed 2× | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanity-pcc. | session |
| review-ldiskfs-ubuntu failed 2× | RHEL 8.10 / x86_64, Ubuntu 24.04 / x86_64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
32 optional test failure(s) — informational
build #127103 SUCCESS · tests all Maloo sessions
no vote yet: Sebastien Buisson
patchsets:
PS1 04-09
PS2 04-09 Janitor Bot
PS3 04-10
PS4 06-29
threads: 11 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:39 — Several hunks are not accounted for by the body, which makes it hard to tell what is deliberate:
Gerrit AI review for Lustre
Several hunks are not accounted for by the body, which makes it hard to tell what is deliberate: - LC_FSCRYPT_OPS_INODE_INFO_OFFS and the new `lli_crypt_info` field (Linux v6.17-rc1-2-g93221de31a8df) are not mentioned at all. - the new llcrypt_prepare_new_inode()/llcrypt_set_context() calls in ll_dir_setdirstripe(), which change how the encryption context reaches the MDS. - dropping `.max_namelen` from lustre_cryptops. - the llcrypt_d_revalidate() signature change for HAVE_D_REVALIDATE_WITH_INODE_NAME. - FSCRYPT_CONTENTS_ALIGNMENT / LL_CRYPTO_BLOCK_SIZE. - the ll_get_dummy_policy() restructuring. Could the body cover each of these, or the independent ones be split into their own changes? The Fixes: tag itself checks out (sha and subject match 048e2cc7d2d5).
reply Gerrit AI review for Lustre lustre-core.m4:1543 — (typo) the AC_DEFINE description says fscrypt_parse_test_dummy_encryption() but this defines HAVE_FSCRYPT_ADD_TEST_DUMMY_KEY.
Gerrit AI review for Lustre
(typo) the AC_DEFINE description says fscrypt_parse_test_dummy_encryption() but this defines HAVE_FSCRYPT_ADD_TEST_DUMMY_KEY.
reply Gerrit AI review for Lustre lustre_crypto.h:26 — (typo) this `#else` and the `#endif` below it are labelled with CRYPTO_DUMMY_CONTEXT, but the condition being closed is HAVE_FSCRYPT_DUMMY_P
Gerrit AI review for Lustre
(typo) this `#else` and the `#endif` below it are labelled with CRYPTO_DUMMY_CONTEXT, but the condition being closed is HAVE_FSCRYPT_DUMMY_POLICY.
reply Gerrit AI review for Lustre lustre_crypto.h:60 — Should this branch keep `.max_namelen = NAME_MAX,`? fscrypt_operations::max_namelen only disappeared in 5.16, and configure still allows in-
Gerrit AI review for Lustre
Should this branch keep `.max_namelen = NAME_MAX,`? fscrypt_operations::max_namelen only disappeared in 5.16, and configure still allows in-kernel fscrypt down to 5.4 (LC_FSCRYPT_SUPPORT only probes for struct fscrypt_policy_v2). On 5.4-5.15 the field ends up 0 and fscrypt_setup_filename() then rejects every name with -ENAMETOOLONG. Same question for the CONFIG_LL_ENCRYPTION definition below.
reply Gerrit AI review for Lustre lustre_crypto.h:124 — (style) `pgno` is s32 everywhere else in this API - llcrypt_encrypt_pagecache_blocks()/llcrypt_decrypt_pagecache_blocks() in include/lustre_
Gerrit AI review for Lustre
(style) `pgno` is s32 everywhere else in this API - llcrypt_encrypt_pagecache_blocks()/llcrypt_decrypt_pagecache_blocks() in include/lustre_compat/linux/llcrypt.h, brw_page.bp_pgno, cl_folio_pgno() - and llcrypt_finalize_bounce_page() just below uses s32 too. Using s16 here silently narrows the caller's value; could these use s32 for consistency?
reply Gerrit AI review for Lustre lustre_crypto.h:131 — On kernels without the folio variant this hands a tail page to fscrypt, which dereferences `page->mapping`:
Gerrit AI review for Lustre
On kernels without the folio variant this hands a tail page to fscrypt, which dereferences `page->mapping`:
struct page *fscrypt_encrypt_pagecache_blocks(struct page *page, ...)
{
const struct inode *inode = page->mapping->host;
Tail pages of a large folio do not carry `mapping`, so any `pgno > 0` looks like a NULL/garbage dereference rather than an encryption of the intended page. bp_pgno is set unconditionally from cl_folio_pgno() in osc_prep_async_page(), so a direct-IO write whose user buffer is backed by a large folio reaches here with a non-zero value. The decrypt helper below has the same issue for kernels before 6.3. Should these fall back to an error, or use fscrypt_encrypt_block_inplace()/the block helpers when pgno is non-zero?
reply Gerrit AI review for Lustre lustre_crypto.h:185 — This turns llcrypt_inherit_context() into a constant 0 for every kernel from 5.10 on, but only ll_dir_setdirstripe() was converted to the pr
Gerrit AI review for Lustre
This turns llcrypt_inherit_context() into a constant 0 for every kernel from 5.10 on, but only ll_dir_setdirstripe() was converted to the prepare_new_inode()/set_context() pair. The two remaining callers are not:
ll_lookup_it() namei.c:1224
ll_new_node_prepare() namei.c:1832
Both rely on it to fill op_data->op_file_encctx before md_create(). With it stubbed out, op_file_encctx stays NULL, the create RPC carries no encryption context, and ll_new_node_finish() then calls ll_set_encflags(inode, NULL, 0, true), whose preload leg goes to llcrypt_prepare_readdir() and fails. So creating a file or symlink in an encrypted directory fails after the object has already been created on the MDS. Should namei.c be converted in the same patch?
reply Gerrit AI review for Lustre crypto.c:655 — `.max_namelen = NAME_MAX` is dropped here for every configuration: CRYPTO_MAX_NAMELEN expands to nothing in all three of its definitions (lu
Gerrit AI review for Lustre
`.max_namelen = NAME_MAX` is dropped here for every configuration: CRYPTO_MAX_NAMELEN expands to nothing in all three of its definitions (lustre_crypto.h lines 50, 60 and 273). It is also listed twice in this initializer, which suggests one of the two was meant to carry the value.
For the default embedded-llcrypt build the field still exists and is read:
llcrypt_setup_filename()
-> llcrypt_fname_encrypted_size(dir, iname->len,
lsi->lsi_cop->max_namelen, ...)
with max_namelen now 0, `if (orig_len > max_len) return false;` fires for any non-empty name, so llcrypt_setup_filename() returns -ENAMETOOLONG for every name in an encrypted directory once the key is loaded.
reply Gerrit AI review for Lustre dir.c:558 — This runs after md_create() and ll_prep_inode(), so the encryption context no longer rides along with the create RPC as it did via llcrypt_i
Gerrit AI review for Lustre
This runs after md_create() and ll_prep_inode(), so the encryption context no longer rides along with the create RPC as it did via llcrypt_inherit_context() above. llcrypt_set_context() is called with a non-NULL inode, which takes the second leg of ll_set_context() and issues a separate md_setxattr(XATTR_CREATE); its comment says that leg "should only be used when explicitly setting a new encryption policy on an existing, empty directory". If that setxattr fails the GOTO leaves an already-created, unencrypted directory on the MDS. Would calling llcrypt_prepare_new_inode()/llcrypt_set_context(NULL, op_data) before md_create() keep the old single-RPC behaviour? The ll_set_encflags() call further down also still reads op_data->op_file_encctx, which is now NULL on this path.
reply Gerrit AI review for Lustre llite_lib.c:1215 — This break-on-success is keyed off HAVE_FSCRYPT_OPS_LEGACY_NAME (6.7+), but the call it guards is the parse above, which exists from 5.19. O
Gerrit AI review for Lustre
This break-on-success is keyed off HAVE_FSCRYPT_OPS_LEGACY_NAME (6.7+), but the call it guards is the parse above, which exists from 5.19. On 5.19-6.6 a successful parse falls straight into the warning chain and prints "Error processing option ... [0]". Worse on 6.3-6.6, where HAVE_FSCRYPT_ADD_TEST_DUMMY_KEY is also gone (fscrypt_add_test_dummy_key() was dropped in 6.3): nothing resets err, control reaches `err = -1` and ll_options() returns it, so `-o test_dummy_encryption` always fails the mount. On 5.19-6.2 the opposite happens: a parse failure is reported, then `err = llcrypt_add_test_dummy_key(sb, policy)` overwrites it, and that returns 0 when dummy_policy->policy is NULL - so a bad test_dummy_encryption= value is silently accepted. Should this be the same `if (!err) break;` that the else branch has, placed directly after the parse call?
reply Gerrit AI review for Lustre llite_lib.c:1235 — (style) new console messages are expected to end with `: rc = %d\n` rather than `[%d]`, and the continuation `err);` is indented two tabs pa
Gerrit AI review for Lustre
(style) new console messages are expected to end with `: rc = %d\n` rather than `[%d]`, and the continuation `err);` is indented two tabs past the string instead of one.
owner Shaun Tancheff · uploader Shaun Tancheff · PS4 uploaded 127d ago · NEW · open in Gerrit ↗
commit message
LU-20108 sec: updates for in-kernel crypto
Linux commit v5.18-rc2-4-g218d921b581ea
fscrypt: add new helper functions for test_dummy_encryption
Splits fscrypt_set_test_dummy_encryption() into
fscrypt_parse_test_dummy_encryption() and
fscrypt_add_test_dummy_key()
Linux commit v6.2-rc2-19-g51e4e3153ebc3
fscrypt: support decrypting data from large folios
A page of data in a large folio can be decrypted.
Linux commit v6.2-rc6-5-g097d7c1fcb8d4
fscrypt: clean up fscrypt_add_test_dummy_key()
Drops fscrypt_add_test_dummy_key()
Linux commit v6.6-rc3-1-g5970fbad1036d
fscrypt: make it clearer that key_prefix is deprecated
Linux commit v6.6-rc3-2-g40e13e18168fd
fscrypt: make the bounce page pool opt-in instead of opt-out
Linux commit v6.6-rc3-4-g7a0263dc904f3
fscrypt: replace get_ino_and_lblk_bits with just has_32bit_inodes
Linux commit v6.6-rc3-5-g5b11888471806
fscrypt: support crypto data unit size less than filesystem block
size
Some struct fscrypt_operations members added and changed.
Linux commit v6.14-rc1-18-g59b59a943177e
fscrypt: Change fscrypt_encrypt_pagecache_blocks() to take a folio
fscrypt_encrypt_pagecache_blocks can accept a folio and return a
bounce page of encrypted data.
Fixes: 048e2cc7d2 ("LU-15420 sec: handle simple fscrypt changes for 5.15 kernels")
Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Change-Id: I684edf03f728667a364041adabe18fdb493340fd
63543
master
J !B ✓T ✗2R 0/2
LU-19824 ldlm: don't allow sysfs reads before ldlm is setup
reviewing Timothy Day · blocked on the owner: enforced tests failed
8 unresolved
S +19 −3
99d
LU-19824 ldlm: don't allow sysfs reads before ldlm is setup
reviewing Timothy Day · blocked on the owner: enforced tests failed
8 unresolved
S +19 −3
99d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
janitor run: 1 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-4 crashed | RHEL 10.1 / x86_64 | ran 11 tests. 1 tests failed: sanity-dom. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-5 | RHEL 9.7 / x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
7 optional test failure(s) — informational
build #127752 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Alex Zhuravlev
patchsets:
PS1 01-23
PS2 07-18
threads: 8 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:12 — (style) The body only motivates the per-cpu counter case, but two of the three gated readers, lock_reclaim_threshold_mb and lock_limit_mb, r
Gerrit AI review for Lustre
(style) The body only motivates the per-cpu counter case, but two of the three gated readers, lock_reclaim_threshold_mb and lock_limit_mb, read plain __u64 globals that cannot crash. Could the message explain why those are gated as well? It would also help later git log searches to name the symbols: the new field is init_state, and the attribute that actually crashes is lock_granted_count.
reply Gerrit AI review for Lustre COMMIT_MSG:13 — (defect) This fixes a crash, so it should carry a Fixes: tag. The window was opened when lock_granted_count first exposed ldlm_granted_total
Gerrit AI review for Lustre
(defect) This fixes a crash, so it should carry a Fixes: tag. The window was opened when lock_granted_count first exposed ldlm_granted_total from ldlm_proc_setup(), which ran long before ldlm_reclaim_setup() did the percpu_counter_init().
Fixes: 33b55f223a42 ("LU-6529 ldlm: improve proc interface of lock reclaim")
reply Gerrit AI review for Lustre ldlm_internal.h:228 — (style) Not a bug, but every other field in struct ldlm_state carries the struct's prefix: ldlm_cb_service, ldlm_cancel_service, ldlm_client
Gerrit AI review for Lustre
(style) Not a bug, but every other field in struct ldlm_state carries the struct's prefix: ldlm_cb_service, ldlm_cancel_service, ldlm_client, ldlm_bl_pool. If the patch is refreshed, ldlm_init_state would match. The enum tag and the member name can coexist, since C keeps tag and member namespaces separate.
reply Andreas Dilger ldlm_lockd.c:3226 — (minor) this should be annotated as `unlikely()` since it would only ever be true at setup and cleanup time.
Andreas Dilger
(minor) this should be annotated as `unlikely()` since it would only ever be true at setup and cleanup time.
(minor) it probably would generate less code to conditionally print the value instead of having two separate scnprintf() calls:
```
return scnprintf(buf, PAGE_SIZE, "%llu\n",
likely(ldlm_state->init_state == LDLM_INIT_ALL) ?
ldlm_reclaim_threshold_mb : 0);
```
reply Gerrit AI review for Lustre ldlm_lockd.c:3233 — (minor) ldlm_reclaim_threshold_mb and ldlm_lock_limit_mb are plain __u64 globals, so reading them early cannot crash; gating them only chang
Gerrit AI review for Lustre
(minor) ldlm_reclaim_threshold_mb and ldlm_lock_limit_mb are plain __u64 globals, so reading them early cannot crash; gating them only changes what userspace sees. 0 is also a meaningful value for these two tunables, since both store handlers treat 0 as "disabled", so during the ldlm_cleanup() window a monitoring tool now reads "reclaim disabled" rather than the configured value. lock_reclaim_threshold_count and lock_limit_count expose the same two settings in lock units and are left ungated, so the two views disagree in that window. Would it be simpler to leave these two alone and gate only lock_granted_count? Same comment applies to lock_limit_mb_show().
reply Gerrit AI review for Lustre ldlm_lockd.c:3550 — (defect) Some evidence for the barrier question already raised on this line. This plain store can become visible before percpu_counter_init(
Gerrit AI review for Lustre
(defect) Some evidence for the barrier question already raised on this line. This plain store can become visible before percpu_counter_init()'s store to ldlm_granted_total.counters on arm64/ppc64; a reader then passes the check in lock_granted_count_show() and calls per_cpu_ptr(NULL, cpu), which is the same access the patch is trying to prevent. percpu_counter_init()'s internal spin_unlock() does not help, since it is a release barrier for the stores before it, not for this later one. A barrier here alone would not be enough either. The read side has only a control dependency from the flag load to the counter load, and control dependencies do not order loads, so the reader can still load fbc->counters ahead of init_state. smp_store_release() here paired with smp_load_acquire() at the three read sites is what would order both ends.
reply Alex Zhuravlev ldlm_lockd.c:3550 — probably some kind of mb() is needed just before this line?
Alex Zhuravlev
probably some kind of mb() is needed just before this line?
reply Gerrit AI review for Lustre ldlm_lockd.c:3570 — (defect) Clearing the flag here does not close the teardown race, because ldlm_reclaim_cleanup() is the very next statement:
Gerrit AI review for Lustre
(defect) Clearing the flag here does not close the teardown race, because ldlm_reclaim_cleanup() is the very next statement:
ldlm_state->init_state = LDLM_INIT_NONE;
ldlm_reclaim_cleanup(); /* percpu_counter_destroy() */
A reader that already passed the check in lock_granted_count_show() is still inside percpu_counter_sum_positive() when free_percpu(fbc->counters) runs, so __percpu_counter_sum() walks freed per-cpu memory, and after fbc->counters is set to NULL it walks per_cpu_ptr(NULL, cpu).
What actually drains in-flight show() calls is sysfs_remove_group(), and that does not run until roughly 35 lines further down. Moving sysfs_remove_group() above ldlm_reclaim_cleanup() would close it properly and make the flag unnecessary on this side.
ldlm_cleanup() runs from ldlm_put_ref() on the last target umount, so a monitoring agent polling /sys/fs/lustre/ldlm/ reaches this.
owner Timothy Day · uploader Timothy Day · PS2 uploaded 109d ago · NEW · open in Gerrit ↗
commit message
LU-19824 ldlm: don't allow sysfs reads before ldlm is setup If you attempt to access per_cpu counters before they are initialized, you may crash. To avoid this, short-circuit sysfs read in LDLM until LDLM is properly setup. This is tracked by a new field in ldlm_state. Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: I96dad1d36f9d6dd6fac425009ea91ab71d75fecf
50831
master
J ✓B ✓T ✗2R 0/2
LU-6142 llite: simplify flock initialization
reviewing Neil Brown · blocked on the owner: enforced tests failed
S +18 −12
99d
LU-6142 llite: simplify flock initialization
reviewing Neil Brown · blocked on the owner: enforced tests failed
S +18 −12
99d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-5 | RHEL 8.7/x86_64 | ran 6 tests. 1 tests failed: sanityn. | session |
| review-dne-zfs-part-1 | RHEL 8.7/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
3 optional test failure(s) — informational
build #95390 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger
patchsets:
PS1 05-02
PS2 06-07
PS3 06-07
owner Neil Brown · uploader Neil Brown · PS3 uploaded 1246d ago · NEW · open in Gerrit ↗
commit message
LU-6142 llite: simplify flock initialization
flock locks always have fl_start and fl_end initialised to 0 and
OFFSET_MAX, so the fields can be unconditionally copied into
flock.l_flock.
Since Linux 3.16 Commit 130d1f956ab3 ("locks: ensure that fl_owner is
always initialized properly in flock and lease codepaths"), the
fl_owner field is correctly initialised so it too can be copied
directly. On older kernels we still need to provide an explicit
value.
So improve the sanity checking and return EINVAL rather than using
LASSERT(). lustre shouldn't crash if some other calls us wrongly.
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: I4d49b328430266c0a9aeba7d62ccefc7258cd8a4
67125
master
J ✗1B ✓T ✗1R -1/2−
LU-20461 acl: Add a prefix for posix_acl_to_xattr
reviewing Yang Sheng · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
1 unique failure
4 unresolved
S +11 −10
99d
LU-20461 acl: Add a prefix for posix_acl_to_xattr
reviewing Yang Sheng · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
1 unique failure
4 unresolved
S +11 −10
99d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanityn@ldiskfs+DNE:test_71a | seen in 3 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-selinux-ssk-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
9 optional test failure(s) — informational
build #127317 SUCCESS · tests all Maloo sessions
reviews:
Timothy Day -1
threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:9 — (style) The body never names the new symbol. Spelling out ll_posix_acl_to_xattr() would make this findable with `git log --grep` later. It w
Gerrit AI review for Lustre
(style) The body never names the new symbol. Spelling out ll_posix_acl_to_xattr() would make this findable with `git log --grep` later. It would also help to record what actually went wrong - LU-20461 is a stack corruption in ll_set_acl(), not a compiler diagnostic - so the severity is visible from the message alone.
reply Timothy Day patchset comment — What kernel version were you using? Would you expect that kernel to have posix_acl_to_xattr() natively? Or would it need compat_posix_acl_to
Timothy Day
We are intentionally using the upstream Linux API directly rather than defining an ll_ wrapper. As part of Lustre upstreaming efforts, we want the modules in lnet/ and lustre/ to use the latest kernel APIs natively rather than relying on inline #ifdef or ll_ thin wrappers. What compiler error or warning do you see?
Yang Sheng
You can look the LU-20461 for detail. Anyway, It is not so hard to be fixed, but really tricky to trace. So i think we need verify carefully if doing in this way.
Timothy Day
What kernel version were you using? Would you expect that kernel to have posix_acl_to_xattr() natively? Or would it need compat_posix_acl_to_xattr()?
reply Gerrit AI review for Lustre posix_acl_xattr.h:37 — (defect) In this branch the rename is a no-op - ll_posix_acl_to_xattr() expands to exactly the call the three callers already made. So it is
Gerrit AI review for Lustre
(defect) In this branch the rename is a no-op - ll_posix_acl_to_xattr() expands to exactly the call the three callers already made. So it isn't clear this can explain or fix the LU-20461 crash.
The disassembly in the ticket shows ll_set_acl() calling the kernel's old 4-arg posix_acl_to_xattr() with new-style arguments: %rdx is &value_size on the stack, %ecx is 0xc40 (GFP_NOFS), there is no kmalloc() ahead of it, and `value` ends up holding the int return (CR2 = 0x1c at the following memcpy). That is the unexpanded source-level call, i.e. HAVE_POSIX_ACL_TO_XATTR_ALLOC_BUFFER was defined against a kernel that has the old prototype.
The other explanation doesn't hold: all three call sites reach this header unconditionally (llite/acl.c -> llite_internal.h -> lustre_compat.h, and osd_internal.h -> lustre_compat.h), so with the old macro in place the compat wrapper could not have been silently skipped.
If that's right, the defect is in the detection, not the name. The conftest leans on -Werror turning -Wint-conversion into an error; a hard type error is harder to lose:
void *(*p)(struct user_namespace *, const struct posix_acl *,
size_t *, gfp_t) = posix_acl_to_xattr;
Could you confirm whether config.h in that build had HAVE_POSIX_ACL_TO_XATTR_ALLOC_BUFFER set (or whether the modules were built against different kernel headers than the running kernel)?
reply Gerrit AI review for Lustre posix_acl_xattr.h:39 — (minor) With the posix_acl_to_xattr redefinition gone, the escape hatch that came with it is dead: config/lustre-core.m4:3707 still AC_DEFIN
Gerrit AI review for Lustre
(minor) With the posix_acl_to_xattr redefinition gone, the escape hatch that came with it is dead: config/lustre-core.m4:3707 still AC_DEFINEs old_posix_acl_to_xattr(), and nothing in the tree has ever called it. Worth dropping in the same patch. It could not have worked anyway - config.h is included first, so old_posix_acl_to_xattr(a, b, c, d) expanded to posix_acl_to_xattr(a, b, c, d), which this header's macro then rewrote back into compat_posix_acl_to_xattr() with the arguments in the wrong roles.
owner Yang Sheng · uploader Yang Sheng · PS1 uploaded 119d ago · NEW · open in Gerrit ↗
commit message
LU-20461 acl: Add a prefix for posix_acl_to_xattr
The compiler might be confused by defining a macro
with the same name. So add a prefix to avoid such an issue.
Fixes: f85a7cf4c8d3 ("LU-20133 build: Compatibility updates for kernel v7.0")
Signed-off-by: Yang Sheng <ys@whamcloud.com>
Change-Id: I535f589bde085e0c8e1f6081f24d7c2cd261db5c
63307
master
J ✓B ✓T ✗1R -1/2−
LU-19769 lnet: simplify lnet_net_show_dump
reviewing Oleg Drokin · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
stalled 116d
3 unresolved
L +354 −229
116d
LU-19769 lnet: simplify lnet_net_show_dump
reviewing Oleg Drokin · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
stalled 116d
3 unresolved
L +354 −229
116d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
awaiting review (CI not green yet)
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanity-sec. | session |
5 optional test failure(s) — informational
build #120267 SUCCESS · tests all Maloo sessions
no vote yet: Chris Horn
threads: 1 need your reply · 0 waiting on others · 2 own notes · 0 bot
reply Oleg Drokin COMMIT_MSG:9 — Auggie is Augment's cli tool you can run in a terminal, much better than mucking around with vs code and such: https://docs.augmentcode.com/
Andreas Dilger
(minor) "Augment"?
Oleg Drokin
Auggie is Augment's cli tool you can run in a terminal, much better than mucking around with vs code and such: https://docs.augmentcode.com/cli/overview
note James Simmons api-ni.c:5873 — Not properly aligned.
James Simmons
Not properly aligned.
note James Simmons api-ni.c:5983 — Better would be
James Simmons
Better would be
if (!lnd || !lnd->lnd_nl_get || !lnd->lnd_keys)
return rc;
It removed one level of indentation and the checkpatch issue below.
owner Oleg Drokin · uploader Oleg Drokin · PS1 uploaded 297d ago · NEW · open in Gerrit ↗
commit message
LU-19769 lnet: simplify lnet_net_show_dump This is 100% agent-refactoring using auggie and whatever default model they use underneath. 1. Reduced Function Size: The main function went from ~363 lines to ~142 lines (61% reduction) 2. Created 7 Helper Functions: • lnet_ni_format_cpts() - Formats CPT list as a string • lnet_ni_show_basic_info() - Outputs NID, status, and interface info • lnet_ni_show_stats() - Outputs basic send/recv/drop statistics • lnet_ni_show_msg_stats_type() - Outputs detailed message statistics • lnet_ni_show_health_stats() - Outputs health monitoring statistics • lnet_ni_show_tunables() - Outputs network and LND tunables • lnet_ni_show_extended() - Orchestrates all extended information output 3. Improved Code Quality: • Reduced nesting depth from 6 to 4 levels • Better separation of concerns • Each function has a single, clear responsibility • Comprehensive documentation for all helper functions • Improved error handling and propagation 4. Reusability Analysis: • Several helper functions (CPT formatting, basic info, stats, health stats) can be reused in other parts of the codebase • The message stats function is specific to network interface dump but follows a pattern that could be applied to similar functions like lnet_peer_ni_show_dump() Change-Id: I0843206c84da5f53c48550ef1ec047a3c50b39f9 Signed-off-by: Oleg Drokin <green@whamcloud.com>
46326
master
J !B ✓T ✗1R -1/2−
LU-15485 lprocfs: preallocate all lprocfs_stats
reviewing Chris Horn · blocked on the owner: enforced tests failed
stalled 134d
XS +4 −2
134d
LU-15485 lprocfs: preallocate all lprocfs_stats
reviewing Chris Horn · blocked on the owner: enforced tests failed
stalled 134d
XS +4 −2
134d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
janitor run: 1 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-3 | CentOS 8.3/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
build #85992 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger -1
no vote yet: Ann Koehler
patchsets:
PS1 01-26
PS2 01-26
PS3 01-31
owner Chris Horn · uploader Chris Horn · PS3 uploaded 1737d ago · NEW · open in Gerrit ↗
commit message
LU-15485 lprocfs: preallocate all lprocfs_stats Allocating the stats as-needed leads to fragmentation. lprocfs_alloc_stats() preallocates only for IRQ_SAFE stats. It does this so that it doesn't have to try to allocate memory in an interrupt handler. When the stats are allocated as-needed, this can lead to fragmentation. Change lprocfs_alloc_stats() to preallocate all stats. HPE-bug-id: LUS-642 Signed-off-by: Ann Koehler <amk@cray.com> Signed-off-by: Chris Horn <chris.horn@hpe.com> Change-Id: Iaed09f6763fe53e273672829bece417c9370a15e
61473
master
J !B ✗T –R -1/2−
LU-19410 utils: lnetdump
reviewing Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; build failure
needs rebase
stalled 134d
1 unresolved
XL +2630 −7
134d
LU-19410 utils: lnetdump
reviewing Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; build failure
needs rebase
stalled 134d
1 unresolved
XL +2630 −7
134d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; build failure
awaiting review (CI not green yet)
janitor run: build failed — no tests ran — janitor results
build #117156 FAILURE
no vote yet: Yonatan Nachum, Chris Horn, Artem Blagodarenko
patchsets:
PS1 09-22
PS2 09-23
PS3 10-03
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger COMMIT_MSG:12 — NB: the `ignore` keyword is even stronger, in that Jenkins won't even try to build the patch if it is only posted for review/reference
Andreas Dilger
NB: the `ignore` keyword is even stronger, in that Jenkins won't even try to build the patch if it is only posted for review/reference
owner Timothy Day · uploader Timothy Day · PS3 uploaded 396d ago · NEW · open in Gerrit ↗
commit message
LU-19410 utils: lnetdump Implement a tool to capture LNet packet dumps using eBPF. Test-Parameters: forbuildonly Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: I9b19e59ec758de19d95a09fb291066414cf6bf8e
56788
master
J !B ✓T –R -1/2−
LU-16897 lnet: sparse read optimization (SRO)
reviewing Cyril Bordage · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 135d
12 unresolved
XL +1107 −79
135d
LU-16897 lnet: sparse read optimization (SRO)
reviewing Cyril Bordage · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 135d
12 unresolved
XL +1107 −79
135d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
awaiting review (CI not green yet)
janitor run: 1 failing config(s), none unique to this patch — janitor results
build #123774 SUCCESS
no vote yet: Frank Sehr, Manish Regmi, Qian Yingjin, Sohei Koyama, Serguei Smirnov, Chris Horn, Andreas Dilger
patchsets:
PS64 01-14
PS65 01-18
PS66 02-26
PS67 03-03
PS68 04-11
+63 earlier
PS1 10-25 PS2 11-18 PS3 12-11 PS4 12-12 PS5 12-13 PS6 12-16 PS7 12-20 PS8 12-20 PS9 12-27 PS10 01-24 PS11 01-24 PS12 01-24 PS13 01-28 PS14 01-28 PS15 01-28 PS16 01-28 PS17 01-29 PS18 02-04 PS19 02-05 PS20 02-05 PS21 02-12 PS22 02-21 PS23 02-21 PS24 02-26 PS25 02-26 PS26 02-26 PS27 03-05 PS28 03-06 PS29 03-15 PS30 03-16 PS31 03-16 PS32 03-18 PS33 03-19 PS34 03-19 PS35 03-20 PS36 03-20 PS37 05-12 PS38 05-28 PS39 05-28 PS40 05-30 PS41 05-31 PS42 06-20 PS43 06-20 PS44 06-25 PS45 06-26 PS46 06-26 PS47 06-27 PS48 07-02 PS49 07-02 PS50 07-02 Andreas Dilger PS51 07-17 PS52 08-01 PS53 09-19 PS54 09-19 PS55 09-19 PS56 10-01 PS57 10-03 PS58 10-30 PS59 10-31 PS60 10-31 PS61 11-12 PS62 12-12 PS63 12-18threads: 12 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger COMMIT_MSG:33 — I don't understand why test_910 and test_911 need to be explicitly skipped here? These are new tests being added by this patch, so they sho
Andreas Dilger
I don't understand why test_910 and test_911 need to be explicitly skipped here? These are new tests being added by this patch, so they should be skipped automatically by the subtest itself based on the server version or testing for the sparse_read option. Also, it looks like test_60g interop is only an issue with servers <2.13. If that is not done properly in this patch, then it will just cause all other interop testing to fail for these subtests in the future.
reply Andreas Dilger COMMIT_MSG:34 — The 2.16 client will not even have test_910 and test_911 in the sanity.sh script, so listing those subtests here is unnecessary.
Andreas Dilger
The 2.16 client will not even have test_910 and test_911 in the sanity.sh script, so listing those subtests here is unnecessary.
reply Cyril Bordage patchset comment — I think I found the problems. I have a patch in mind. I am testing my theory and I need be sure it is the best way.
Andreas Dilger
Cyril, can you please post a rebased version of the patch and I will try to get someone else to do a code review to see if they can spot the bugs you are trying to find.
Cyril Bordage
I think I found the problems. I have a patch in mind. I am testing my theory and I need be sure it is the best way.
reply Cyril Bordage lib-lnet.h:157 — In lnet_md_sparse_save_bitmap. Did I miss something?
Serguei Smirnov
Is sd_md_start initialized somewhere?
Cyril Bordage
In lnet_md_sparse_save_bitmap. Did I miss something?
reply Cyril Bordage lib-msg.c:987 — hole_length is used on clients and only when we have holes, so sd_hole_length will be always greater than 0. But if we have a "small" page,
Serguei Smirnov
It seems like sd_hole_length could be 0, are we guaranteed not to come here then? Because otherwise it'll overflow.
Cyril Bordage
hole_length is used on clients and only when we have holes, so sd_hole_length will be always greater than 0. But if we have a "small" page, sd_hole_length could be smaller that sizeof(sd_layout). So, I changed the type.
reply Cyril Bordage lustre_net.h:1468 — I have added what SRO is
Andreas Dilger
(style) this comment doesn't explain what "sro_threshold" is, except to say that it is the threshold for SRO... Better to just name the variable well:
```
unsigned int bd_sparse_read_threshold_pages;
```
and don't have a comment at all. It is a _bit_ long for my liking, but has the benefit that the usage can be found along with all the other places where "sparse_read_threshold" is used.
Cyril Bordage
I have added what SRO is
reply Andreas Dilger lustre_net.h:1470 — (style) spaces around that `*`
Andreas Dilger
(style) spaces around that `*`
reply Andreas Dilger lustre_idl.h:683 — (style) renaming this to `pb_sparse_read_threshold_4kb` would make it more clear to users what it is for.
Andreas Dilger
(style) `pb_sparse_read_threshold_4kb`
Andreas Dilger
(style) renaming this to `pb_sparse_read_threshold_4kb` would make it more clear to users what it is for.
reply Cyril Bordage niobuf.c:395 — From what I saw, yes it is enough because we have the import in this case.
Serguei Smirnov
If it is necessary to check that imp is not NULL here, is it enough to only check the rq_type and rq_reqmsg above?
Cyril Bordage
From what I saw, yes it is enough because we have the import in this case.
reply Cyril Bordage niobuf.c:238 — It is int, so it is not a problem if it less than zeroes. It will represent the shift we need to apply to the quantity of received data.
Serguei Smirnov
Is this safe? Is bd_nob_transferred always at least the layout struct size?
Cyril Bordage
It is int, so it is not a problem if it less than zeroes. It will represent the shift we need to apply to the quantity of received data.
reply Cyril Bordage pers.c:25 — Compared to vanilla function, we don't have the memset part. The reason is that here we have "have a shrunk bitmap of size nbits-shift" inst
Andreas Dilger
What *is* fed in to the high bits in this case? Is it doing sign-extending? Does that make sense for unsigned arguments?
Cyril Bordage
I am not sure whether I got your question right about sign extension… Anyway, this function shrunk the bitmap, that is why we don't need to add 0s. Does that answer your question?
Andreas Dilger
Then I don't understand why this duplicate function is needed? Shift right will always zero-fill the top bits, so it doesn't seem different from the "trunc" version here?
Cyril Bordage
Compared to vanilla function, we don't have the memset part. The reason is that here we have "have a shrunk bitmap of size nbits-shift" instead of size nbits.
reply Andreas Dilger sanity.sh:35689 — (style) adding tests at the end is prone to repeated conflicts as other patches are landing. Better to use some intermediate test number to
Andreas Dilger
(style) adding tests at the end is prone to repeated conflicts as other patches are landing. Better to use some intermediate test number to avoid this (e.g. test_119d).
owner Cyril Bordage · uploader Cyril Bordage · PS68 uploaded 207d ago · NEW · open in Gerrit ↗
commit message
LU-16897 lnet: sparse read optimization (SRO) When a sparse file is read, pages representing holes are built with zeroes and sent. Sparse read optimization (SRO) will prevent sending zeroes through network. When an OSS wants to send an LNet message containing pages coming from holes, md is remapped to skip holes and an LNET_MSG_PUT_SPARSE is sent to share the new mapping with hole locations. When the client receives this message, it does the remapping and ACK. Then, the server will send the remapped data as usual. SRO works at ptlrpc and LNet level, leaving lnd code untouched. It requires the patch on the client and the OSSs. If the OSS or the client does not have the patch, SRO will simply be disabled. SRO is configured per client (one value for each OST): $ lctl set_param osc.*.sparse_read_threshold_kb=<uint> If the value is 0, SRO is simply disabled. If the value is greater, it defines the threshold for the minimum number of sparse pages needed (on the client) in an LNet message to have the optimization enabled. The value in kiB is rounded up to correspond to a multiple of PAGE_SIZE. Indeed, since SRO increases the number of messages shared between the OSS and the client, it won't be always productive. Thus, the threshold can be tuned depending on the environment. Test-Parameters: testlist=sanity serverversion=2.16 env=SANITY_EXCEPT="65i 65j 65k 65l 65n 65o 65p 65q 65r 66 69 73 77a 77b 77c 77d 77g 77k 77l 78 81a 81b 99 101b 101c 101d 101g 101h 101i 101j 101m 102b 102c 102d 102f 102i 102j 102k 102m 102n 102s 102t 103b 103e 103f 104a 104d 105a 105b 105c" Test-Parameters: testlist=sanity clientversion=2.16 env=SANITY_EXCEPT="0d 119p 230b" Test-Parameters: testlist=sanity,sanity-flr env=SPARSE_READ_THRESHOLD=1 Test-Parameters: testlist=sanity env=ONLY="910 911" clientarch=aarch64 clientdistro=el9.5 Signed-off-by: Cyril Bordage <cbordage@whamcloud.com> Change-Id: I81ed101ee2a774866c03a5d44526e00ab96b210e
63658
master
J !B ✓T ✗2R +0/2−
LU-16246 osd-ldiskfs: ensure r/w ordering of do_index_ops
reviewing liuqinfei · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
stalled 141d
1 unresolved
S +25 −0
141d
LU-16246 osd-ldiskfs: ensure r/w ordering of do_index_ops
reviewing liuqinfei · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
stalled 141d
1 unresolved
S +25 −0
141d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
awaiting review (CI not green yet)
janitor run: 5 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 | RHEL 9.5 / x86_64 | ran 11 tests. 1 tests failed: sanity-lfsck. | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: recovery-small. | session |
build #121067 SUCCESS · tests all Maloo sessions
reviews:
Artem Blagodarenko +1
no vote yet: Andrew Perepechko, Alex Zhuravlev
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Artem Blagodarenko lod_object.c:56 — Liu Qinfei, thank for the explantion
Artem Blagodarenko
I don't see shared variables here. Please, describe there and how obj->do_index_ops is shared
liuqinfei
obj->do_index_ops is a cross-thread shared variable in Lustre’s dt_try_as_dir lazy initialization mechanism: one thread assigns values to the OSD-layer and LOD-layer obj->do_index_ops in sequence (OSD first, then LOD) via lod_index_try/osd_index_try, while other threads check the LOD-layer obj->do_index_ops—if it is non-null, they assume the OSD-layer is also initialized (and skip assignment), which relies on the implicit assumption that the assignment order is visible across threads. This works on x86 (strong memory ordering) where the assignment sequence is preserved in cross-thread visibility, but on ARM (weak memory ordering), the shared obj->do_index_ops variable’s visibility is reordered: other threads may see the LOD-layer obj->do_index_ops as non-null (from another thread’s assignment) yet the OSD-layer as null, breaking the assumption and causing errors, as the shared variable’s cross-thread visibility does not maintain the intended assignment order. Insert a read barrier between the two read operations to guarantee the ordering.
Artem Blagodarenko
Liu Qinfei, thank for the explantion
owner liuqinfei · uploader liuqinfei · PS1 uploaded 278d ago · NEW · open in Gerrit ↗
commit message
LU-16246 osd-ldiskfs: ensure r/w ordering of do_index_ops Add smp_rmb() in lod_lookup() to guarantee ordered reads of obj->do_index_ops and next->do_index_ops variables on ARM platform. Add smp_wmb() in osd_index_try() to ensure ordered assignment of dt->do_index_ops variable on ARM platform. Both barriers prevent potential out-of-order execution issues specific to ARM architecture. Signed-off-by: liuqinfei <lucas.liuqinfei@huawei.com> Signed-off-by: luo rixin <luorixin@huawei.com> Change-Id: If27c4770c3c84560e51de955849364846661252d
65417
master
J !B ✓T ✗2R 0/2
LU-20163 ptlrpc: debugfs entries in ptlrpc
reviewing Alex Zhuravlev · blocked on the owner: enforced tests failed
stalled 158d
XS +1 −1
158d
LU-20163 ptlrpc: debugfs entries in ptlrpc
reviewing Alex Zhuravlev · blocked on the owner: enforced tests failed
stalled 158d
XS +1 −1
158d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
janitor run: 4 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-zfs-part-2 | RHEL 8.10 / x86_64 | ran 11 tests. 1 tests failed: sanity-lfsck. | session |
| review-dne-zfs-part-5 | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanityn. | session |
build #125699 SUCCESS · tests all Maloo sessions
no vote yet: Mikhail Pershin
patchsets:
PS1 04-20
PS2 05-13
PS3 05-28
owner Alex Zhuravlev · uploader Alex Zhuravlev · PS3 uploaded 160d ago · NEW · open in Gerrit ↗
commit message
LU-20163 ptlrpc: debugfs entries in ptlrpc we should register debugfs entries after all the internal structures (like NRS) have been initialized and unregister before any internal structures are released. should fix problem like this: watchdog: BUG: soft lockup - CPU#7 stuck for 22s! [lctl:47830] irq event stamp: 0 hardirqs last enabled at (0): [<0000000000000000>] 0x0 softirqs last disabled at (0): [<0000000000000000>] 0x0 CPU: 7 PID: 47830 Comm: lctl Tainted: G W O 5.14.0 #17 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), Call Trace: <IRQ> __pv_queued_spin_lock_slowpath+0x242/0x2b0 do_raw_spin_lock+0x8f/0xa0 ptlrpc_lprocfs_nrs_policies_seq_show+0x13c/0x900 [ptlrpc] seq_read_iter+0x100/0x460 seq_read+0x131/0x160 full_proxy_read+0x4b/0x70 vfs_read+0x8e/0x3b0 ksys_read+0x50/0xc0 do_syscall_64+0x38/0xe0 Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com> Change-Id: I2039c43b294aa1698fe4e2b6d343f2310f6ea5aa Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com>
63447
master
J ✓B ✓T ✗2R -2/2−
LU-18318 lnet: Add lnet routing between IPv6 tcp and o2ib
reviewing Xinxia Qu · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
stalled 159d
7 unresolved
L +288 −70
159d
LU-18318 lnet: Add lnet routing between IPv6 tcp and o2ib
reviewing Xinxia Qu · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
stalled 159d
7 unresolved
L +288 −70
159d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
awaiting review (CI not green yet)
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 | RHEL 9.5 / x86_64 | ran 11 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-zfs-part-2 | RHEL 8.10 / x86_64 | ran 11 tests. 1 tests failed: sanity-lfsck. | session |
3 optional test failure(s) — informational
build #120679 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger -1
no vote yet: Cyril Bordage, Serguei Smirnov, Chris Horn
patchsets:
PS1 01-18
PS2 01-18
PS3 01-18
PS4 01-18
threads: 7 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger patchset comment — I'm not advocating to do a massive restructuring of the code immediately, but I think it would be preferable to move in the right direction
Andreas Dilger
One major problem with this patch that the "large NID" is not *only* an IPv6 NID of 16-byte IOv6+4-byte network number=20 bytes, but potentially any other size NID as well, so this would shift the offset of all of these messages and break the protocol if some other size NID was used. It doesn't make sense to need a new protocol revision every time that a new NID size is used. The size of the NID is encoded into struct lnet_nid itself, including IPv4 NIDs (which have "size 0", with implicit +8 bytes to the size), so it would be better to rework this patch to allow a variable sized "struct lnet_nid" and then use the NID size to calculate the offset of the rest of the message buffers.
Xinxia Qu
Hi, Are you proposing that we use `struct lnet_nid` directly in `struct kib_immediate_msg` for `ibim_hdr` (with length determined by NID size), rather than separate `struct lnet_hdr_nid4`/`lnet_hdr_nid16` types? Implementing this variable‑size NID scheme for full IPv6@o2ib support would require refactoring `struct kib_msg` and related code — fields would need dynamic offset‑based access, and we’d need to address potential alignment and memory‑allocation issues. Thanks!
Andreas Dilger
I'm not advocating to do a massive restructuring of the code immediately, but I think it would be preferable to move in the right direction to handling variable-sized NIDs. There is already code in this patch to partly handle this, but for only two fixed NID sizes. These could be replaced with checking nid_size from the NID to determine the offsets.
reply Andreas Dilger o2iblnd-idl.h:137 — We still need version interoperability, but unlike the incrementing version numbers we can explicitly choose to remove support for old featu
Andreas Dilger
Rather than reserving separate version numbers up to 15, it would be better to just consider these three bits (0x0010, 0x0001, 0x0002) used for the old "version" but change the version into a compatibility but mask instead of sequential version numbers (which are not very flexible). Then use 0x0004 (or 0x0020) to mean "LARGE_NID" and check for this bit independent of the version number. It would be nice to rename "VERSION_2=0x0002" to be related to the reason this new protocol version was added. Something like "MAP_ON_DEMAND", but I don't think there is a separate meaning for the 0x0010 bit. It should just be a sanity check and always be set, and verified in the places that are currently checking for _V1 or _V2. That avoids issues with the new "LARGE_NID" bit being set, since this bit can just be checked independently. Since V1 is extremely old (V2 was added in 2009) it doesn't really make sense to keep compatibility with that version anymore, and it could just be dropped.
Xinxia Qu
Oh, I see. You mean keeping the previous 3 bits as the old version field and using the remaining 13 bits as new feature extension bits, with "LARGE_NID" needing only 1 of them. A related thought: an incrementing version number scheme is typically tied to connection and version negotiation—for example, a message with a higher version number may remain forward compatible to some extent with messages of lower versions. If that kind of version negotiation isn’t needed, we can use feature bits instead. Thanks!
Andreas Dilger
We still need version interoperability, but unlike the incrementing version numbers we can explicitly choose to remove support for old features selectively as needed, or never. This has worked extremely well for Lustre protocol interoperability negotiation, since we can have short-lived "features" that are only determining if the peer has a particularly impactful bug fix, but can be quickly deprecated, while some features remain permanently negotiable if they do not need to be enabled all the time (hypothetically like compression or encryption at the LNet level, not that we would implement that).
reply Xinxia Qu o2iblnd-idl.h:138 — Sure, we should use a feature‑oriented naming. Thanks!
Andreas Dilger
"MSG3" is not a good name for this. Better to name it after what it means, "LARGE_NID" or similar.
Xinxia Qu
Sure, we should use a feature‑oriented naming. Thanks!
reply Xinxia Qu o2iblnd.c:217 — Hi, are you suggesting to replace the `ibm_version` field in `struct kib_msg` with a new `ibm_features` field, implemented as a bit‑field, t
Andreas Dilger
The mag_version field should be renamed to msg_features and users updated appropriately.
Xinxia Qu
Hi, are you suggesting to replace the `ibm_version` field in `struct kib_msg` with a new `ibm_features` field, implemented as a bit‑field, to free up bits for extensions? Thanks!
reply Xinxia Qu o2iblnd.c:223 — Oh, I see, Thanks!
Andreas Dilger
IMHO, these only V_1/V_2 checks should be replaced with "version & IBLND_MSG_VERSION_CHECK", where it is checking the 0x10 bit and nothing else, then let the rest of the bits define features.
Xinxia Qu
Oh, I see, Thanks!
reply Xinxia Qu o2iblnd.c:270 — Sounds great! Thanks!
Andreas Dilger
All of this "is_msg3" passing is unnecessary, IMHO. It should be possible to pass the msg_features field to these functions and check if the LARGE_NID bit is set, then CALCULATE the message SIZE based on the size of the NID.
Xinxia Qu
Sounds great! Thanks!
reply Xinxia Qu o2iblnd.c:3870 — Yes, it seems this is mainly checking some constants. `IBLND_MSG_VERSION` is like an alias for `IBLND_MSG_VERSION_2`, serving as a simpler d
Andreas Dilger
This should not really be an LASSERT. It is OK to check that the actual version numbers stay the same, but not that the current version is always V2.
Xinxia Qu
Yes, it seems this is mainly checking some constants. `IBLND_MSG_VERSION` is like an alias for `IBLND_MSG_VERSION_2`, serving as a simpler default for V2. If a new VERSION is introduced later, `IBLND_MSG_VERSION` might either be unnecessary or should point to the new default VERSION.
owner Xinxia Qu · uploader Xinxia Qu · PS4 uploaded 289d ago · NEW · open in Gerrit ↗
commit message
LU-18318 lnet: Add lnet routing between IPv6 tcp and o2ib Typical cross-network forwarding scenario: A <-o2ib(IPv4)-> R <-tcp(IPv6)-> B Add kib_msg immediate/get/putreq msg3 to support nid16(IPv6). An ipv4@o2ib NIs will use msg3 for ipv6@tcp6 traffic, and keep previous version msg for ipv4@tcp to preserve performance and compatibility. Signed-off-by: Xinxia Qu <xqu@ddn.com> Change-Id: Ife74e8baffaa18a9ea4fdf648ab00979bd89122f
61992
b2_15
J ✗28B ✓T ✗2R +2/1
LU-16011 lnet: remove LBUG() in srpc_client_rpc_expired()
reviewing Etienne AUJAMES · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
28 unique failures
stalled 165d
XS +0 −1
165d
LU-16011 lnet: remove LBUG() in srpc_client_rpc_expired()
reviewing Etienne AUJAMES · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
28 unique failures
stalled 165d
XS +0 −1
165d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity1@zfs+DNE:test_24a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity1@zfs+DNE:test_24b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity2@zfs:test_41b | seen in 2 other reviews |
| conf-sanity2@zfs:test_41c | seen in 2 other reviews |
| conf-sanity2@zfs:test_42 | seen in 2 other reviews |
| conf-sanity2@zfs:test_43a | seen in 2 other reviews |
| conf-sanity2@zfs:test_43b | seen in 2 other reviews |
| conf-sanity2@zfs:test_44 | seen in 2 other reviews |
| conf-sanity2@zfs+DNE:test_50h | seen in 1 other review |
| conf-sanity2@zfs+DNE:test_50i | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_1n | seen in 3 other reviews |
| ost-pools@zfs:test_11 | seen in 3 other reviews |
| ost-pools@zfs:test_15 | seen in 3 other reviews |
| ost-pools@zfs:test_16 | seen in 3 other reviews |
| ost-pools@zfs:test_19 | seen in 3 other reviews |
| ost-pools@zfs:test_20 | seen in 3 other reviews |
| ost-pools@zfs:test_21 | seen in 3 other reviews |
| ost-pools@zfs:test_22 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_23a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_23b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_24 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_27 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs:test_28 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| ost-pools@zfs+DNE:test_15 | seen in 3 other reviews |
| ost-pools@zfs+DNE:test_16 | seen in 3 other reviews |
| ost-pools@zfs+DNE:test_20 | seen in 3 other reviews |
| ost-pools@zfs+DNE:test_21 | seen in 3 other reviews |
| sanityn@zfs:test_39d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 8.10 / x86_64 | ran 7 tests. 2 tests failed: lnet-selftest, sanity. | session |
| review-ldiskfs-dne | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
build #117881 SUCCESS · tests all Maloo sessions
reviews:
Alexey Lyashkov +1 · Timothy Day +1
no vote yet: Chris Horn
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS1 uploaded 377d ago · NEW · backport · open in Gerrit ↗
commit message
LU-16011 lnet: remove LBUG() in srpc_client_rpc_expired()
We shouldn't crash just because an RPC expired.
Lustre-change: https://review.whamcloud.com/55785
Lustre-commit: edc9b7f5204a7a3979a8e69c075f55fdaab6ad4f
Fixes: e5026380 ("LU-16011 lnet: use preallocate bulk for server")
Test-Parameters: trivial
Test-Parameters: testgroup=review-ldiskfs-arm testlist=sanity-lnet,lnet-selftest
Signed-off-by: Timothy Day <timday@amazon.com>
Change-Id: Ia4e9bf7f688b2920c91444f57f7a7da2b1f89a67
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Chris Horn <chris.horn@hpe.com>
Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
21299
master
J –B ✓T ✗0R +2/2
LU-8395 lnet: Limit total number of lnet-selftest threads
reviewing Doug Oucharek · blocked on the owner: enforced tests failed
stalled 196d
S +11 −1
196d
LU-8395 lnet: Limit total number of lnet-selftest threads
reviewing Doug Oucharek · blocked on the owner: enforced tests failed
stalled 196d
S +11 −1
196d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
reviews:
Dmitry Eremin +1 · Andreas Dilger +1
no vote yet: Patrick Farrell, Amir Shehata
owner Doug Oucharek · uploader Doug Oucharek · PS1 uploaded 3765d ago · NEW · open in Gerrit ↗
commit message
LU-8395 lnet: Limit total number of lnet-selftest threads On densely cored systems, lnet-selftest can create too many scheduler threads. This patch limits the total thread count to 64 regardless of CPU parititioning. Signed-off-by: Doug Oucharek <doug.s.oucharek@intel.com> Change-Id: I4012a321fcfc607bf17ffaad50e17268a1acc56f
45963
master
J !B ✓T ✗1R +0/2−
LU-15069 llite: Clean up bit shift for assert
reviewing Patrick Farrell · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
stalled 199d
S +6 −7
199d
LU-15069 llite: Clean up bit shift for assert
reviewing Patrick Farrell · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
stalled 199d
S +6 −7
199d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
awaiting review (CI not green yet)
janitor run: 4 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-4 | CentOS 8.3/x86_64 | ran 9 tests. 1 tests failed: sanity-quota. | session |
build #85372 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
patchsets:
PS1 01-04
PS2 01-04
owner Patrick Farrell · uploader Patrick Farrell · PS2 uploaded 1764d ago · NEW · open in Gerrit ↗
commit message
LU-15069 llite: Clean up bit shift for assert There is a bizarre comment which says we're not converting pages to bytes yet to save cost in checking an assert, but we do that conversion immediately after the assert *and* it requires doing a similar shift in the assert. This is quite strange - clean it up. Signed-off-by: Patrick Farrell <pfarrell@whamcloud.com> Change-Id: Id2bb4e6910276537d807828a9a33439dea054c3b
21296
master
J –B ✓T ✓R -1/2−
LU-8330 wiretest: Add IOCTL checking to wiretest
reviewing Nathaniel Clark · awaiting review (CI not green yet)
stalled 211d
XL +765 −322
211d
LU-8330 wiretest: Add IOCTL checking to wiretest
reviewing Nathaniel Clark · awaiting review (CI not green yet)
stalled 211d
XL +765 −322
211d
1 optional test failure(s) — informational
build #4272 SUCCESS
reviews:
Andreas Dilger -1
no vote yet: Arshad Hussain
owner Nathaniel Clark · uploader Nathaniel Clark · PS17 uploaded 2778d ago · NEW · open in Gerrit ↗
commit message
LU-8330 wiretest: Add IOCTL checking to wiretest Add IOCTL checking (to ensure they don't change) to wiretest, but don't add to ptlrpc ASSERTS. Doing this, showed that the OBD_IOC_GET_MNTOPT doesn't work in user-space as mntopt_t isn't defined in user-space and throws an error if the appropriate header is included. This type is an enum, so should be the same as a long. Change-Id: I6edf4c8bdd501a62cc7214ad14d3bb92822ffb99 Signed-off-by: Nathaniel Clark <nclark@whamcloud.com>
59272
master
J !B ✓T ✗2R -1/2−
LU-19025 ldlm: ldlm_completion_ast() may never timeout
reviewing Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
stalled 250d
4 unresolved
M +50 −27
250d
LU-19025 ldlm: ldlm_completion_ast() may never timeout
reviewing Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
stalled 250d
4 unresolved
M +50 −27
250d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
awaiting review (CI not green yet)
janitor run: 1 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: recovery-small. | session |
| review-ldiskfs-ubuntu failed 2× | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
1 optional test failure(s) — informational
build #113812 SUCCESS · tests all Maloo sessions
no vote yet: Qian Yingjin, Shaun Tancheff, Vandana Rungta, Neil Brown, Oleg Drokin
patchsets:
PS2 05-28
PS3 05-28 Janitor Bot
PS4 05-28
PS5 05-28
PS6 05-28
+1 earlier
PS1 05-16threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Timothy Day ldlm_request.c:308 — Yeah, just to match. There was actually a l_wait_event_abortable_timeout() at one point. Probably should revive that?
Oleg Drokin
hm, I thought this was a partial revert of the prior patch, but it's not. So why are you opencoding l_wait_event_abortable here? just to better match the timeout case?
Timothy Day
Yeah, just to match. There was actually a l_wait_event_abortable_timeout() at one point. Probably should revive that?
reply Oleg Drokin ldlm_request.c:314 — or a timeout occurs?
Oleg Drokin
or a timeout occurs?
reply Timothy Day ldlm_request.c:323 — Double checking this:
Timothy Day
Double checking this: * Returns: * 0 if the @condition evaluated to %false after the @timeout elapsed, * 1 if the @condition evaluated to %true after the @timeout elapsed, * the remaining jiffies (at least 1) if the @condition evaluated * to %true before the @timeout elapsed, or -%ERESTARTSYS if it was * interrupted by a signal. So almost right, just need to handle the return codes better. We should probably double check the other wait_events.
reply Timothy Day ldlm_request.c:323 — The deadlock was observed on a production host - 6 or so threads stuck in ldlm_completion_ast() for > 1200 seconds. MDS was not responsive.
Oleg Drokin
looking at it some more, I think you misunderstood what's going on here. The ldlm_expired_completion_wait() is going to either cancel the lock by invalidating the import on a client or for a server do the whole "waiting indefinitely" because if we are waiting on another server thread, we cannot really just stop waiting on another server lock. In here you make it always obey the timeout which breaks the infinite wait on server locks logic I think?
Timothy Day
If you look at the original code before https://review.whamcloud.com/c/fs/lustre-release/+/35985, we were doing a single l_wait_event() which would timeout. There was no infinite wait at all unless NO_TIMEOUT was set. You can see the original macros in https://review.whamcloud.com/c/fs/lustre-release/+/37729. In fact, we never did a second wait at all. If the lock wasn't granted or cancelled after timeout, we gave up.
Oleg Drokin
Well, it's kinda convoluted I guess. ldlm_expired_completion_wait() prints "lock timed out (enqueued at %lld, %llds ago); not entering recovery in server code, just going back to sleep" though it of course does nto ever go back to sleep? Neil replaced a single populate lwi (that's based on timeout / no timeout) with two and the second one is sorta infinite where previously it was not. But the end result is probably the same - the thread that waits for the lock sleeps indefinitely anyway until the lock is granted if the conflicting lock is a server lock and if it's not (and esp. on the client) the ldlm_expired_completion_wait() makes sure the lock is cancelled sooner rather than later anyway?
Timothy Day
The new code can deadlock, but the old code didn't seem to have this issue. https://review.whamcloud.com/c/fs/lustre-release/+/55550 is trying to fix a similar problem, although I think we ought to restore the old behavior - instead of the approach in that patch.
Oleg Drokin
what's the deadlock scenario you have in mind? The code is supposed to deadlock even in the old original approach for a lock that's helf by another server thread Looking at 55550 I guess this seeems somewhat related, but the information provided is very little.
Timothy Day
The deadlock was observed on a production host - 6 or so threads stuck in ldlm_completion_ast() for > 1200 seconds. MDS was not responsive. None of the locks set LDLM_FL_NO_TIMEOUT, so I looked at the code and noticed that a indefinite sleep was introduced in a previous patch. > The code is supposed to deadlock even in the old original approach for a lock that's helf by another server thread From my reading, absent LDLM_FL_NO_TIMEOUT, the original code wouldn't be stuck in ldlm_completion_ast() indefinitely?
owner Timothy Day · uploader Timothy Day · PS6 uploaded 524d ago · NEW · open in Gerrit ↗
commit message
LU-19025 ldlm: ldlm_completion_ast() may never timeout
ldlm_completion_ast() may never timeout, even without NO_TIMEOUT.
One of the waits in this function has no timeout. So we might:
wait_event_idle_timeout()
-> ldlm_expired_completion_wait()
-> l_wait_event_abortable()
This will not continue until the lock is granted/canceled, or until
an allowlisted signal is sent. On the server, this could hang forever.
A previous version of Lustre had timeouts on both waits.
Fix this by using wait_event_interruptible_timeout() instead.
Also, enhance the signal blocking code to mirror the style in the
upstream kernel (Ceph, in this case).
Fixes: 366959b8cba5 ("LU-10467 ldlm: convert waiting in ldlm_completion_ast()")
Signed-off-by: Timothy Day <timday@amazon.com>
Change-Id: I58e4849efeb1e1bde24e77a5c66f0b0a654fd76e
58175
master
J ✗4B ✓T ✗4R -2/2−
LU-18741 lnet: Alternative Names Policy interface names
reviewing Frank Sehr · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; janitor: test failures unique to this patch; enforced tests failed
needs rebase
4 unique failures
stalled 337d
L +428 −36
337d
LU-18741 lnet: Alternative Names Policy interface names
reviewing Frank Sehr · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; janitor: test failures unique to this patch; enforced tests failed
needs rebase
4 unique failures
stalled 337d
L +428 −36
337d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-lnet@ldiskfs+DNE:test_150 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-lnet@ldiskfs+DNE:test_510 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-lnet@zfs:test_150 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-lnet@zfs:test_510 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-subtest-change | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-zfs-subtest-change | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-dne | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-dne | RHEL 9.5 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
build #116457 SUCCESS · tests all Maloo sessions
patchsets:
PS3 09-11
PS4 09-11
PS5 09-11
PS6 09-11
PS7 09-11
+2 earlier
PS1 02-23 PS2 02-24owner Frank Sehr · uploader Frank Sehr · PS7 uploaded 418d ago · NEW · open in Gerrit ↗
commit message
LU-18741 lnet: Alternative Names Policy interface names lnetctl doesn't recognize alternative names. Added netlink interface to be able to read alternative name. The priority is interface name, link name the possible alternative names. Alternative names are available since Rocky 8.5. Test-Parameters: trivial Signed-off-by: Frank Sehr <fsehr@whamcloud.com> Change-Id: I701aacd57f0b3d2cccf46830665ab25df6d73229
60498
master
J ✓B ✓T ✗12R -1/2−
LU-19223 shrinkers: Add nr_scanned to all shrinkers
reviewing Patrick Farrell · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
stalled 371d
M +36 −15
371d
LU-19223 shrinkers: Add nr_scanned to all shrinkers
reviewing Patrick Farrell · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
stalled 371d
M +36 −15
371d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
awaiting review (CI not green yet)
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-part-1 | RHEL 9.5 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-part-2 | RHEL 8.10 / x86_64 | ran 13 tests. 1 tests failed: sanity-sec. | session |
| review-dne-part-2 | RHEL 9.5 / x86_64 | ran 13 tests. 1 tests failed: sanity-sec. | session |
| review-dne-part-5 | RHEL 8.10 / x86_64 | ran 7 tests. 2 tests failed: recovery-small, lustre-rsync-test. | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 7 tests. 1 tests failed: sanity-sec. | session |
| review-dne-zfs-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-5 | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: recovery-small. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, SLES 15.5 / x86_64 | ran 7 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 9.5 / x86_64 | ran 7 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 8 tests. 1 tests failed: sanity. | session |
4 optional test failure(s) — informational
build #115489 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Neil Brown, Timothy Day
patchsets:
PS1 08-02
PS2 08-03
owner Patrick Farrell · uploader Patrick Farrell · PS2 uploaded 457d ago · NEW · open in Gerrit ↗
commit message
LU-19223 shrinkers: Add nr_scanned to all shrinkers If the Lustre shrinkers can't free any pages but don't set nr_scanned, they may be called forever by the kernel - see do_shrink_slab() in the kernel. Add nr_scanned support to the remaining Lustre shrinkers: - LDLM pools server and client shrinkers - Lu site shrinker - Page pools shrinkers Signed-off-by: Patrick Farrell <pfarrell@whamcloud.com> Change-Id: Ica35a0dabe1dce78fd3cd29174ef142a965be824
61989
b2_15
J ✗4B ✓T ✗1R +1/2
LU-16157 lnet: lst read-outside of allocation
reviewing Etienne AUJAMES · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
4 unique failures
stalled 375d
S +32 −10
375d
LU-16157 lnet: lst read-outside of allocation
reviewing Etienne AUJAMES · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
4 unique failures
stalled 375d
S +32 −10
375d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity4@zfs:test_122b | seen in 3 other reviews |
| recovery-small@zfs+DNE:test_10d | seen in 2 other reviews |
| recovery-small@zfs+DNE:test_18a | seen in 1 other review |
| recovery-small@zfs+DNE:test_18b | seen in 2 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-dne | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
build #117883 SUCCESS · tests all Maloo sessions
reviews:
Alexey Lyashkov +1
no vote yet: Andreas Dilger
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS1 uploaded 377d ago · NEW · open in Gerrit ↗
commit message
LU-16157 lnet: lst read-outside of allocation lnet_selftest want a some parameters from userspace, but it never sends. It caused a read of outside of allocation like BUG: KASAN: slab-out-of-bounds in lstcon_testrpc_prep+0x19e7/0x1bb0 Read of size 4 at addr ffff8888bbaa866c by task lt-lst/6371 lustre-change: https://review.whamcloud.com/48547 lustre-commit: 222fbed52e02122c752fcb7fca153e9d8fe487bf Test-Parameters: trivial testlist=lnet-selftest Signed-off-by: Alexey Lyashkov <alexey.lyashkov@hpe.com> Change-Id: I2a98e60c4be65c49fa9da4b418e50f1c7309b69d Reviewed-by: Andreas Dilger <adilger@whamcloud.com> Reviewed-by: James Simmons <jsimmons@infradead.org> Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
8977
master
J –B ✓T ✗10R 0/2
LU-3496 oss: rename OST_* RPC opcodes to OSS_*
reviewing Andreas Dilger · blocked on the owner: enforced tests failed
stalled 399d
XL +861 −923
399d
LU-3496 oss: rename OST_* RPC opcodes to OSS_*
reviewing Andreas Dilger · blocked on the owner: enforced tests failed
stalled 399d
XL +861 −923
399d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 crashed | RHEL 7.6/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-2 | RHEL 7.6/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. | session |
| review-dne-part-3 crashed | RHEL 7.6/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-4 crashed | RHEL 7.6/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-1 crashed | RHEL 7.6/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-2 crashed | RHEL 7.6/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-3 crashed | RHEL 7.6/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-4 crashed | RHEL 7.6/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs crashed | RHEL 7.6/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
| review-zfs crashed | RHEL 7.6/x86_64 | ran 2 tests. 1 tests failed: lustre-initialization. %% THIS TEST SESSION CRASHED %% | session |
1 optional test failure(s) — informational
build #4041 SUCCESS
owner Andreas Dilger · uploader Andreas Dilger · PS9 uploaded 2788d ago · NEW · open in Gerrit ↗
commit message
LU-3496 oss: rename OST_* RPC opcodes to OSS_* For consistency with MDS_* RPC opcodes, and the thought that the RPC opcodes relate to the remote OSS node more than the target, rename the OST_* constants to their OSS_* equivalents, along with RQF_OST_* and OBD_FAIL_OST_* definitions. Fix up other RPC opcode declarations to avoid typedefs. Signed-off-by: Andreas Dilger <adilger@whamcloud.com> Change-Id: I83e98e2778276de91856c5b944396f27773ebbe5
55468
master
J ✗5B ✓T ✗2R 0/2
LU-17022 obdclass: cleanup obd_device refcounting
reviewing Timothy Day · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
5 unique failures
stalled 413d
M +94 −141
413d
LU-17022 obdclass: cleanup obd_device refcounting
reviewing Timothy Day · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
5 unique failures
stalled 413d
M +94 −141
413d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity3@ldiskfs+DNE:test_122a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity3@ldiskfs+DNE:test_123F | seen in 1 other review |
| conf-sanity3@ldiskfs+DNE:test_123G | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity3@ldiskfs+DNE:test_135 | seen in 1 other review |
| conf-sanity3@ldiskfs+DNE:test_153a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-3 | RHEL 9.3/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-5 | RHEL 9.3/x86_64 | ran 6 tests. 1 tests failed: sanityn. | session |
1 optional test failure(s) — informational
build #105595 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Neil Brown, Alex Zhuravlev
patchsets:
PS1 06-19
PS2 06-19
PS3 06-20
PS4 06-20
owner Timothy Day · uploader Timothy Day · PS4 uploaded 867d ago · NEW · open in Gerrit ↗
commit message
LU-17022 obdclass: cleanup obd_device refcounting With the removal of lu_ref, class_incref()/decref() are now only thin wrappers around kref. So remove them. Replace all of the various obd_device freeing functions with a single obd_device_free() function. Cleanup some of the kref usage so that obd_device_free() can be call when the last reference is dropped. This is more in line with other usages of kref. Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: I165798ef973bad7c37d3af814af0b635a08a1082
53313
master
J !B ✓T ✗5R -1/2−
LU-1158 general: support nanosecond timestamps
reviewing Feng Lei · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
stalled 449d
12 unresolved
XL +1749 −1110
449d
LU-1158 general: support nanosecond timestamps
reviewing Feng Lei · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
stalled 449d
12 unresolved
XL +1749 −1110
449d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
awaiting review (CI not green yet)
janitor run: 2 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| custom-1002 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| custom-1004 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: pjdfstest. | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
build #115287 SUCCESS · tests all Maloo sessions
no vote yet: Sohei Koyama, Andreas Dilger, Lai Siyao, Neil Brown
patchsets:
PS57 02-15
PS58 07-25 Sohei Koyama
PS59 07-25 Sohei Koyama
PS60 07-25 Sohei Koyama
PS61 07-25 Sohei Koyama
+56 earlier
PS1 12-04 PS2 12-04 PS3 12-04 PS4 12-04 PS5 12-05 PS6 12-06 PS7 12-11 PS8 12-11 PS9 12-11 PS10 12-11 PS11 12-11 PS12 07-23 PS13 07-23 PS14 07-23 PS15 07-24 PS16 07-25 PS17 07-25 PS18 07-26 PS19 07-26 PS20 07-26 PS21 07-26 PS22 07-31 PS23 07-31 PS24 07-31 PS25 07-31 PS26 07-31 PS27 07-31 PS28 07-31 PS29 07-31 PS30 07-31 PS31 07-31 PS32 08-01 PS33 08-05 PS34 08-05 PS35 08-05 PS36 08-05 PS37 08-05 PS38 08-06 PS39 08-06 PS40 08-06 PS41 08-08 PS42 08-10 Andreas Dilger PS43 08-10 PS44 08-10 PS45 08-26 PS46 11-16 PS47 11-16 PS48 11-17 PS49 01-17 Andreas Dilger PS50 02-10 PS51 02-10 PS52 02-10 PS53 02-11 PS54 02-13 PS55 02-14 Sohei Koyama PS56 02-14 Sohei Koyamathreads: 11 need your reply · 1 waiting on others · 0 own notes · 0 bot
reply Feng Lei COMMIT_MSG:36 — I was didn't find that this has been added. :)
Feng Lei
I was didn't find that this has been added. :)
reply Feng Lei cl_object.h:152 — xxx_time is epoch seconds. xxx_time_ns is epoch nanoseconds. xxx_time_nsec is nanosecond part of timeval.
Lai Siyao
IMHO all the time fields don't need to be renamed, so that the patch size can be much smaller.
Feng Lei
xxx_time is epoch seconds. xxx_time_ns is epoch nanoseconds. xxx_time_nsec is nanosecond part of timeval. On the other hand, renaming var names causes compiling error and helps to find any potential mis-using.
reply Feng Lei lustre_idl.h:1527 — Done
Andreas Dilger
(minor) It is a bit confusing that all of these fields have been named "ns" when they may hold seconds when communicating with older peers. It would be useful to add a comment like:
__s64 lvb_mtime_ns; /* seconds before 2.16.0 */
for all of these fields.
Feng Lei
Done
reply Feng Lei lustre_idl.h:1513 — This struct should not be changed.
Feng Lei
This struct should not be changed.
reply Feng Lei lustre_idl.h:1524 — Add padding fields to keep the size of struct unchanged.
Feng Lei
Add padding fields to keep the size of struct unchanged.
reply Feng Lei lustre_idl.h:1935 — You should place some padding fields after this field to keep the size of mdt_body unchanged.
Feng Lei
You should place some padding fields after this field to keep the size of mdt_body unchanged.
reply Feng Lei lustre_idl.h:1527 — Remove this field to keep the size of ost_lvb?
Feng Lei
Remove this field to keep the size of ost_lvb?
reply Lai Siyao dir.c:1957 — I don't see place this is called.
Lai Siyao
I don't see place this is called.
reply Feng Lei dir.c:2371 — Should align with tab.
Feng Lei
Should align with tab.
reply Feng Lei dir.c:2397 — This line is too long.
Feng Lei
This line is too long.
reply Feng Lei sanity.sh:183 — This makes sense because: 1) bash recgonizes "000000008" as invalid oct number; 2) touch xxx.000000008 is not touch xxx.8.
Feng Lei
This makes sense because: 1) bash recgonizes "000000008" as invalid oct number; 2) touch xxx.000000008 is not touch xxx.8. It is safer to keep nanosecond a 9-digits string and compare them with [[ ]].
owner Feng Lei · uploader Sohei Koyama · PS61 uploaded 467d ago · NEW · open in Gerrit ↗
commit message
LU-1158 general: support nanosecond timestamps Change most s64 timestamps in memory from epoch seconds to epoch nanoseconds. Change the variable names from xxx_(a/m/c)time to xxx_(a/m/c)time_ns to indicate this change. struct ost_lvb, mdt_body and obdo are special. They support nanosecond timestamps by adding additional xxx_a/m/ctime_nsec fields. These time_nsec fields are only the nanosecond part of timestamps. Original xxx_a/m/ctime is kept as the epoch seconds. They are treated differently because they don't have regular pack/unpack functions, or sometime they are dereferenced from message body directly without packing/unpacking. Also rename obdo.o_ioepoch to o_padding_3 because this field was unused since commit v2_7_50_0-38-gd5d5b349f23e and was never used in production. To cooperate with client/server without this change, OBD_CONNECT_NANOSEC_TIME connection flag is enabled. Only if both client and server support the flag, the connection has this flag. When a time_ns field is packed to connection without OBD_CONNECT_NANOSEC_TIME flag, time_ns should be converted from nanosecond to second so that peer client/server can recieve epoch seconds as before. Opposite coverting happens during unpacking timestamps from connection without OBD_CONNECT_NANOSEC_TIME flag. Now the a/m/c timestamps of lustre file/dir should have non-zero nsec fields. Change sanity.sh/test_39 series test cases to check nsec field in timestamps. Remove utimensat_08 from pjdfstest ALWAYS_EXCEPT list for new clients and servers. Old client without nanosecond timestamps supporting should be able to work with this version of server reporting only seconds. Old server without nanosecond timestamps supporting should be able to work with this version of client reporting only seconds. Signed-off-by: Lei Feng <flei@whamcloud.com> Test-Parameters: testlist=sanity serverbuildno=4607 serverjob=lustre-master Test-Parameters: testlist=sanity clientbuildno=4607 clientjob=lustre-master Test-Parameters: testlist=pjdfstest Test-Parameters: testlist=pjdfstest serverbuildno=4607 serverjob=lustre-master Test-Parameters: testlist=pjdfstest clientbuildno=4607 clientjob=lustre-master Change-Id: I231ef0315a47f4587f917e197c36e3e321c8a58a
56118
master
J !B ✓T ✗15R 0/2
LU-18162 lu: convert to lu_device to use kref
reviewing Timothy Day · blocked on the owner: enforced tests failed
stalled 456d
1 unresolved
M +151 −76
456d
LU-18162 lu: convert to lu_device to use kref
reviewing Timothy Day · blocked on the owner: enforced tests failed
stalled 456d
1 unresolved
M +151 −76
456d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
janitor run: 10 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 crashed | RHEL 9.3/x86_64 | ran 9 tests. 2 tests failed: replay-dual, mds-survey. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-3 crashed | RHEL 9.3/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-4 crashed | RHEL 9.3/x86_64 | ran 11 tests. 1 tests failed: mmp. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-5 | RHEL 9.3/x86_64 | ran 6 tests. 1 tests failed: sanityn. | session |
| review-dne-part-6 crashed | RHEL 9.3/x86_64 | ran 6 tests. 1 tests failed: replay-single. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-8 | RHEL 9.3/x86_64 | ran 4 tests. 1 tests failed: replay-dual. | session |
| review-dne-zfs-part-2 crashed | RHEL 8.9/x86_64 | ran 9 tests. 1 tests failed: mds-survey. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-3 crashed | RHEL 8.9/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-5 crashed | RHEL 8.9/x86_64 | ran 6 tests. 1 tests failed: sanityn. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-6 crashed | RHEL 8.9/x86_64 | ran 6 tests. 1 tests failed: replay-single. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs crashed | RHEL 8.9/x86_64 | ran 7 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs crashed | RHEL 9.3/x86_64 | ran 7 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs crashed | RHEL 8.9/x86_64, RHEL 9.3/x86_64 | ran 7 tests. 2 tests failed: sanity-lnet, sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs crashed | RHEL 8.9/x86_64, SLES 15.5/x86_64 | ran 7 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-zfs crashed | RHEL 8.9/x86_64 | ran 10 tests. 1 tests failed: replay-single. %% THIS TEST SESSION CRASHED %% | session |
17 optional test failure(s) — informational
build #107041 SUCCESS · tests all Maloo sessions
no vote yet: Arshad Hussain, Andreas Dilger
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Timothy Day lu_object.h:412 — I went with kref to get the automatic free when the last reference is dropped. This patch is mostly intended to support the OSD cleanups in
Arshad Hussain
(defect?)I tried passing env after obtaining it with lu_env_find() and it did not work for me. I am not sure if this is correct?
Timothy Day
I think it's context dependent - although I'm not super familiar with how these lu_env are working. Based on the message below, it crashing in one scenario at least.
Arshad Hussain
Instead of kref - we can still convert to refcount_t (only for places that require env context). It is still a win-win, and a direct conversion. Thoughts?
Timothy Day
I went with kref to get the automatic free when the last reference is dropped. This patch is mostly intended to support the OSD cleanups in https://review.whamcloud.com/c/fs/lustre-release/+/55705/4. I'll have to dive into why this is crashing. Hopefully nothing major.
owner Timothy Day · uploader Timothy Day · PS1 uploaded 804d ago · NEW · open in Gerrit ↗
commit message
LU-18162 lu: convert to lu_device to use kref
Convert lu_device to use kref for ld_ref. Several subsystems
don't take proper references on the lu_device - so add
lu_device_get() and lu_device_put() calls where needed.
Add wrappers for ldto_device_{alloc,init,fini,free}(). This
enables us to grab references between init/fini and make
assertions about callers.
Move lu_device_get() and lu_device_put() to the lu_device.h
header. These functions are stubs and ought to be inline
rather than complete EXPORT'ed functions.
Implement ldto_device_next() to enable the different layers of
Lustre to navigate the lu_site without the benefit of calling
ldto_device_free() directly.
Update lu_site_print() to accept an `int` rather than an
`atomic_t`. This is a requirement for the kref conversion.
Signed-off-by: Timothy Day <timday@amazon.com>
Change-Id: I0a29af160c1a5c681d8a3887f2574246afe76248
57676
master
J !B ✓T ✗2R +0/2−
LU-18615 mdt: setup protocal for super hide
reviewing Zanhua Huang · blocked on the owner: enforced tests failed
stalled 456d
1 unresolved
S +20 −2
456d
LU-18615 mdt: setup protocal for super hide
reviewing Zanhua Huang · blocked on the owner: enforced tests failed
stalled 456d
1 unresolved
S +20 −2
456d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
janitor run: 1 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 9.4 / x86_64 | ran 4 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 1 tests failed: sanity-sec. | session |
1 optional test failure(s) — informational
build #110251 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger -1 · Timothy Day +1
no vote yet: Patrick Farrell
patchsets:
PS1 01-07
PS2 01-07
PS3 01-13
PS4 01-13
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger layout.c:735 — I don't think we should have a dedicated RPC just to set this one bit.
Timothy Day
Perhaps we could use an already existing request format? Curious if anyone else has thoughts.
Andreas Dilger
I don't think we should have a dedicated RPC just to set this one bit.
owner Zanhua Huang · uploader Zanhua Huang · PS4 uploaded 659d ago · NEW · open in Gerrit ↗
commit message
LU-18615 mdt: setup protocal for super hide This is the first patch to implement "lfs hide [path]". With this cmd, [path] will be hidden from directory listing "ls -a". Similar to .lustre. We mark a file/directory as hidden by setting a one-bit flag in the lma_compact of trusted.lma. Here in this patch, we reset this bit as LMAC_HIDDEN = 0x00000080 in enum lma_compat. The "lfs hide [path]" cmd will be run from a lustre client. Therefore, this patch also reserves the new ptlrpc req_format to be sent between clients and MDSs. 1. We reserve "MDS_HIDE = 65" in "enum mds_cmd" 2. We "#define OBD_FAIL_MDS_HIDE_NET 0x2410" We also provide the new req_format "RQF_MDS_HIDE" in this patch. Signed-off-by: Zanhua Huang <zanhua@amazon.com> Change-Id: I797ae49d74c95fac7aa765ed83cda0c4603a7aa3
10039
master
J –B ✓T ✓R +0/2−
LU-4801 ldlm: Do not call ldlm_reprocess_all from enqueue
reviewing Oleg Drokin · awaiting review (CI not green yet)
stalled 456d
XS +1 −5
456d
LU-4801 ldlm: Do not call ldlm_reprocess_all from enqueue
reviewing Oleg Drokin · awaiting review (CI not green yet)
stalled 456d
XS +1 −5
456d
reviews:
Vitaly Fertman -1 · Alex Zhuravlev +1
no vote yet: Dmitry Eremin, Liang Zhen
owner Oleg Drokin · uploader Oleg Drokin · PS2 uploaded 4488d ago · NEW · open in Gerrit ↗
commit message
LU-4801 ldlm: Do not call ldlm_reprocess_all from enqueue ldlm_handle_enqueue0 seems to be always calling ldlm_reprocess_all for the lock resource hich iseems to be excessive and a waste of resources. Move the call to the cancel case for cancel on block locks. Change-Id: Ie380497866b83a81cb099777bb4c94936c6bd91a Signed-off-by: Oleg Drokin <oleg.drokin@intel.com>
14987
master
J –B ✓T ✗0R -2/2−
LU-6657 mgs: eviction notifier
reviewing Hiroya Nozaki · blocked on the owner: enforced tests failed
stalled 456d
L +459 −39
456d
LU-6657 mgs: eviction notifier
reviewing Hiroya Nozaki · blocked on the owner: enforced tests failed
stalled 456d
L +459 −39
456d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
reviews:
Christopher J. Morrone -1 · Andreas Dilger -1
no vote yet: Mikhail Pershin
owner Hiroya Nozaki · uploader Hiroya Nozaki · PS3 uploaded 4177d ago · NEW · open in Gerrit ↗
commit message
LU-6657 mgs: eviction notifier In suppress ping environment the evicted client is not able to recover from evicted state until an access goes to the server which has evicted the client. This patch provides a new feature for client to recover from evicted state in ping-less environment though it works well with pinger. Signed-off-by: Hiroya Nozaki <nozaki.hiroya@jp.fujitsu.com> Change-Id: I6475ce8dd1506d6e8f9e2405fab6a94ee25f9df1
18199
master
J –B ✓T ✗0R +0/2−
LU-7722 build: add --no-initramfs to weak-modules
reviewing Li Xi · blocked on the owner: enforced tests failed
stalled 456d
M +58 −13
456d
LU-7722 build: add --no-initramfs to weak-modules
reviewing Li Xi · blocked on the owner: enforced tests failed
stalled 456d
M +58 −13
456d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
reviews:
Christopher J. Morrone -1 · Dmitry Eremin +1
owner Li Xi · uploader Li Xi · PS1 uploaded 3932d ago · NEW · open in Gerrit ↗
commit message
LU-7722 build: add --no-initramfs to weak-modules In most of cases, Lustre modules are not necessary for initramfs. Thus, regenerating initramfs in scripts of RPMs is a waste of time. This patch adds --no-initramfs argument to weak-modules command in the scripts of RPMs by default. --enable-initramfs could be used to change this behavior when configuring. Signed-off-by: Li Xi <lixi@ddn.com> Change-Id: I3e490f9cacfd74619d774e44729cdbfc8c60db1c
20218
master
J –B ✓T ✗0R 0/2
LU-8145 libcfs: add dump debug trace on error support
reviewing Gu Zheng · blocked on the owner: enforced tests failed
stalled 456d
M +52 −0
456d
LU-8145 libcfs: add dump debug trace on error support
reviewing Gu Zheng · blocked on the owner: enforced tests failed
stalled 456d
M +52 −0
456d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
no vote yet: Oleg Drokin
owner Gu Zheng · uploader Gu Zheng · PS1 uploaded 3824d ago · NEW · open in Gerrit ↗
commit message
LU-8145 libcfs: add dump debug trace on error support As we can not monitoring the debug trace all the time, especially when the error will happen. So here we add dump trace on error support, that will trigger the trace dump thread if it is not started. Change-Id: I57b5a7d94512e21d98cc25b4c0392690d01bbd37 Signed-off-by: Gu Zheng <gzheng@ddn.com>
26205
master
J –B ✗T –R -1/2−
LU-8192 nodemap: modify lctl to allow non-contiguous nm ranges
reviewing Kit Westneat · blocked on the owner: build failure
stalled 456d
L +313 −263
456d
LU-8192 nodemap: modify lctl to allow non-contiguous nm ranges
reviewing Kit Westneat · blocked on the owner: build failure
stalled 456d
L +313 −263
456d
blocked on the owner: build failure
awaiting review (CI not green yet)
reviews:
Andreas Dilger -1
no vote yet: Sebastien Buisson
owner Kit Westneat · uploader Kit Westneat · PS1 uploaded 3508d ago · NEW · open in Gerrit ↗
commit message
LU-8192 nodemap: modify lctl to allow non-contiguous nm ranges This patch modifies the nodemap_add_range and nodemap_del_range lctl commands to accept the full LNET range syntax. Signed-off-by: Kit Westneat <kit.westneat@gmail.com> Change-Id: Iec7e9115f745be3ba623f640e183076bfd072ccc
28714
master
J –B ✓T ✗0R +1/2
LU-9914 lnet: gracefully handle peers with too many NIs
reviewing Olaf Weber · blocked on the owner: enforced tests failed
stalled 456d
M +93 −13
456d
LU-9914 lnet: gracefully handle peers with too many NIs
reviewing Olaf Weber · blocked on the owner: enforced tests failed
stalled 456d
M +93 −13
456d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
reviews:
Amir Shehata +1
no vote yet: Sonia Sharma
owner Olaf Weber · uploader Olaf Weber · PS2 uploaded 3221d ago · NEW · open in Gerrit ↗
commit message
LU-9914 lnet: gracefully handle peers with too many NIs The lnet_interfaces_max tunable governs the upper bound on the number of interfaces (NIs) this node thinks any node in the cluster can have (including itself). It is tunable to provide a "soft" upper bound as opposed to hard-coded one. When a peer with too many NIs shows up, peer discovery ends up stuck in a loop because the Push/Ping data it sends fails the validation check against the number of interfaces. This is undesirable behavior even though it implies that the node is misconfigured. To prevent peer discovery from getting stuck like this, make the following changes: - lnet_ping_info_validate() does not check against lnet_interfaces_max - its callers keep track of the number of NIs the peer claims to have in lp_data_nnis. - but lnet_peer_push_event() will drop a Push with too many NIs, and force a Ping - while lnet_discovery_event_reply() will also drop a Ping Reply with too many NIs, and set lp_ping_error to ensure discovery stops - and lnet_peer_is_uptodate() will signal that rediscovery (prompted by LNET_PEER_REDISCOVER) should skip a peer that has too many NIs. - lnet_discovery_event_reply() will emit an error message suggesting that lnet_interfaces_max should be increased. It remains up to the administrator to judge whether the suggested value is realistic or sign of a problem. - lnet_ping_target_setup() now has to explicitly check whether the node itself has more NIs than lnet_interfaces_max. This is still something you are not supposed to do. Signed-off-by: Olaf Weber <olaf.weber@hpe.com> Change-Id: I4e9ec42d320893ef8a85e84e75ccf54518f446fd
31390
master
J –B ✓T ✗4R 0/2
LU-10704 open: fetch LOOKUP lock for normal open
reviewing Li Dongyang · blocked on the owner: enforced tests failed
stalled 456d
L +163 −169
456d
LU-10704 open: fetch LOOKUP lock for normal open
reviewing Li Dongyang · blocked on the owner: enforced tests failed
stalled 456d
L +163 −169
456d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | CentOS 7.0/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-dne-part-3 | CentOS 7.0/x86_64 | ran 5 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-4 | CentOS 7.0/x86_64 | ran 10 tests. 1 tests failed: sanity-quota. | session |
| review-dne-zfs-part-1 | CentOS 7.0/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
2 optional test failure(s) — informational
build #3193 SUCCESS
no vote yet: Lai Siyao, Andreas Dilger, Mikhail Pershin
owner Li Dongyang · uploader Li Dongyang · PS5 uploaded 2833d ago · NEW · open in Gerrit ↗
commit message
LU-10704 open: fetch LOOKUP lock for normal open This is done on both sides: 1. MDT take LOOKUP on normal open. 2. client revalidate dentry for atomic_open(). Signed-off-by: Lai Siyao <lai.siyao@intel.com> Change-Id: Ia91697d15303cf6ce8723816ed5a0473a559e36a
33086
master
J –B ✓T ✗0R 0/2
LU-11286 osp: Add an entry to show statfs state from OST
reviewing Jinshan Xiong · blocked on the owner: enforced tests failed
stalled 456d
S +43 −1
456d
LU-11286 osp: Add an entry to show statfs state from OST
reviewing Jinshan Xiong · blocked on the owner: enforced tests failed
stalled 456d
S +43 −1
456d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
build #521 SUCCESS
no vote yet: Patrick Farrell, Andreas Dilger
owner Jinshan Xiong · uploader Jinshan Xiong · PS3 uploaded 2980d ago · NEW · open in Gerrit ↗
commit message
LU-11286 osp: Add an entry to show statfs state from OST Add a sys entry to dump the statfs results from OST; also fix a problem in 'lfs df' for statfs. Signed-off-by: Jinshan Xiong <jinshan.xiong@uber.com> Signed-off-by: Andreas Dilger <adilger@whamcloud.com> Change-Id: I4795e94be3876aea21ede8fa1a9f8dc1ffab13f3
33548
master
J –B ✓T ✓R 0/2
LU-8365 ldiskfs: fix wrong logic of stream allocation
reviewing Yang Sheng · awaiting review (CI not green yet)
stalled 456d
S +30 −13
456d
LU-8365 ldiskfs: fix wrong logic of stream allocation
reviewing Yang Sheng · awaiting review (CI not green yet)
stalled 456d
S +30 −13
456d
2 optional test failure(s) — informational
build #2145 SUCCESS
no vote yet: Alexander Zarochentsev, Andreas Dilger, Alex Zhuravlev, Li Dongyang
owner Yang Sheng · uploader Andreas Dilger · PS3 uploaded 2895d ago · NEW · open in Gerrit ↗
commit message
LU-8365 ldiskfs: fix wrong logic of stream allocation The stream allocation has been changed in upstream. But looks like some logic different than original. The stream allocation should just be used in group preallocation and we should update goal every time to keep stream allocation closer last position. Signed-off-by: Yang Sheng <ys@whamcloud.com> Change-Id: Id3e4b52cf05badd7027f841b6a1f887bed6fe8a7
33862
master
J ✗1B ✓T ✓R +2/2
LU-11775 osc: check imp_invalid without imp_lock
reviewing Li Dongyang · blocked on the owner: Verified -1 by Oleg Drokin
Verified -1
stalled 456d
XS +0 −2
456d
LU-11775 osc: check imp_invalid without imp_lock
reviewing Li Dongyang · blocked on the owner: Verified -1 by Oleg Drokin
Verified -1
stalled 456d
XS +0 −2
456d
blocked on the owner: Verified -1 by Oleg Drokin
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch — superseded (tests have since passed)
| unique failing test | history |
|---|---|
| conf-sanity-slow@zfs:test_69 | NEW unique failure for this branch in the last 30 days, but was seen 0 times across 0 other branches 0 reviews |
build #5675 SUCCESS
reviews:
Patrick Farrell +1 · Alexander Boyko +1
no vote yet: Zhenyu Xu, Andreas Dilger, Alex Zhuravlev, Oleg Drokin
owner Li Dongyang · uploader Alexander Boyko · PS3 uploaded 2710d ago · NEW · open in Gerrit ↗
commit message
LU-11775 osc: check imp_invalid without imp_lock We don't need to hold imp_lock while checking the imp_invalid flag. This avoids the contention on imp_lock in osc_io_ter_init(). Signed-off-by: Li Dongyang <dongyangli@ddn.com> Change-Id: Ic825ad09f6c8020058d0fa9a417281c1258156ce
34066
master
J ✗1B ✓T ✗10R 0/2
LU-11817 lnet: add timing statistics
reviewing Amir Shehata · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
1 unique failure
stalled 456d
L +351 −30
456d
LU-11817 lnet: add timing statistics
reviewing Amir Shehata · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
1 unique failure
stalled 456d
L +351 −30
456d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch
| unique failing test | history |
|---|---|
| sanity-quota@zfs+DNE:test_12b | seen in 11 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 crashed | CentOS 8.3/x86_64 | ran 12 tests. 3 tests failed: recovery-small, sanityn, sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-2 failed 2× crashed | CentOS 8.3/x86_64 | ran 16 tests. 2 tests failed: mds-survey, ost-pools. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-4 crashed | CentOS 8.3/x86_64 | ran 14 tests. 2 tests failed: sanity-pfl, replay-single. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-selinux crashed | CentOS 8.3/x86_64 | ran 7 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-selinux-ssk crashed | CentOS 8.3/x86_64 | ran 8 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-ssk | CentOS 8.3/x86_64 | ran 5 tests. 3 tests failed: sanity-sec, recovery-small, sanity. | session |
| review-dne-zfs-part-2 crashed | CentOS 8.3/x86_64 | ran 16 tests. 2 tests failed: sanity-pcc, mds-survey. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-4 crashed | CentOS 8.3/x86_64 | ran 10 tests. 1 tests failed: insanity. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs crashed | CentOS 8.3/x86_64 | ran 7 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs-ubuntu crashed | CentOS 8.3/x86_64, Ubuntu 20.04/x86_64 | ran 8 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
build #19160 SUCCESS
no vote yet: Cyril Bordage
owner Amir Shehata · uploader Cyril Bordage · PS6 uploaded 2085d ago · NEW · open in Gerrit ↗
commit message
LU-11817 lnet: add timing statistics Calculate the max and average time of 1. LNet Message sends: from the point a message is sent to the LND till the point the tx credits are returned 4. LND queue: from the point a tx is queued on an internal queue until the point it's posted for send. 2. LND tx: from the point a message is put on the wire till the point tx is completed 3. LND rx: from the point LND is notified that a message arrived to the point message rx processing is completed Timing statistics are disabled by default and can be enabled on demand. Signed-off-by: Amir Shehata <ashehata@whamcloud.com> Change-Id: I2f829858f99780a94640cdd9cc1a60de4bdaebce
35184
master
J !B ✓T ✗1R -1/2−
LU-12421 lfs: fix ladvise range
reviewing Patrick Farrell · blocked on the owner: enforced tests failed
stalled 456d
M +162 −24
456d
LU-12421 lfs: fix ladvise range
reviewing Patrick Farrell · blocked on the owner: enforced tests failed
stalled 456d
M +162 −24
456d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 | CentOS 7.0/x86_64 | ran 11 tests. 1 tests failed: sanity-pcc. | session |
build #6761 SUCCESS
reviews:
Li Xi -1
no vote yet: Qian Yingjin, Andreas Dilger
owner Patrick Farrell · uploader Patrick Farrell · PS6 uploaded 2671d ago · NEW · open in Gerrit ↗
commit message
LU-12421 lfs: fix ladvise range lfs ladvise mistakenly treats ranges like 0-1M as [0-1M], requesting action on 0,1045876, but this is actually 1M+1. We just need to subtract 1 from 'end' to reflect that ranges are [x,y), not [x,y]. This is easiest to test with lockahead, as incorrect ranges show up when requesting adjacent locks, such as 0-1M and 1M-2M. Add a general set of simple lfs ladvise lockahead tests. Signed-off-by: Patrick Farrell <pfarrell@whamcloud.com> Change-Id: Iad065316d166383356c2910d6604736b07029d8e
36229
master
J !B ✗T –R 0/2
LU-12782 llite: Convert attr lock to rwlock
reviewing Patrick Farrell · blocked on the owner: build failure
stalled 456d
L +146 −109
456d
LU-12782 llite: Convert attr lock to rwlock
reviewing Patrick Farrell · blocked on the owner: build failure
stalled 456d
L +146 −109
456d
blocked on the owner: build failure
awaiting review (CI not green yet)
janitor run: 1 failing config(s), none unique to this patch — janitor results
build #95693 FAILURE
no vote yet: Wang Shilong, Qian Yingjin, Andreas Dilger, Li Dongyang, Shilong Wang
patchsets:
PS5 06-18
PS6 06-18
PS7 06-18
owner Patrick Farrell · uploader Patrick Farrell · PS7 uploaded 1234d ago · NEW · open in Gerrit ↗
commit message
LU-12782 llite: Convert attr lock to rwlock Under some shared file workloads, the cl_object_attr_lock ends up 'hot'. Because it is a spinlock which is often used only for reading, it can easily be converted to an rwlock. This should show up in some shared file workloads, notably shared file reading. Signed-off-by: Patrick Farrell <pfarrell@whamcloud.com> Change-Id: I50d6f04f31eeea3ab5af58a1b6b56c1d4cfc7093
36492
master
J !B ✓T ✗4R -1/2−
LU-10968 hsm: encapsulate copyaction_private
reviewing Ben Evans · blocked on the owner: enforced tests failed
stalled 456d
L +531 −200
456d
LU-10968 hsm: encapsulate copyaction_private
reviewing Ben Evans · blocked on the owner: enforced tests failed
stalled 456d
L +531 −200
456d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | CentOS 7.0/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-1 | CentOS 7.0/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | CentOS 7.0/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-arm | CentOS 7.0/x86_64, CentOS 8.0/aarch64 | ran 5 tests. 1 tests failed: sanity. | session |
4 optional test failure(s) — informational
build #12512 SUCCESS
reviews:
Quentin Bouget -1
no vote yet: Qian Yingjin, Nikitas Angelinas, Aurelien Degremont, nathan r, Andreas Dilger
owner Ben Evans · uploader Ben Evans · PS24 uploaded 2436d ago · NEW · open in Gerrit ↗
commit message
LU-10968 hsm: encapsulate copyaction_private hsm_copyaction_private is allocated and populated by the llapi_hsm_action_begin call, which shouldn't be changed. In order to add more info to the structure, create a set of get/set methods, and use them. The first new method will be for archive_id. Signed-off-by: Ben Evans <bevans@cray.com> Test-Parameters: testlist=sanity-hsm Cray-bug-id: LUS-5990 Change-Id: I3e23a5093ed6d6b528e8d41d06f31479d531683b
36596
master
J ✗34B ✓T –R 0/2
LU-12916 osd: use writeback cache in ldiskfs
reviewing Alex Zhuravlev · blocked on the owner: janitor: test failures unique to this patch
34 unique failures
stalled 456d
L +463 −22
456d
LU-12916 osd: use writeback cache in ldiskfs
reviewing Alex Zhuravlev · blocked on the owner: janitor: test failures unique to this patch
34 unique failures
stalled 456d
L +463 −22
456d
blocked on the owner: janitor: test failures unique to this patch
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch
| unique failing test | history |
|---|---|
| conf-sanity2@ldiskfs+DNE:test_52 | NEW unique failure for this branch in the last 30 days, and was seen 5 times across 1 other branches 1 reviews |
| conf-sanity2@ldiskfs+DNE:test_53a | seen in 3 other reviews |
| conf-sanity2@ldiskfs+DNE:test_53b | seen in 3 other reviews |
| conf-sanity2@ldiskfs+DNE:test_54a | seen in 2 other reviews |
| conf-sanity2@ldiskfs+DNE:test_54b | seen in 3 other reviews |
| conf-sanity2@ldiskfs:test_52 | NEW unique failure for this branch in the last 30 days, and was seen 4 times across 1 other branches 1 reviews |
| conf-sanity2@ldiskfs:test_53a | seen in 3 other reviews |
| conf-sanity2@ldiskfs:test_53b | seen in 3 other reviews |
| conf-sanity2@ldiskfs:test_54a | seen in 2 other reviews |
| conf-sanity2@ldiskfs:test_54b | seen in 3 other reviews |
| sanity1@ldiskfs+DNE:test_56ab | NEW unique failure for this branch in the last 30 days, and was seen 7 times across 1 other branches 1 reviews |
| sanity1@ldiskfs:test_56ab | NEW unique failure for this branch in the last 30 days, and was seen 6 times across 1 other branches 1 reviews |
| sanity-lfsck@ldiskfs+DNE:test_16 | NEW unique failure for this branch in the last 30 days, and was seen 1 times across 1 other branches 1 reviews |
| sanity-lfsck@ldiskfs:test_16 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_3a | NEW unique failure for this branch in the last 30 days, and was seen 5 times across 1 other branches 1 reviews |
| sanity-quota@ldiskfs+DNE:test_3b | NEW unique failure for this branch in the last 30 days, and was seen 5 times across 1 other branches 1 reviews |
| sanity-quota@ldiskfs+DNE:test_3c | NEW unique failure for this branch in the last 30 days, and was seen 5 times across 1 other branches 1 reviews |
| sanity-quota@ldiskfs+DNE:test_5 | NEW unique failure for this branch in the last 30 days, and was seen 5 times across 1 other branches 1 reviews |
| sanity-quota@ldiskfs+DNE:test_6 | NEW unique failure for this branch in the last 30 days, and was seen 5 times across 1 other branches 1 reviews |
| sanity-quota@ldiskfs+DNE:test_7a | NEW unique failure for this branch in the last 30 days, and was seen 5 times across 1 other branches 1 reviews |
| sanity-quota@ldiskfs+DNE:test_7b | NEW unique failure for this branch in the last 30 days, and was seen 5 times across 1 other branches 1 reviews |
| sanity-quota@ldiskfs+DNE:test_7c | NEW unique failure for this branch in the last 30 days, and was seen 5 times across 1 other branches 1 reviews |
| sanity-quota@ldiskfs+DNE:test_12a | seen in 2 other reviews |
| sanity-quota@ldiskfs+DNE:test_17 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs:test_3a | NEW unique failure for this branch in the last 30 days, and was seen 4 times across 1 other branches 1 reviews |
| sanity-quota@ldiskfs:test_3b | NEW unique failure for this branch in the last 30 days, and was seen 4 times across 1 other branches 1 reviews |
| sanity-quota@ldiskfs:test_3c | NEW unique failure for this branch in the last 30 days, and was seen 4 times across 1 other branches 1 reviews |
| sanity-quota@ldiskfs:test_5 | NEW unique failure for this branch in the last 30 days, and was seen 4 times across 1 other branches 1 reviews |
| sanity-quota@ldiskfs:test_6 | NEW unique failure for this branch in the last 30 days, and was seen 4 times across 1 other branches 1 reviews |
| sanity-quota@ldiskfs:test_7a | NEW unique failure for this branch in the last 30 days, and was seen 4 times across 1 other branches 1 reviews |
| sanity-quota@ldiskfs:test_7b | NEW unique failure for this branch in the last 30 days, and was seen 4 times across 1 other branches 1 reviews |
| sanity-quota@ldiskfs:test_7c | NEW unique failure for this branch in the last 30 days, and was seen 4 times across 1 other branches 1 reviews |
| sanity-quota@ldiskfs:test_12a | seen in 2 other reviews |
| sanity-quota@ldiskfs:test_17 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
4 optional test failure(s) — informational
build #14539 SUCCESS
no vote yet: Wang Shilong, Qian Yingjin, Shuichi Ihara, Andreas Dilger
owner Alex Zhuravlev · uploader Alex Zhuravlev · PS29 uploaded 2355d ago · NEW · open in Gerrit ↗
commit message
LU-12916 osd: use writeback cache in ldiskfs this is a proto to play with the idea: the cache is used in all the cases, the writes aren't synchronous. all delayed writes are counted under "delayed_writes" in osd-ldiskfs.*.stats in pages TODO: 1) direct sync IO from private buffers 2) sync IO + wait from pageceche set PG_writeback, drop from IO completion wait in osd_trans_stop() 3) sync IO w/o wait from pagecache set PG_writeback, drop from IO completion 4) no IO, just copy into pagecache mark pages/buffers dirty define policy for 1-4 Test-Parameters: fortestonly testlist=sanity,sanityn,sanity-benchmark Test-Parameters: fortestonly testlist=sanity,sanityn,sanity-benchmark Test-Parameters: fortestonly testlist=sanity,sanityn,sanity-benchmark Test-Parameters: fortestonly testlist=sanity,sanityn,sanity-benchmark Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com> Change-Id: Iabe362aa9ab777b2cac8c6a244415b899cbf2744
36821
master
J ✗2B ✓T ✗1R +0/2−
LU-12991 lnet: remove rspt zombie list
reviewing Amir Shehata · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
2 unique failures
stalled 456d
M +65 −132
456d
LU-12991 lnet: remove rspt zombie list
reviewing Amir Shehata · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
2 unique failures
stalled 456d
M +65 −132
456d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch
| unique failing test | history |
|---|---|
| sanity-quota@zfs+DNE:test_12b | seen in 70 other reviews |
| sanityn@zfs+DNE:test_39d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-4 failed 2× | CentOS 7.0/x86_64 | ran 12 tests. 1 tests failed: replay-single. | session |
3 optional test failure(s) — informational
build #11239 SUCCESS
reviews:
Serguei Smirnov +1 · Neil Brown -1
no vote yet: Alexey Lyashkov, Alexander Boyko, Olaf Weber
owner Amir Shehata · uploader Amir Shehata · PS6 uploaded 2482d ago · NEW · open in Gerrit ↗
commit message
LU-12991 lnet: remove rspt zombie list Add a direct pointer to the MD in the rspt and increment the md_refcount to account for this use. When an MD is unlinked detach the rspt from the MD, that will cause the md_refcount to be decremented and the pointer from the rspt to the MD NULLed out. The next time the monitor thread runs it'll see that rspt with a NULL MD pointer and free it. When response times out the MD is detached from the rspt and the md_refcount decremented. If the MD is unlinkable, then it'll be freed by the call to lnet_md_unlink(). Otherwise we'll call lnet_md_finalize() which will send an unlink event callback. When a response is received and the MD is unlinkable, then the MD is detached from the rspt. This will result in an rspt with the md_pointer NULL, which will be freed the next time it's encountered by the monitor thread. Removing the rspt zombie list simplifies the management of the rspt blocks. Signed-off-by: Amir Shehata <ashehata@whamcloud.com> Change-Id: I9c9a3c8b23032307d1c3badaa8d3a51a4e98e137
37801
master
J ✗2B ✓T ✗2R 0/2
LU-13329 libcfs: catch improper failloc race cleanup
reviewing Oleg Drokin · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
2 unique failures
stalled 456d
S +9 −1
456d
LU-13329 libcfs: catch improper failloc race cleanup
reviewing Oleg Drokin · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
2 unique failures
stalled 456d
S +9 −1
456d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch
| unique failing test | history |
|---|---|
| sanity-sec@zfs:test_15 | seen in 7 other reviews |
| sanity-sec@zfs:test_18 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-zfs-part-1 | CentOS 7.0/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | CentOS 7.0/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
build #12539 SUCCESS
no vote yet: Neil Brown
owner Oleg Drokin · uploader Oleg Drokin · PS2 uploaded 2435d ago · NEW · open in Gerrit ↗
commit message
LU-13329 libcfs: catch improper failloc race cleanup If we are resetting a failloc race and there's a waiter, then it would not be woken up which is obviously not a state we want to be in. Change-Id: I97eccbacb6a04358e2cf2b42c28c402067bc20ca Signed-off-by: Oleg Drokin <green@whamcloud.com>
38812
master
J ✗1B ✓T ✗3R 0/2
LU-13625 socklnd: bind socket to correct IP addr
reviewing Amir Shehata · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
1 unique failure
stalled 456d
M +39 −38
456d
LU-13625 socklnd: bind socket to correct IP addr
reviewing Amir Shehata · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
1 unique failure
stalled 456d
M +39 −38
456d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch
| unique failing test | history |
|---|---|
| sanity-quota@zfs+DNE:test_12b | seen in 100 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-3 | CentOS 7.0/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-1 | CentOS 7.0/x86_64 | ran 8 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-4 | CentOS 7.0/x86_64 | ran 10 tests. 3 tests failed: sanity-quota, sanity-pfl, replay-single. | session |
1 optional test failure(s) — informational
build #14741 SUCCESS
no vote yet: Alexey Lyashkov, Serguei Smirnov, Aurelien Degremont, Chris Horn, Neil Brown
owner Amir Shehata · uploader Amir Shehata · PS1 uploaded 2345d ago · NEW · open in Gerrit ↗
commit message
LU-13625 socklnd: bind socket to correct IP addr choose_ipv4_src() can end up choosing the wrong IP address if the destination IP address is on the same subnet as one of the other IP's assigned to the device. This will force the passive side of the socket to look up that other IP address, create the wrong NID. All LNet messages to the active will then be dropped. The socklnd should honor the specifications provided by LNet. Signed-off-by: Amir Shehata <ashehata@whamcloud.com> Change-Id: Iad8246a737b923638d775f253934b5b70a795d60
40568
master
J !B ✗T –R 0/2
LU-10973 lnet: lustre log parser
reviewing Amir Shehata · blocked on the owner: build failure
stalled 456d
XL +1477 −7
456d
LU-10973 lnet: lustre log parser
reviewing Amir Shehata · blocked on the owner: build failure
stalled 456d
XL +1477 −7
456d
blocked on the owner: build failure
awaiting review (CI not green yet)
janitor run: 2 failing config(s), none unique to this patch — janitor results
build #84634 FAILURE
no vote yet: Cyril Bordage, Serguei Smirnov, Chris Horn
patchsets:
PS20 09-03
PS21 09-13
PS22 10-15
PS23 10-25
PS24 11-23 Serguei Smirnov
+4 earlier
PS16 08-23 PS17 08-23 PS18 08-23 PS19 08-27owner Amir Shehata · uploader Serguei Smirnov · PS24 uploaded 1806d ago · NEW · open in Gerrit ↗
commit message
LU-10973 lnet: lustre log parser Added a log parser utility. It parses dlm, rpctrace and net logs. It is able to generate a sequence diagram showing the communication between the client and the servers. It can also generate a YAML file containing all RPC sends and receives in the parsed log. This aids in debugging logs as well as enabling test scripts which verify specific behavior. Some of the LNet logging was modified to add information which the parser can use. Test-Parameters: trivial Signed-off-by: Amir Shehata <ashehata@whamcloud.com> Change-Id: I507cc0e7e63ccde79ea4be9b459a1898550713de
40736
master
J ✗2B ✓T ✗4R 0/2
LU-10360 mgs: Mount to dynamically added networks
reviewing Amir Shehata · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
2 unique failures
stalled 456d
L +614 −65
456d
LU-10360 mgs: Mount to dynamically added networks
reviewing Amir Shehata · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
2 unique failures
stalled 456d
L +614 −65
456d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| recovery-small@zfs:test_155 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity2@zfs:test_311 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-4 | RHEL 9.3 / x86_64 | ran 9 tests. 1 tests failed: sanity-flr. | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.9 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-1 | RHEL 8.9 / x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.9 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
4 optional test failure(s) — informational
build #109134 SUCCESS · tests all Maloo sessions
no vote yet: Frank Sehr, Neil Brown, Serguei Smirnov, Chris Horn, Andreas Dilger, Mikhail Pershin, Oleg Drokin
patchsets:
PS10 10-10 Serguei Smirnov
PS11 10-21 Serguei Smirnov
PS12 10-28 Serguei Smirnov
PS13 11-23 Mikhail Pershin
PS14 11-24 Mikhail Pershin
+6 earlier
PS4 09-15 James Simmons PS5 10-14 James Simmons PS6 10-26 James Simmons PS7 11-04 Serguei Smirnov PS8 10-02 James Simmons PS9 10-10 Serguei Smirnovowner Amir Shehata · uploader Mikhail Pershin · PS14 uploaded 710d ago · NEW · open in Gerrit ↗
commit message
LU-10360 mgs: Mount to dynamically added networks This feature adds the ability for clients to mount servers on networks or NIDs which has been dynamically added post server bring up. As an example, servers can initially be configured with a tcp network. Then a new network can be added after the servers are mounted using lnetctl: lnetctl net add --net tcp441 --if eth1 A new client which has not mounted the file system yet and only exists on the tcp441 network, can then successfully mount the file system on tcp441 network. This is accomplished as follows: The MGS registers with LNet for updates whenever a newly added network or NID are dynamically added to LNet or when through discovery LNet finds out about an update to a peer's NID list. The notification causes the MGS to update its Imperative Recovery log with the new NIDs. After updating the IR log, a notification is sent to the clients currently mounting the FS. When new clients connect to the MGS, the IR log is sent to the client. The client then uses that IR log to create connections instead of relying only on the llog, which would be out of date at this point. NOTE: This feature relies on LNet dynamic discovery feature. Test-Parameters: fortestonly Signed-off-by: Amir Shehata <ashehata@whamcloud.com> Change-Id: I1cc82917f2d407e7f6e18b6bf206568a35c5d2d5
40937
master
J ✓B ✓T ✗2R -1/2−
LU-13638 ptlrpc: addition change for callback discard
reviewing Yang Sheng · blocked on the owner: enforced tests failed
stalled 456d
S +15 −9
456d
LU-13638 ptlrpc: addition change for callback discard
reviewing Yang Sheng · blocked on the owner: enforced tests failed
stalled 456d
S +15 −9
456d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-4 | CentOS 8.3/x86_64 | ran 10 tests. 2 tests failed: sanity-quota, replay-single. | session |
| review-dne-selinux-ssk | CentOS 8.3/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
build #19571 SUCCESS
reviews:
Alexey Lyashkov -1
no vote yet: Qian Yingjin, Shuichi Ihara, Zhenyu Xu, Serguei Smirnov, Amir Shehata, Andreas Dilger
owner Yang Sheng · uploader Yang Sheng · PS4 uploaded 2065d ago · NEW · open in Gerrit ↗
commit message
LU-13638 ptlrpc: addition change for callback discard --Fix some style issue; --decrease ibc_nsends_posted along with ibc_sending, else we may hit the ASSERT in kiblnd_destroy_conn(); --We should bypass checking delayed request and then handle it in ptlrpc_unregister_reply(); Fixes: babf023227 (LU-13368 lnet: discard the callback) Signed-off-by: Yang Sheng <ys@whamcloud.com> Change-Id: I84dc43acad1e010bf1370dc115f2f12002a35b4d
47150
master
J !B ✓T …R 0/2
LU-15003 sec: test native fscrypt
reviewing Sebastien Buisson · awaiting review (CI not green yet)
stalled 456d
XS +1 −0
456d
LU-15003 sec: test native fscrypt
reviewing Sebastien Buisson · awaiting review (CI not green yet)
stalled 456d
XS +1 −0
456d
janitor run: 4 failing config(s), none unique to this patch — janitor results
patchsets:
PS7 06-03
PS8 06-13
PS9 06-24
PS10 06-30
PS11 08-02
+6 earlier
PS1 04-26 PS2 04-29 PS3 04-29 PS4 06-02 PS5 06-02 PS6 06-02owner Sebastien Buisson · uploader Sebastien Buisson · PS11 uploaded 1555d ago · NEW · open in Gerrit ↗
commit message
LU-15003 sec: test native fscrypt Test native fscrypt. Change-Id: I28caaa57f3c7c479ae192716aed3fbddae700f6a Test-Parameters: fortestonly clientdistro=ubuntu2004 serverdistro=el8.5 trivial testlist=sanity-sec Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
50398
master
J ✓B ✓T ✗1R -1/2−
LU-16663 tests: add yaml testing wrappers for utils
reviewing Timothy Day · blocked on the owner: enforced tests failed
stalled 456d
1 unresolved
S +33 −9
456d
LU-16663 tests: add yaml testing wrappers for utils
reviewing Timothy Day · blocked on the owner: enforced tests failed
stalled 456d
1 unresolved
S +33 −9
456d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-dne | CentOS 8.5/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
build #93243 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger -1
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Timothy Day sanity.sh:5500 — Good catch. I didn't notice either of those issues.
Andreas Dilger
(minor) I see that "lctl get_param -y" is not (yet) documented in the usage message. Also, "lctl get_param" doesn't have a long "-y/--yaml" option, but it should. Also, long options "-F/--format/--classify", "-n/--no-name", "-N/--no-value", "-R/--recursive" should be added.
Timothy Day
Good catch. I didn't notice either of those issues.
owner Timothy Day · uploader Timothy Day · PS1 uploaded 1321d ago · NEW · open in Gerrit ↗
commit message
LU-16663 tests: add yaml testing wrappers for utils Add tester for lfs, lctl YAML output. Use this tester on a number of common sanity tests. This will improve YAML test coverage, while not requiring a large number of custom test cases to be made. Test-Parameters: trivial Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: I4679003ce7ee670b2a4a6aaf31c289e4e2aa86be
51920
master
J !B ✓T ✗2R 0/2
LU-8802 obd: add strong locking to OBD lifecycle management
reviewing Timothy Day · blocked on the owner: enforced tests failed
stalled 456d
M +43 −26
456d
LU-8802 obd: add strong locking to OBD lifecycle management
reviewing Timothy Day · blocked on the owner: enforced tests failed
stalled 456d
M +43 −26
456d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-selinux-ssk-part-1 | RHEL 8.8/x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-zfs | RHEL 8.8/x86_64 | ran 8 tests. 1 tests failed: sanity-quota. | session |
build #100190 SUCCESS · tests all Maloo sessions
no vote yet: Alexey Lyashkov, Andreas Dilger, Neil Brown, Alex Zhuravlev
patchsets:
PS1 08-10
PS2 11-07
owner Timothy Day · uploader Timothy Day · PS2 uploaded 1092d ago · NEW · open in Gerrit ↗
commit message
LU-8802 obd: add strong locking to OBD lifecycle management
The OBD lifecycle code can race in certain conditions.
This is most noticable for class_{attach,detach,setup,cleanup}
and class_{incref,decref}. Implement a new global lock,
obd_lifecycle_management_lock, to stop these different
functions from racing. This lock can reliably prevent
the crashing seen in patch 51895 (caused by attempting
to setup and teardown the same OBD device in different
threads).
OBD devices are setup infrequently, so the potential for
lock contention is low. The time to setup about 10,000
OBD devices is around 10 seconds, with or without this
patch.
Lockless versions of certain functions have been
provided, since certain OBD cleanup and setup
routines must call some of these class_* functions.
Further, class_{attach,detach,setup,cleanup} have
been un-exported to make it harder to abuse these
functions. They were only used in a small number
of places.
Signed-off-by: Timothy Day <timday@amazon.com>
Change-Id: I4b0242b5d37de58fd67578edd3c624a3b971cbfe
53300
master
J ✗2B ✓T ✗1R -1/2−
LU-17327 tests: add test case for online MDT/OST addition
reviewing Jian Yu · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
2 unique failures
stalled 456d
M +189 −5
456d
LU-17327 tests: add test case for online MDT/OST addition
reviewing Jian Yu · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
2 unique failures
stalled 456d
M +189 −5
456d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity2@zfs:test_46b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity2@zfs:test_46b | NEW unique failure for this branch in the last 30 days, and was seen 1 times across 1 other branches 1 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1002 | RHEL 8.9/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
build #103890 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Lai Siyao
patchsets:
PS43 03-30 Andreas Dilger
PS44 04-04 Andreas Dilger
PS45 04-04 Andreas Dilger
PS46 04-05 Andreas Dilger
PS47 04-05 Andreas Dilger
+42 earlier
PS1 11-30 PS2 11-30 PS3 12-04 PS4 12-04 PS5 12-06 Andreas Dilger PS6 12-06 Andreas Dilger PS7 12-06 Andreas Dilger PS8 12-06 Andreas Dilger PS9 12-06 Andreas Dilger PS10 12-06 Andreas Dilger PS11 12-07 Andreas Dilger PS12 12-07 Andreas Dilger PS13 12-07 Andreas Dilger PS14 12-07 Andreas Dilger PS15 12-07 Andreas Dilger PS16 12-07 Andreas Dilger PS17 12-08 Lai Siyao PS18 12-08 Andreas Dilger PS19 12-08 Andreas Dilger PS20 12-11 Andreas Dilger PS21 01-26 Lai Siyao PS22 01-30 Lai Siyao PS23 02-12 Andreas Dilger PS24 03-04 Lai Siyao PS25 03-06 Andreas Dilger PS26 03-07 Andreas Dilger PS27 03-07 Andreas Dilger PS28 03-07 Andreas Dilger PS29 03-07 Andreas Dilger PS30 03-08 Andreas Dilger PS31 03-09 Andreas Dilger PS32 03-16 Andreas Dilger PS33 03-16 Andreas Dilger PS34 03-22 Andreas Dilger PS35 03-25 Andreas Dilger PS36 03-25 Andreas Dilger PS37 03-25 Andreas Dilger PS38 03-25 Andreas Dilger PS39 03-25 Andreas Dilger PS40 03-28 Andreas Dilger PS41 03-28 Andreas Dilger PS42 03-30 Andreas Dilgerowner Jian Yu · uploader Andreas Dilger · PS47 uploaded 942d ago · NEW · open in Gerrit ↗
commit message
LU-17327 tests: add test case for online MDT/OST addition Add conf-sanity test_46b for adding MDTs and OSTs online to a live Lustre filesystem that is under load. Alternate adding MDTs and OSTs until the config limit is reached, while copying directory trees into two different mountpoints. There should be no errors hit by rsync, and the new MDTs and OSTs should (eventually) be used by the copied directories. Test-Parameters: trivial Test-Parameters: testlist=conf-sanity env=ONLY=46b,ONLY_REPEAT=5 mdtcount=8 mdscount=4 Test-Parameters: testlist=conf-sanity env=ONLY=46b,ONLY_REPEAT=20 mdtcount=4 mdscount=2 Change-Id: Ib471c76ffffb0205ce2eee5d1e43867566eb2f41 Signed-off-by: Jian Yu <yujian@whamcloud.com>
53578
master
J !B ✗T –R ✗
LU-17391 rust: simple OBD API bindings
reviewing Timothy Day · blocked on the owner: build failure; Timothy Day voted -1
CR -1
stalled 456d
L +350 −1
456d
LU-17391 rust: simple OBD API bindings
reviewing Timothy Day · blocked on the owner: build failure; Timothy Day voted -1
CR -1
stalled 456d
L +350 −1
456d
blocked on the owner: build failure; Timothy Day voted -1
awaiting review (CI not green yet)
janitor run: build failed — no tests ran — janitor results
build #101095 FAILURE
reviews:
Timothy Day -1
no vote yet: Andreas Dilger
owner Timothy Day · uploader Timothy Day · PS1 uploaded 1036d ago · NEW · open in Gerrit ↗
commit message
LU-17391 rust: simple OBD API bindings Implement simple rust bindings for OBD API along with a simple OBD device demonstrating them. This was tested on Ubuntu 23.04 with the officially distributed rust bindings. https://rust-for-linux.com/ https://discourse.ubuntu.com/t/ubuntu-kernel-is-getting-rusty-in-lunar/34977 Test-Parameters: forbuildonly Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: I32ab4d085f19dc2347738ef6d3b8194f4e1c09c4
11171
master
J ✗2B ✓T ✗2R -1/2−
LU-4801 ldlm: use mutex for resource locks for flock resources
reviewing Oleg Drokin · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; janitor: test failures unique to this patch; enforced tests failed
needs rebase
2 unique failures
stalled 457d
S +22 −7
457d
LU-4801 ldlm: use mutex for resource locks for flock resources
reviewing Oleg Drokin · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; janitor: test failures unique to this patch; enforced tests failed
needs rebase
2 unique failures
stalled 457d
S +22 −7
457d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch
| unique failing test | history |
|---|---|
| sanity-sec@zfs:test_8 | seen in 19 other reviews |
| sanity-sec@zfs:test_21 | seen in 2 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | CentOS 7.0/x86_64 | ran 6 tests. 1 tests failed: sanityn. | session |
| review-dne-part-4 | CentOS 7.0/x86_64 | ran 10 tests. 1 tests failed: sanity-pfl. | session |
build #9207 SUCCESS
owner Oleg Drokin · uploader Oleg Drokin · PS4 uploaded 2576d ago · NEW · open in Gerrit ↗
commit message
LU-4801 ldlm: use mutex for resource locks for flock resources Since flocks have a lot of heavy processing under resource lock, use a mutex for the lock to allow other users some CPU. Change-Id: I253aad02f4199fc6489f7ff197a812b7ecdd0619 Signed-off-by: Oleg Drokin <oleg.drokin@intel.com>
37119
master
J !B ✗T –R -2/2−
LU-13108 lustre: Improve ptlrpc_async_args union
reviewing Arshad Hussain · blocked on the owner: build failure
stalled 463d
S +20 −2
463d
LU-13108 lustre: Improve ptlrpc_async_args union
reviewing Arshad Hussain · blocked on the owner: build failure
stalled 463d
S +20 −2
463d
blocked on the owner: build failure
awaiting review (CI not green yet)
build #70785 FAILURE
reviews:
Petros Koutoupis -1 · Andreas Dilger -1
no vote yet: Shaun Tancheff, Neil Brown, Aurelien Degremont, Ben Evans
owner Arshad Hussain · uploader Arshad Hussain · PS2 uploaded 2495d ago · NEW · open in Gerrit ↗
commit message
LU-13108 lustre: Improve ptlrpc_async_args union This patch improves union ptlrpc_async_args by replacing magic number used in member by a more meaningful #define. Test-Parameters: trivial Signed-off-by: Arshad Hussain <arshad.super@gmail.com> Change-Id: Ib7f7e3111e6ae8607f05ba8ef0a4970c921164eb
53487
master
J –B ✗T ✗3R 0/2
LU-17373 tests: Improve do_nodes() to use no_dsh for local nodes
reviewing Arshad Hussain · blocked on the owner: build failure; enforced tests failed
stalled 463d
M +58 −6
463d
LU-17373 tests: Improve do_nodes() to use no_dsh for local nodes
reviewing Arshad Hussain · blocked on the owner: build failure; enforced tests failed
stalled 463d
M +58 −6
463d
blocked on the owner: build failure; enforced tests failed
awaiting review (CI not green yet)
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 8.8/x86_64 | ran 4 tests. 2 tests failed: conf-sanity, sanity. | session |
| review-ldiskfs-dne | RHEL 8.8/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-dne-arm | RHEL 8.8/aarch64, RHEL 8.8/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
build #101163 FAILURE · tests all Maloo sessions
no vote yet: Andreas Dilger
patchsets:
PS1 12-18
PS2 01-04
PS3 01-04
PS4 01-04
owner Arshad Hussain · uploader Arshad Hussain · PS4 uploaded 1035d ago · NEW · open in Gerrit ↗
commit message
LU-17373 tests: Improve do_nodes() to use no_dsh for local nodes On a client/server setup and starting cluster using llmount.sh. do_nodes() is called with both client and server. Under do_nodes() both local nodes and remote nodes make ssh calls. This patch improves do_nodes() to use 'no_dsh'(local calls, no ssh) calls when making calls to local node. The call to remote node continues as usual. Test-Parameters: trivial testlist=sanity,conf-sanity Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Change-Id: I2e45547d5bfcda6ffc17a3b990b9bf75f5d3f6d8
55959
master
J –B ✓T ✗1R 0/2
LU-18110 doc: lfs setstripe manpage refers to filename
reviewing Oleg Drokin · blocked on the owner: enforced tests failed
stalled 463d
1 unresolved
XS +1 −1
463d
LU-18110 doc: lfs setstripe manpage refers to filename
reviewing Oleg Drokin · blocked on the owner: enforced tests failed
stalled 463d
1 unresolved
XS +1 −1
463d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-dne | RHEL 9.3/x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
build #106679 SUCCESS · tests all Maloo sessions
patchsets:
PS1 08-07
PS2 08-07
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger lfs-setstripe.1:23 — Well, there are a million possible contents for a YAML file, but I was thinking if there is a specific ".lyl" Lustre YAML Layout file exten
Andreas Dilger
My intention was to pick some new suffix that showed the file was a Lustre file layout and YAML. It could be ".lfl", but this should be lower-case and bold, instead of uppercase.
Oleg Drokin
so you think this one is good to leave as is? I guess YAML_TEMPLATE_FILE already sort of hints the intended format is YAML?
Andreas Dilger
Well, there are a million possible contents for a YAML file, but I was thinking if there is a specific ".lyl" Lustre YAML Layout file extension that it might be easier to reference these in other tools/docs/etc.
owner Oleg Drokin · uploader Oleg Drokin · PS2 uploaded 818d ago · NEW · open in Gerrit ↗
commit message
LU-18110 doc: lfs setstripe manpage refers to filename I checked online and .LYL file extension is not really a thing, I think .YML is what is meant here? Test-Parameters: trivial Change-Id: Ic8e62a926370e29ae13ad3960e95110b773adb0e Signed-off-by: Oleg Drokin <green@whamcloud.com>
56442
master
J ✗3B ✓T ✗3R +1/2
LU-18246 zfs: fix for colocated client deadlock
reviewing Timothy Day · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
3 unique failures
stalled 463d
S +22 −0
463d
LU-18246 zfs: fix for colocated client deadlock
reviewing Timothy Day · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
3 unique failures
stalled 463d
S +22 −0
463d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| replay-single@zfs:test_65a | seen in 31 other reviews |
| sanity-hsm@zfs:test_251 | seen in 2 other reviews |
| sanity-hsm@zfs:test_254b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-3 | RHEL 9.3/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-5 | RHEL 9.3/x86_64 | ran 6 tests. 1 tests failed: recovery-small. | session |
| review-ldiskfs | RHEL 9.3/x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
6 optional test failure(s) — informational
build #107809 SUCCESS · tests all Maloo sessions
reviews:
Mark Roper +1
no vote yet: Alex Zhuravlev, Jeya ganesh babu, Brian Behlendorf
owner Timothy Day · uploader Timothy Day · PS1 uploaded 774d ago · NEW · open in Gerrit ↗
commit message
LU-18246 zfs: fix for colocated client deadlock Some HSM solutions for Lustre use a client on the MDT to create directories and files. In case of small sized instances and during memory pressure, the allocations from ZFS could trigger a deadlock during an inline memory free by calling Lustre mdc APIs. The threads got stuck waiting for RPCs. To avoid this, use spl_fstrans_mark and spl_fstrans_unmark to disable inline memory reclaim. This is based on suggestion from the openZFS community - https://github.com/openzfs/zfs/issues/15786. Signed-off-by: Jeya ganesh babu Jegatheesan <jeyaga@amazon.com> Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: If42b9c32eea026386b0ddb5b9c65d5c9f1406652
41747
master
J ✗5B ✓T ✗4R 0/2
LU-14041 lnet: display CPT timing from lnetctl
reviewing Cyril Bordage · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
5 unique failures
stalled 1607d
L +333 −1
1607d
LU-14041 lnet: display CPT timing from lnetctl
reviewing Cyril Bordage · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
5 unique failures
stalled 1607d
L +333 −1
1607d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-lnet@zfs:test_204 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-lnet@zfs:test_205 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-lnet@zfs:test_206 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-lnet@zfs:test_207 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-lnet@zfs:test_209 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-zfs-part-4 | CentOS 8.5/x86_64 | ran 9 tests. 1 tests failed: sanity-quota. | session |
| review-ldiskfs | CentOS 8.5/x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-arm | CentOS 8.5/aarch64, CentOS 8.5/x86_64 | ran 6 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-ubuntu | CentOS 8.5/x86_64, Ubuntu 20.04/x86_64 | ran 6 tests. 1 tests failed: sanity-lnet. | session |
3 optional test failure(s) — informational
build #87836 SUCCESS · tests all Maloo sessions
no vote yet: Frank Sehr, Serguei Smirnov, Chris Horn, Amir Shehata
patchsets:
PS9 09-16
PS10 09-16
PS11 06-10
PS12 06-10
owner Cyril Bordage · uploader Cyril Bordage · PS12 uploaded 1607d ago · NEW · open in Gerrit ↗
commit message
LU-14041 lnet: display CPT timing from lnetctl added command: lnetctl set percpt_time_stats_enable [0|1] to enable capturing per cpt time statistics and lnetctl percpt_time_stats show to dump per cpt timing stats Signed-off-by: Cyril Bordage <cbordage@whamcloud.com> Change-Id: I30699b204efca7920d6fdca690ea7024a9e9adb0
38041
master
J ✗4B ✓T ✗11R 0/2
LU-13384 hsm: create new copytool interface
reviewing Nikitas Angelinas · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
4 unique failures
stalled 1635d
L +692 −4
1635d
LU-13384 hsm: create new copytool interface
reviewing Nikitas Angelinas · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
4 unique failures
stalled 1635d
L +692 −4
1635d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch
| unique failing test | history |
|---|---|
| sanity-hsm@ldiskfs+DNE:test_260b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-hsm@ldiskfs+DNE:test_260c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-hsm@zfs:test_260b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-hsm@zfs:test_260c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-101 | CentOS 7.0/x86_64 | ran 3 tests. 1 tests failed: sanity-hsm. | session |
| review-dne-part-1 | RHEL 7.8/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-dne-part-2 | CentOS 7.0/x86_64 | ran 11 tests. 2 tests failed: sanity-pcc, sanity-hsm. | session |
| review-dne-part-3 | CentOS 7.0/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-selinux | CentOS 7.0/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-1 | RHEL 7.8/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-2 | CentOS 7.0/x86_64 | ran 11 tests. 2 tests failed: sanity-pcc, sanity-hsm. | session |
| review-dne-zfs-part-3 | CentOS 7.0/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-4 | CentOS 7.0/x86_64 | ran 10 tests. 1 tests failed: sanity-quota. | session |
| review-ldiskfs | CentOS 7.0/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-arm | CentOS 8.0/aarch64, RHEL 7.8/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
3 optional test failure(s) — informational
build #14940 SUCCESS
no vote yet: Qian Yingjin, Aurelien Degremont, Sergey Cheremencev, nathan r, Andreas Dilger, Ben Evans, Quentin Bouget
owner Nikitas Angelinas · uploader Nikitas Angelinas · PS3 uploaded 2337d ago · NEW · open in Gerrit ↗
commit message
LU-13384 hsm: create new copytool interface The current copytool interface has a combination of opaque and visible data, which increases, rather than hides complexity. This seeks to make a parallel interface for start, end and progress which is simpler. The new interface uses the files that are being operated on as the targets for the IOCTL, rather than the root directory. lhsmtool_posix: New mode which takes an input file of work. This new file is specified with the -F option. Each line is a new action for the copytool to perform, and the FIDs to use. These are handled by ct_restore_v2, ct_archive_v2 and ct_migrate_v2 which use the new llapi interface to operate. A new line in a work file looks like: ARCHIVE [0x200000403:0xd:0x0] [0x200000403:0xd:0x0] MIGRATE [0x200000403:0xd:0x0] [0x200000407:0xf:0x0] RESTORE [0x200000403:0xd:0x0] [0x200000403:0xd:0x0] Signed-off-by: Ben Evans <jevans@cray.com> Cray-bug-id: LUS-6843 Test-Parameters: env=COORDINATOR=external testlist=sanity-hsm Change-Id: I4e22aad88f137a5d28c6565b74231750ee50e939
43581
master
J ✗82B ✓T ✗6R 0/2
LU-14674 test: change PERM_CMD to "lctl set_param -P"
reviewing Li Xi · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
82 unique failures
stalled 1789d
XS +1 −1
1789d
LU-14674 test: change PERM_CMD to "lctl set_param -P"
reviewing Li Xi · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
82 unique failures
stalled 1789d
XS +1 −1
1789d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch
| unique failing test | history |
|---|---|
| conf-sanity2@ldiskfs+DNE:test_43a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity2@ldiskfs+DNE:test_44 | seen in 2 other reviews |
| conf-sanity2@ldiskfs+DNE:test_50i | seen in 2 other reviews |
| conf-sanity2@zfs:test_43a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| conf-sanity2@zfs:test_43b | seen in 2 other reviews |
| conf-sanity2@zfs:test_44 | seen in 2 other reviews |
| sanity-quota@ldiskfs+DNE:test_0 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_1a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_1b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_1c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_1d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_1e | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_1f | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_1g | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_1h | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_3a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_3b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_3c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_5 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_6 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_7a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_7b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_7c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_7d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_7e | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_8 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_10 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_11 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_12a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_12b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_13 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_17 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_18 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_19 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_21 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_22 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_23 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_24 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_30 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_41 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_56 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_60 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_67 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_68 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_69 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_71a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_71b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@ldiskfs+DNE:test_72 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_0 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_1a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_1b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_1c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_1d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_1e | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_1f | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_1g | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_3a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_3b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_3c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_5 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_6 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_7a | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_7b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_7c | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_7d | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_8 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_10 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_11 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_13 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_17 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_18 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_19 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_21 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_22 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_24 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_30 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_41 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_56 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_60 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_68 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_69 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs:test_72 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-3 | CentOS 8.3/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-4 | CentOS 8.3/x86_64 | ran 10 tests. 1 tests failed: sanity-quota. | session |
| review-dne-selinux-ssk | CentOS 8.3/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-3 | CentOS 8.3/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-4 | CentOS 8.3/x86_64 | ran 10 tests. 1 tests failed: sanity-quota. | session |
| review-zfs | CentOS 8.3/x86_64 | ran 8 tests. 1 tests failed: sanity-quota. | session |
build #20501 SUCCESS
no vote yet: Wang Shilong, Andreas Dilger
owner Li Xi · uploader Li Xi · PS1 uploaded 2007d ago · NEW · open in Gerrit ↗
commit message
LU-14674 test: change PERM_CMD to "lctl set_param -P" "lctl set_param -P" was meant as a transition from conf_param. Signed-off-by: Li Xi <lixi@ddn.com> Change-Id: Iaa291cbef1b9ad0b022322b3f6f43fc72105a6f4
41944
master
J ✓B ✓T –R 0/2
LU-10973 lnet: fix path issues in scripts running lutf
reviewing Serguei Smirnov · awaiting review (CI not green yet)
stalled 1873d
XL +719 −384
1873d
LU-10973 lnet: fix path issues in scripts running lutf
reviewing Serguei Smirnov · awaiting review (CI not green yet)
stalled 1873d
XL +719 −384
1873d
build #81637 SUCCESS
no vote yet: Amir Shehata
owner Serguei Smirnov · uploader Amir Shehata · PS46 uploaded 1952d ago · NEW · open in Gerrit ↗
commit message
LU-10973 lnet: fix path issues in scripts running lutf This is a test patch that attempts to fix the lutf start up scripts to be able to use paths that work properly when run in the lustre build environment as well as after being installed. Test-Parameters: @lnet Test-Parameters: fortestonly Signed-off-by: Serguei Smirnov <ssmirnov@whamcloud.com> Signed-off-by: Amir Shehata <ashehata@whamcloud.com> Change-Id: Ia3c2bf7bc904a7a35e25e11edbdf37a6e7280dd7
34067
master
J ✗6B ✓T ✗11R 0/2
LU-11817 lnet: display time stats from lnetctl
reviewing Amir Shehata · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
6 unique failures
stalled 2084d
L +390 −7
2084d
LU-11817 lnet: display time stats from lnetctl
reviewing Amir Shehata · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
6 unique failures
stalled 2084d
L +390 −7
2084d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
awaiting review (CI not green yet)
janitor flagged test failures unique to this patch
| unique failing test | history |
|---|---|
| sanity-lnet@zfs:test_204 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-lnet@zfs:test_205 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-lnet@zfs:test_206 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-lnet@zfs:test_207 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-lnet@zfs:test_209 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs+DNE:test_12b | seen in 10 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 crashed | CentOS 8.3/x86_64 | ran 12 tests. 3 tests failed: recovery-small, sanityn, sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-part-2 crashed | CentOS 8.3/x86_64 | ran 20 tests. 4 tests failed: large-scale, mds-survey, sanity-scrub, ost-pools. %% THIS TEST SESSION CRASHED | session |
| review-dne-part-4 crashed | CentOS 8.3/x86_64 | ran 12 tests. 1 tests failed: replay-single. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-selinux crashed | CentOS 8.3/x86_64 | ran 7 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-selinux-ssk crashed | CentOS 8.3/x86_64 | ran 10 tests. 2 tests failed: recovery-small, sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-ssk | CentOS 8.3/x86_64 | ran 5 tests. 3 tests failed: sanity-sec, recovery-small, sanity. | session |
| review-dne-zfs-part-1 crashed | CentOS 8.3/x86_64 | ran 10 tests. 2 tests failed: sanityn, sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-part-2 crashed | CentOS 8.3/x86_64 | ran 16 tests. 2 tests failed: mds-survey, ost-pools. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs crashed | CentOS 8.3/x86_64 | ran 7 tests. 2 tests failed: sanity-lnet, sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs-arm | CentOS 8.3/aarch64, CentOS 8.3/x86_64 | ran 6 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-ubuntu failed 2× crashed | CentOS 8.3/x86_64, Ubuntu 20.04/x86_64 | ran 8 tests. 2 tests failed: sanity-lnet, sanity. %% THIS TEST SESSION CRASHED %% | session |
build #19161 SUCCESS
no vote yet: Cyril Bordage
owner Amir Shehata · uploader Cyril Bordage · PS6 uploaded 2085d ago · NEW · open in Gerrit ↗
commit message
LU-11817 lnet: display time stats from lnetctl added command: lnetct set time_stats_enable [0|1] to enable capturing time statistics and lnetctl time_stats show to dump timing stats Signed-off-by: Amir Shehata <ashehata@whamcloud.com> Change-Id: Id7a542fbcc9fc4533b33f63dab764f91469aa0ac
36526
master
J –B ✓T –R -2/2−
LU-12890 hsm: perform mirror sync through HSM
reviewing Ben Evans · awaiting review (CI not green yet)
stalled 2340d
L +503 −189
2340d
LU-12890 hsm: perform mirror sync through HSM
reviewing Ben Evans · awaiting review (CI not green yet)
stalled 2340d
L +503 −189
2340d
build #9467 SUCCESS
reviews:
Qian Yingjin -1
no vote yet: Nikitas Angelinas, Aurelien Degremont, nathan r, Andreas Dilger, Quentin Bouget
owner Ben Evans · uploader Ben Evans · PS3 uploaded 2567d ago · NEW · open in Gerrit ↗
commit message
LU-12890 hsm: perform mirror sync through HSM Perform lfs mirror sync using HSM data mover Move lfs_mirror_resync_file into liblustreapi, change API to take an open file handle, rather than a path. Call from both lfs and lhsmtool_posix. Create test in sanity-hsm Signed-off-by: Ben Evans <bevans@cray.com> Test-Parameters: testlist=sanity-hsm sanity-flr Cray-bug-id: LUS-6392 Change-Id: I60cd4e72249aa1add4689bc60aeb71782095f917
34810
master
J –B ✓T –R 0/2
LU-10026: Compress data on client with lz4
reviewing Anna Fuchs · awaiting review (CI not green yet)
stalled 2466d
L +714 −68
2466d
LU-10026: Compress data on client with lz4
reviewing Anna Fuchs · awaiting review (CI not green yet)
stalled 2466d
L +714 −68
2466d
build #11636 SUCCESS
no vote yet: Neil Brown, Patrick Farrell, Sebastien Buisson, Andreas Dilger
owner Anna Fuchs · uploader Anna Fuchs · PS6 uploaded 2468d ago · NEW · open in Gerrit ↗
commit message
LU-10026: Compress data on client with lz4 Send compressed over network. The option L_CSERVER determines whether to decompress the chunks on the server. Otherwise (L_CCLIENT) data will be passed compressed to ZFS, stored compressed by ZFS, and decompressed by ZFS when read. Change-Id: I083ec5dd7a61f37727f253897a850dacde55bd90 Test-Parameters: forbuildonly Signed-off-by: Anna Fuchs <anna.fuchs@informatik.uni-hamburg.de>
34651
master
J –B ✓T –R 0/2
LU-10026: Prepare structures for compression
reviewing Anna Fuchs · awaiting review (CI not green yet)
stalled 2471d
M +130 −0
2471d
LU-10026: Prepare structures for compression
reviewing Anna Fuchs · awaiting review (CI not green yet)
stalled 2471d
M +130 −0
2471d
build #11531 SUCCESS
no vote yet: Patrick Farrell, Neil Brown, Andreas Dilger, Sebastien Buisson
owner Anna Fuchs · uploader Anna Fuchs · PS4 uploaded 2471d ago · NEW · open in Gerrit ↗
commit message
LU-10026: Prepare structures for compression - chunk descriptor will be sent over network - contains "metadata" for every chunk Change-Id: I6d90f25e1b61166192df8790fd65e0bc23077bf8 Test-Parameters: forbuildonly fstype=zfs Signed-off-by: Anna Fuchs <anna.fuchs@informatik.uni-hamburg.de>
34831
master
J !B ✗T –R 0/2
LU-10026: Handle compression by server
reviewing Anna Fuchs · blocked on the owner: build failure
stalled 2482d
L +712 −110
2482d
LU-10026: Handle compression by server
reviewing Anna Fuchs · blocked on the owner: build failure
stalled 2482d
L +712 −110
2482d
blocked on the owner: build failure
awaiting review (CI not green yet)
build #11214 FAILURE
no vote yet: Patrick Farrell, Sebastien Buisson, Andreas Dilger, Neil Brown
owner Anna Fuchs · uploader Anna Fuchs · PS2 uploaded 2482d ago · NEW · open in Gerrit ↗
commit message
LU-10026: Handle compression by server Either decompress data by server (previously compressed by client) and store uncompressed or pass through compressed to ZFS. Passing through requires patched ZFS version; for testing purposes commented out. Read unaffected. Change-Id: I594d0cd42f0a99557518c87da5fd8f3344173f69 Test-Parameters: tests=sanity Signed-off-by: Anna Fuchs <anna.fuchs@informatik.uni-hamburg.de>
31637
master
J –B ✓T ✓R +1/2
LU-8329 wiretest: Add ioctl struct definitions
reviewing Nathaniel Clark · awaiting review (CI not green yet)
stalled 2777d
XL +1095 −0
2777d
LU-8329 wiretest: Add ioctl struct definitions
reviewing Nathaniel Clark · awaiting review (CI not green yet)
stalled 2777d
XL +1095 −0
2777d
build #4275 SUCCESS
reviews:
Andreas Dilger +1
no vote yet: Arshad Hussain
owner Nathaniel Clark · uploader Nathaniel Clark · PS6 uploaded 2777d ago · NEW · open in Gerrit ↗
commit message
LU-8329 wiretest: Add ioctl struct definitions In addition to ioctl calls form LU-8330, this checks the structures passed into the ioctls. Test-Parameters: trivial Change-Id: Id7fc2fa2d8b0d48bf111c238d644cf6398979248 Signed-off-by: Nathaniel Clark <nclark@whamcloud.com>
18682
master
J –B ✓T ✗0R +1/2
LU-6877 osc: cast cl_max_pages_per_rpc to 64bit.
reviewing Yang Sheng · blocked on the owner: enforced tests failed
stalled 3751d
S +10 −6
3751d
LU-6877 osc: cast cl_max_pages_per_rpc to 64bit.
reviewing Yang Sheng · blocked on the owner: enforced tests failed
stalled 3751d
S +10 −6
3751d
blocked on the owner: enforced tests failed
awaiting review (CI not green yet)
reviews:
Bob Glossman +1
no vote yet: Oleg Drokin
owner Yang Sheng · uploader Yang Sheng · PS7 uploaded 3752d ago · NEW · open in Gerrit ↗
commit message
LU-6877 osc: cast cl_max_pages_per_rpc to 64bit. There is a potential overflow as cl_max_pages_per_rpc is a 32bit type. So cast it to 64bit before shift. Signed-off-by: Yang Sheng <yang.sheng@intel.com> Change-Id: Id252d507e270f051a9d643f180aa7fcbcf752a97
▶Voted on current patchset
(87)
67519
master
J –B ✓T ✓R +4/2
LU-18687 build: make lustre_compat headers transparent
reviewing Timothy Day · you voted +1 on current PS
pw_bigfix
M +85 −66
7h
LU-18687 build: make lustre_compat headers transparent
reviewing Timothy Day · you voted +1 on current PS
pw_bigfix
M +85 −66
7h
build #135042 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Arshad Hussain +1 · Chris Horn +1 · Andreas Dilger +1
no vote yet: Shaun Tancheff
patchsets:
PS3 07-24
PS4 10-30 patrick bot
PS5 10-30 patrick bot
PS6 10-31 patrick bot
PS7 11-01 patrick bot
+2 earlier
PS1 07-24 PS2 07-24your previous vote: -1 on PS3 (2026-07-24 18:22) — now at PS7
tags: pw_bigfix
owner Timothy Day · uploader patrick bot · PS7 uploaded 3d ago · NEW · open in Gerrit ↗
commit message
LU-18687 build: make lustre_compat headers transparent Put include/lustre_compat ahead of the kernel headers from the top-level Kbuild, which in-kernel builds do not use, and filter it out again for ldiskfs, which is kernel code. Have each compat header named after a kernel header pull in the real one using include_next, so including the native header also brings in the compat additions. Kernel headers now reach these wrappers too, so they must not drag in heavy headers or need types that are not yet complete, and lustre_compat must define COMPAT_BUILD before its first include. The external o2iblnd build forces config.h the same way, so it comes before the OFED compat header and the generated .mod.c. Existing <lustre_compat/...> includes keep working; the following patches move users over a directory at a time. Test-Parameters: trivial Signed-off-by: Timothy Day <timday@thelustrecollective.com> Assisted-by: ClaudeCode:claude-opus-5-5 Change-Id: If39a50a1fd663875d51c73cd7313fccf965620e2
65094
master
J –B ✓T ✓R +1/2
LU-19895 clio: enable multi-order folios for BIO writes
reviewing Shaun Tancheff · you voted +1 on current PS
pw_own
CI@PS57
XL +2782 −1200
9h
LU-19895 clio: enable multi-order folios for BIO writes
reviewing Shaun Tancheff · you voted +1 on current PS
pw_own
CI@PS57
XL +2782 −1200
9h
build #135213 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1
no vote yet: patrick bot, Qian Yingjin, Andreas Dilger, Patrick Farrell, Timothy Day
patchsets:
PS54 10-31 patrick bot
PS55 11-01 patrick bot
PS56 11-01 patrick bot
PS57 11-02 patrick bot
PS58 11-03 Andreas Dilger
+53 earlier
PS1 04-04 PS2 04-05 PS3 04-06 PS4 04-06 PS5 04-07 PS6 04-08 PS7 04-11 PS8 04-13 PS9 04-24 PS10 05-07 PS11 05-09 PS12 05-11 PS13 05-12 PS14 05-12 PS15 05-12 PS16 05-15 PS17 05-17 PS18 05-17 PS19 05-21 PS20 05-22 PS21 05-26 PS22 05-26 PS23 05-27 PS24 05-27 PS25 06-19 PS26 06-19 PS27 08-06 PS28 08-17 PS29 08-21 PS30 08-28 PS31 09-04 PS32 09-04 PS33 09-05 PS34 09-09 PS35 09-09 PS36 09-11 PS37 09-11 PS38 09-12 PS39 10-15 Patrick Farrell PS40 10-16 patrick bot PS41 10-18 patrick bot PS42 10-19 patrick bot PS43 10-19 patrick bot PS44 10-20 patrick bot PS45 10-21 James Simmons PS46 10-23 patrick bot PS47 10-26 patrick bot PS48 10-27 patrick bot PS49 10-27 James Simmons PS50 10-27 patrick bot PS51 10-28 patrick bot PS52 10-28 patrick bot PS53 10-29 patrick botyour previous vote: +1 on PS53 (2026-10-30 17:09) — now at PS58
tags: pw_own
build/test results are from PS57 — PS58…PS58 changed only the commit message (votes copied, CI not re-run)
owner Shaun Tancheff · uploader Andreas Dilger · PS58 uploaded 1d ago · NEW · open in Gerrit ↗
commit message
LU-19895 clio: enable multi-order folios for BIO writes
Enable large folios for buffered writes on Linux 6.12 and
later. Track folios and base-page counts through the client
cache and RPCs. Direct I/O still uses one PAGE_SIZE chunk per
cl_page.
The llite.*.large_folios tunable, on by default, enables
allocation. llite.*.folio_order_max limits newly instantiated
inodes to at most 1 MiB, or 20 - PAGE_SHIFT. Expose
llite.*.folio_order_min and the client dirty_pages count.
Huge page mmap faults read ahead in folios up to the maximum
order whatever the layout, so their DLM lock covers the
largest folio that can hold the faulting page. A folio that
crosses a stripe or component, does not fit one RPC, or is on
a file that may not use large folios is dropped and read again
in base pages, as is one a read finds partly outside the DLM
locks it checked; readahead skips such a folio. An append,
which is not split per stripe, sizes its folios to the stripe
chunk they start in. An mmap write to a cached folio that no
longer fits one RPC drops it and refaults. Files whose layout
has a parity component keep base pages until EC recovery
handles folios, and EC recovery drops a large folio a fault
left there.
Preserve partial folios when punching holes, and drop them
if the server does not punch. Keep a tail punch's leading
valid range in cp_off/cp_len instead of the punched range
itself. Protect mmap writes against
filesystem freeze and lock and commit the whole folio.
Readahead advances by folio size and counts base pages,
including for random reads. Restore encrypted offsets when
RPC preparation fails.
Grow RPC asynchronous metadata to hold the folio descriptors.
Make sanity/277 use 4 KiB writes and a failure-injection delay
that fires once, so its cache accounting check observes the
intended state.
Add sanity/857 for the tunables and buffered and mmap I/O.
Reset the queued count if direct I/O or buffered page queuing
fails.
Skip an empty RPC's folio-less placeholder when undoing
encryption bounce pages on a failed request pack, since it
has no folio to check.
Dirty a cached folio whole when it is first queued, since a
later write or mmap store into a queued folio does not queue
it again. The last folio of an extent is trimmed to the file
size, and a truncate inside a dirty folio keeps its range. A
buffered write whose lock or RPC size does not cover the
whole folio is written synchronously, and a short copy into
a folio that is not uptodate is retried, so the folio never
holds unread bytes. A partial write to a clean large folio
drops it and writes base pages, so clean data is not sent
again, as does one to a folio that is not uptodate and
reaches outside the write's lock.
DoM open drops an unread large folio from the cache before
filling it from the inline data.
Decrypt skips each empty 4 KiB unit and reports a hole only
when the whole folio is one.
Dump each page of a folio on a checksum mismatch, and unmap
the page with the pointer that was mapped, not one advanced
by a short kernel_write().
Count the osc_extent_expand() size against the server's
maximum by the expanded range, so a large folio near that
maximum does not start a needless new extent.
A cached folio that spans grant chunks must start on one in
its stripe object, and grant is reserved for each chunk a
queued range spans, so grant still bounds what is cached.
Test-Parameters: optional clientdistro=el10.0
Test-Parameters: clientdistro=el10.1
Test-Parameters: clientdistro=el10.1 serverversion=2.17 testlist=sanity
HPE-bug-id: LUS-13263
Fixes: 87d17d0a16ab ("LU-13814 osc: add osc_dio_submit")
Fixes: 93ef6e7863b4 ("LU-10239 osc: limit chunk number of write submit")
Signed-off-by: Shaun Tancheff <shaun@tancheff.com>
Assisted-by: Codex:gpt-6.1-sol
Assisted-by: ClaudeCode:claude-sonnet-5
Assisted-by: ClaudeCode:claude-opus-5-5
Assisted-by: ClaudeCode:claude-sonnet-5-5
Signed-off-by: Patrick Farrell <patrick@thelustrecollective.com>
Change-Id: I5c83d9555a2563c764ef6ec12d227b4890db3f5e
66514
master
J –B ✓T ✓R +2/2
LU-9639 ldlm: Add kernel doc style for LDLM (9)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
M +67 −31
12h
LU-9639 ldlm: Add kernel doc style for LDLM (9)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
M +67 −31
12h
build #135204 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Timothy Day +1
no vote yet: Oleg Drokin
patchsets:
PS1 06-07
PS2 08-17
PS3 08-25
PS4 11-02
your previous vote: +1 on PS1 (2026-07-30 19:00) — now at PS4
owner Arshad Hussain · uploader Arshad Hussain · PS4 uploaded 2d ago · NEW · open in Gerrit ↗
commit message
LU-9639 ldlm: Add kernel doc style for LDLM (9) This patch converts existing functional comments to kernel doc style comments and removes '/**' for comments which is not meant to be a kernel-doc comment Test-Parameters: trivial Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Change-Id: Ia9120a9b1c1f1cd24bdaed2da762f460ba66eb01
66951
master
J –B ✓T ✓R +2/2
LU-20434 build: strncpy() to strscpy() non-obvious cases
reviewing Shaun Tancheff · you voted +1 on current PS
pw_shepherd
1 unresolved
S +13 −11
12h
LU-20434 build: strncpy() to strscpy() non-obvious cases
reviewing Shaun Tancheff · you voted +1 on current PS
pw_shepherd
1 unresolved
S +13 −11
12h
build #134785 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Timothy Day +1
no vote yet: Andreas Dilger
patchsets:
PS1 06-29
PS2 08-18
PS3 08-22
PS4 09-05
PS5 10-29 Timothy Day
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:22 — (minor) Zeroing name_buf at its declaration also closes an older leak that this paragraph doesn't mention. In LCFG_NODEMAP_LOOKUP_SHA, nodem
Gerrit AI review for Lustre
(minor) Zeroing name_buf at its declaration also closes an older leak that this paragraph doesn't mention. In LCFG_NODEMAP_LOOKUP_SHA, nodemap_lookup_sha() uses plain strscpy(), which writes only strlen(nm_name) + 1 bytes. server_iocontrol_nodemap() then copies all sizeof(name_buf) bytes out with copy_to_user(), so for any nodemap name shorter than 16 characters the remaining stack bytes have gone to userspace since the ioctl was added.
The IS_ERR() early return in nodemap_test_nid() (a 0@lo NID with no other local NID) has leaked the whole buffer the same way since before this series, because strncpy() never ran on that path.
Both need CAP_SYS_ADMIN, so the impact is small. Still, if the patch is refreshed, it would help to mention LOOKUP_SHA as well, and possibly add:
Fixes: 19fb018c58c9 ("LU-19079 nodemap: ioctl to get nodemap name from sha")
tags: pw_shepherd
owner Shaun Tancheff · uploader Timothy Day · PS5 uploaded 5d ago · NEW · open in Gerrit ↗
commit message
LU-20434 build: strncpy() to strscpy() non-obvious cases Some cases of strncpy() want to overwrite some bytes of the destination and do not want to truncate the destination. mdt_path_current() and mgs_replace_mdtname() use memcpy() to overwrite segments. mdd_xattrs_migrate_prep() can use strscpy(). nodemap_test_nid() should use strscpy_pad() as it is always passed the sizeof() the buffer and the zero padding is needed. The buffer is copied to userspace in full by server_iocontrol_nodemap(), so zero it at declaration as well to cover the early return when no nodemap is found. Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: I8b70127fb5e4f870ff856bb2344f402eb2bd5f68
69827
master
J –B ✓T ✓R +4/2
LU-20995 compat: call kallsyms functions via static_call
reviewing Jian Yu · you voted +1 on current PS
pw_shepherd
master-next
2 unresolved
M +105 −54
16h
LU-20995 compat: call kallsyms functions via static_call
reviewing Jian Yu · you voted +1 on current PS
pw_shepherd
master-next
2 unresolved
M +105 −54
16h
build #134711 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Xiao Yang +1 · Nikitas Angelinas +1 · Timothy Day +1
no vote yet: Sohei Koyama
patchsets:
PS2 10-21
PS3 10-22
PS4 10-24
PS5 10-25
PS6 10-29
+1 earlier
PS1 10-19threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Nikitas Angelinas COMMIT_MSG:59 — Some "serverdistro=el10.*" configurations could also be specified, to run some tests using compat_security_file_alloc()/compat_security_file
Nikitas Angelinas
Some "serverdistro=el10.*" configurations could also be specified, to run some tests using compat_security_file_alloc()/compat_security_file_free() in osd-ldiskfs, but it's probably not necessary, imho
reply Timothy Day osd_handler.c:656 — There's a series to remove this dependency that I ought to push forward.
Timothy Day
There's a series to remove this dependency that I ought to push forward.
tags: pw_shepherd
owner Jian Yu · uploader Jian Yu · PS6 uploaded 6d ago · NEW · open in Gerrit ↗
commit message
LU-20995 compat: call kallsyms functions via static_call
On x86 kernels with CONFIG_X86_KERNEL_IBT running on an IBT-enabled
CPU, loading libcfs BUGs with "Missing ENDBR" when Lustre calls
kernel functions through pointers obtained from kallsyms.
The kernel seals the ENDBR of every function whose address is never
taken: objtool lists it in .ibt_endbr_seal and apply_seal_endbr()
poisons it at boot. kallsyms_lookup_name() is one of those
functions, as are alloc/free/apply_workqueue_attrs() and
security_file_alloc/free(), so none of them can be called through
a pointer from a module, whatever address is used.
A direct call or jmp does not need an ENDBR. On x86 kernels with
CONFIG_HAVE_STATIC_CALL, which every IBT kernel has, define a
static_call() in libcfs for kallsyms_lookup_name() and for each
function that lustre_symbols_init() looks up, and point it at the
kallsyms address with static_call_update(). The call sites are then
patched into direct calls to the kernel function, which also avoids
the indirect branch mitigations on kernels without IBT, such as
RHEL 9 and SLES 15 SP4/SP5. Other kernels and architectures keep
calling through a function pointer, behind the same
CFS_DEFINE_SYMBOL(), cfs_symbol_call() and cfs_symbol_set() helpers.
find_kallsyms_lookup_name() takes kallsyms_lookup_name() from a
kprobe, whose address is not always the symbol start: with IBT it
is after the ENDBR64 (+0x4), and on ppc64le (ELFv2) it is the local
entry point (global+8), or with KPROBES_ON_FTRACE the ftrace call
site, so calling it skipped the r2/TOC setup or part of the
prologue. Rewind the address to the start of the symbol using
sprint_symbol(). On other architectures the kprobe address is
already the symbol start.
In osd-wbcfs, look up flush_delayed_fput() before
class_register_type() and fail osd_init() if the lookup fails.
Previously a failed lookup left cfs_flush_delayed_fput NULL while
the module still loaded, so osd_umount()/osd_flush_fput() would
later call a NULL pointer. flush_delayed_fput() is exported since
v5.4, before IBT support was added in v5.18, so on IBT kernels it is
called directly and its ENDBR is never sealed.
The sanity runs below only exercise the IBT path if the test nodes
boot an IBT-enabled kernel on IBT-capable hardware; otherwise they
only verify that nothing regresses without IBT enforcement.
Test-Parameters: trivial
Test-Parameters: testlist=sanity clientdistro=el10.2
Test-Parameters: testlist=sanity clientdistro=el10.1
Test-Parameters: testlist=sanity clientdistro=el9.8
Test-Parameters: testlist=sanity clientdistro=el8.10
Test-Parameters: testlist=sanity clientdistro=sles15sp7
Test-Parameters: testlist=sanity clientdistro=ubuntu2404
Test-Parameters: testlist=sanity clientdistro=ubuntu2604
Fixes: b18bfc7c7935 ("LU-18687 compat: improve cfs_kallsyms_lookup_name()")
Fixes: 25813cf8ba53 ("LU-18813 osd-wbcfs: MemFS-based OSD with writeback support")
Signed-off-by: Jian Yu <yujian@whamcloud.com>
Assisted-by: Claude:claude-opus-5-5
Change-Id: I4fd5dae7454c9e9b0865c95c8369af15d6632516
69136
master
J –B ✓T ✓R +1/2−
LU-14144 utils: remove "lctl modules" command
reviewing Andreas Dilger · you voted +1 on current PS
2 unresolved
M +4 −103
1d
LU-14144 utils: remove "lctl modules" command
reviewing Andreas Dilger · you voted +1 on current PS
2 unresolved
M +4 −103
1d
build #134540 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Jian Yu +1 · Timothy Day -1
patchsets:
PS1 09-23
PS2 09-24
PS3 09-24
PS4 10-14
PS5 10-27
your previous vote: +1 on PS3 (2026-10-06 15:54) — now at PS5
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Timothy Day conf-sanity.sh:886 — Good point. We should use modprobe -r lustre, since it will try to remove lustre and the parent modules. And perhaps something like modprobe
Oleg Drokin
this introduces a gap: before a whole bunch of modules would be attempted to be removed and now it's just lustre. On the surface it's the same but in practice if we allow e.g. ptlrpc.ko removed that's kinda bad (it'll likely be seen as a crash since rmmod still fails for other modules I imagine. Now how to get a list of all lustre-related modules - I am not so sure.
Timothy Day
Good point. We should use modprobe -r lustre, since it will try to remove lustre and the parent modules. And perhaps something like modprobe --show-depends lustre | xargs modprobe -r to try to remove each parent module individually. But modprobe should have everything we need. No reason to have custom infrastructure regardless.
reply Oleg Drokin debug.c:816 — I wonder if this could be autogenerated instead if we wanted it back for whateevr reason? (e.g. that list for rmmod)
Oleg Drokin
I wonder if this could be autogenerated instead if we wanted it back for whateevr reason? (e.g. that list for rmmod)
owner Andreas Dilger · uploader Andreas Dilger · PS5 uploaded 8d ago · NEW · open in Gerrit ↗
commit message
LU-14144 utils: remove "lctl modules" command "lctl modules" printed gdb add-symbol-file commands from a list of module names and source paths that has not been updated in years, so it is missing most server modules and names stale .o files. The kernel's gdb "lx-symbols" script, crash "mod -S", and drgn all load module symbols properly. Remove the command rather than keep another list of module names. Remove the unused "ogdb" symbol dumps from test-framework.sh and run-llog.sh. Fix conf-sanity test_25, which passed the bogus .o paths to rmmod and so never tried to remove any modules. Test-Parameters: trivial Signed-off-by: Andreas Dilger <adilger@thelustrecollective.com> Assisted-by: ClaudeCode:claude-opus-5.5 ltvm,llm_code_and_review_tools Change-Id: I918b9ab2ab3d0c7fc38f575989860dadd13ebbe5
58298
master
J –B ✓T ✓R +1/2
LU-18774 lnet: SIGSEGV in lnetctl yaml parser
reviewing Frank Sehr · you voted +1 on current PS
2 unresolved
S +29 −7
2d
LU-18774 lnet: SIGSEGV in lnetctl yaml parser
reviewing Frank Sehr · you voted +1 on current PS
2 unresolved
S +29 −7
2d
build #134903 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1
no vote yet: Cyril Bordage, Manish Regmi, Serguei Smirnov, Chris Horn, Andreas Dilger, Timothy Day
patchsets:
PS1 03-04
PS2 08-01
PS3 09-16 Manish Regmi
PS4 10-30 Manish Regmi
your previous vote: -1 on PS3 (2026-10-19 15:56) — now at PS4
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:16 — (style) This fixes a user-visible crash, so a Fixes: tag would help backport tracking. The unchecked `strchr()` return goes back to:
Gerrit AI review for Lustre
(style) This fixes a user-visible crash, so a Fixes: tag would help backport tracking. The unchecked `strchr()` return goes back to:
Fixes: 3c39dac19aaf ("LU-9680 utils: add netlink infrastructure")
which added `yaml_quotation_handling()` with `tmp = strchr(line, '\"') - 1; tmp[0] = ' ';` and no NULL check.
reply Gerrit AI review for Lustre COMMIT_MSG:11 — (minor) The `tmp = buf` reset changes more than the unmatched case. Before, when the double quotes were balanced, the single-quote scan star
Gerrit AI review for Lustre
(minor) The `tmp = buf` reset changes more than the unmatched case. Before, when the double quotes were balanced, the single-quote scan started at the last closing `"`, so any `'` earlier in the buffer reached the kernel unchanged:
in : 0: x'y\n 1: "z"
old: 0: x'y\n 1: z
new: 0: x y\n 1: z
The new behaviour looks right. If the patch is refreshed, maybe say that yaml_quotation_handling() now always scans the whole buffer for single quotes, not only after an unmatched double quote.
owner Frank Sehr · uploader Manish Regmi · PS4 uploaded 4d ago · NEW · open in Gerrit ↗
commit message
LU-18774 lnet: SIGSEGV in lnetctl yaml parser
Avoid dereferencing a NULL pointer when YAML output contains an
unmatched single or double quotation mark. Continue scanning for
single quotation marks after an unmatched double quotation mark.
Add a sanity-lnet regression test for both cases.
Test-Parameters: trivial testlist=sanity-lnet env=ONLY=411
Fixes: 3c39dac19aaf ("LU-9680 utils: add netlink infrastructure")
Assisted-by: Claude:claude-opus-5.5
Signed-off-by: Frank Sehr <fsehr@whamcloud.com>
Signed-off-by: Manish Regmi <mregmi@ddn.com>
Change-Id: I2633ee0bb5461eec25044f0ca622cfaf18e2e5a1
69442
master
J –B ✓T ✓R +2/2
LU-20861 build: support ->create() without excl argument
reviewing Chell · you voted +1 on current PS
master-next
1 unresolved
M +50 −9
2d
LU-20861 build: support ->create() without excl argument
reviewing Chell · you voted +1 on current PS
master-next
1 unresolved
M +50 −9
2d
build #134784 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Chell +1 · Timothy Day +1
no vote yet: Shaun Tancheff
patchsets:
PS1 10-05
PS2 10-06
PS3 10-29 Timothy Day
your previous vote: +1 on PS2 (2026-10-07 15:25) — now at PS3
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Chell namei.c:2053 — Acknowledged
Gerrit AI review for Lustre
(nit) This isn't a bug, and the label is older than this patch, but since the format string is rewritten here anyway: `mode` is printed as "flags=%u" in decimal. If the patch is refreshed, consider "mode=%o" to match the ll_mknod() debug message just above.
Chell
Acknowledged
owner Chell · uploader Timothy Day · PS3 uploaded 5d ago · NEW · open in Gerrit ↗
commit message
LU-20861 build: support ->create() without excl argument
Linux commit v7.2-rc1-9-gb2f1e6301efa ("Remove excl arg to ->create
inode_operation") dropped the bool excl argument from
inode_operations.create(), so ll_create_nd() and memfs_create_nd() no
longer match the ops table type on v7.3.
Add a configure check for the four-argument form. Define
ll_create_nd() and memfs_create_nd() with that signature and adapt
their declarations for older kernels through lustre_compat/linux/fs.h,
including kernels without the namespace argument.
Remove excl from the ll_create_nd() debug message; neither callback
uses it for create semantics.
Test-Parameters: trivial
Assisted-by: ClaudeCode:Opus-5.5
Signed-off-by: Chell Laszlo <pumpkinbiscuit@proton.me>
Change-Id: Ib362f146cd737acc6ab2734ce237f4a7fce0b813
67518
master
J –B ✓T ✓R +3/2
LU-18687 build: normalize C flags in kernel Makefiles
reviewing Timothy Day · you voted +1 on current PS
pw_smallfix
master-next
S +14 −7
2d
LU-18687 build: normalize C flags in kernel Makefiles
reviewing Timothy Day · you voted +1 on current PS
pw_smallfix
master-next
S +14 −7
2d
build #134719 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Arshad Hussain +1 · Andreas Dilger +1
no vote yet: Shaun Tancheff
patchsets:
PS1 07-24
PS2 07-24
PS3 10-28 patrick bot
PS4 10-29 patrick bot
tags: pw_smallfix
owner Timothy Day · uploader patrick bot · PS4 uploaded 6d ago · NEW · open in Gerrit ↗
commit message
LU-18687 build: normalize C flags in kernel Makefiles Restrict subsystem include paths and put generated configuration before kernel headers. Keep Lustre headers available to LNet's remaining compatibility users. Defer the compatibility header overlay until the wrappers support transparent inclusion, so they do not hide native kernel headers. Test-Parameters: trivial Signed-off-by: Timothy Day <timday@thelustrecollective.com> Assisted-by: Codex:gpt-6.1-sol Change-Id: I8b35b99767f7ea41cc3c590bf35089fb81a1bf2c
67497
master
J !B ✓T ✓R +3/2
LU-6301 llite: clear rq_replay in ll_open_cleanup
reviewing Oleg Drokin · you voted +1 on current PS
master-next
7 unresolved
M +85 −7
2d
LU-6301 llite: clear rq_replay in ll_open_cleanup
reviewing Oleg Drokin · you voted +1 on current PS
master-next
7 unresolved
M +85 −7
2d
janitor run: 5 failing config(s), none unique to this patch — janitor results
build #131085 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Andreas Dilger +1 · Alex Zhuravlev +1
no vote yet: Lai Siyao, Timothy Day
patchsets:
PS1 07-23
PS2 07-23
PS3 07-23
PS4 07-26
PS5 09-04
threads: 7 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:22 — (minor) ll_splice_alias() in this tree still calls d_add(), so it cannot return an ERR_PTR and the ll_lookup_it_finish() error path describe
Gerrit AI review for Lustre
(minor) ll_splice_alias() in this tree still calls d_add(), so it cannot return an ERR_PTR and the ll_lookup_it_finish() error path described here is not reachable via that route yet. The leak itself is still reachable (ll_prep_inode() failure, llcrypt_prepare_readdir() failure, md_get_fid_from_lsm() failure), so maybe reword this as a future/companion-patch motivation rather than the current reproducer?
reply Gerrit AI review for Lustre COMMIT_MSG:37 — (minor) Two hunks aren't covered by the description.
Gerrit AI review for Lustre
(minor) Two hunks aren't covered by the description. The text reads as if ll_atomic_open()'s out_release already called ll_open_cleanup() and is only being simplified, but in the parent out_release was just ll_intent_release(it). This patch adds a brand new cleanup call there, which sends close RPCs on paths that previously sent none (including the finish_no_open() paths, where atomic_open returns 1 and the VFS re-opens). That is a behavior change worth spelling out. The new "!pill->rc_req || pill->rc_req->rq_commit_cb" guard in ll_open_cleanup() isn't mentioned at all, and the closing sentence says the callers no longer reach into rq_replay/rq_commit_cb -- they never did; it is the function that now depends on rq_commit_cb.
reply Gerrit AI review for Lustre llite_lib.c:3783 — (minor) This guard could use a comment. rq_commit_cb is standing in for two things that aren't obvious from the test: an och now owns the ha
Gerrit AI review for Lustre
(minor) This guard could use a comment. rq_commit_cb is standing in for two things that aren't obvious from the test: an och now owns the handle (mdc_set_open_replay_data() sets rq_commit_cb and mod->mod_och together), and rq_early_free_repbuf was set at the same time, so rq_repmsg may already have been freed by the ptlrpc_req_put() in ll_file_open() and req_capsule_server_get() below would have nothing to read. The !pill->rc_req half looks unreachable: req_capsule_init() and req_capsule_subreq_init() both store a non-NULL request, and nothing else could have produced a server reply to read here.
reply Gerrit AI review for Lustre llite_lib.c:3802 — (defect) Clearing rq_replay after md_close() may be too late to have any effect.
Gerrit AI review for Lustre
(defect) Clearing rq_replay after md_close() may be too late to have any effect.
md_close() is synchronous, and after_reply() for the close runs on the same import: it advances imp_peer_committed_transno and calls ptlrpc_free_committed(). If the open's transno has committed by then, that pass moves the open request to imp_committed_list while rq_replay is still 1:
if (req->rq_replay) {
list_move_tail(&req->rq_replay_list, &imp->imp_committed_list);
continue;
}
Once it is on imp_committed_list, clearing rq_replay does nothing: ptlrpc_free_committed() only walks that list when skip_committed_list is false, i.e. when the import generation changed or on the first scan. So the request is retained until reconnect -- the exact behavior this patch is trying to avoid, just with a smaller window.
mdc_close() clears rq_replay before sending the close for this reason. Would doing the same here (and/or calling ptlrpc_request_committed() afterwards, as mdc_free_open() does) make the fix deterministic?
reply Andreas Dilger llite_lib.c:3852 — Should be tracked to put into a separate patch if this one does not need to be refreshed.
Gerrit AI review for Lustre
(minor) Not a bug, but this is only equivalent to mdc_free_open() for a create. That one computes the force argument:
if (mod->mod_is_create == 0 &&
imp_connect_disp_stripe(mod->mod_open_req->rq_import))
committed = 1;
ptlrpc_request_committed(mod->mod_open_req, committed);
With force 0, an abandoned open whose transno has not committed yet stays on imp_replay_list, and ptlrpc_replay_next() walks that list without looking at rq_replay -- so an MDT failure before the commit still replays the open and recreates the handle the close just released, with mdc_replay_open() logging "cannot properly replay without open data" because rq_cb_data is NULL.
Since mod_is_create is just DISP_OPEN_CREATE || DISP_OPEN_STRIPE, the same condition is available from the intent here. Worth matching mdc_free_open() if the patch is refreshed?
Andreas Dilger
Should be tracked to put into a separate patch if this one does not need to be refreshed.
reply Gerrit AI review for Lustre namei.c:1560 — (minor) The comment doesn't quite match the code: both finish_no_open() branches fall through to out_release with rc = 1, which is the succe
Gerrit AI review for Lustre
(minor) The comment doesn't quite match the code: both finish_no_open() branches fall through to out_release with rc = 1, which is the success return telling the VFS to open the dentry itself, not an error. Releasing the MDT handle there looks right, but "all successful opens jump to out_free" isn't accurate.
reply Gerrit AI review for Lustre namei.c:1562 — (defect) Is it_request still referenced here?
Gerrit AI review for Lustre
(defect) Is it_request still referenced here?
The commit message says DISP_ENQ_OPEN_REF must survive so ll_intent_release() drops the reference mdc_finish_intent_lock() took. But on the path that reaches out_release through ll_finish_open(), ll_file_open() has already dropped it:
out_nofiledata:
if (it && it_disposition(it, DISP_ENQ_OPEN_REF)) {
ptlrpc_req_put(it->it_request);
it_clear_disposition(it, DISP_ENQ_OPEN_REF);
}
ll_file_open_encrypt() failure -> ll_release_openhandle() does the same. it->it_request is not cleared, and DISP_OPEN_OPEN is left set by both, so the guard here passes on a pointer the intent no longer owns.
ll_lookup_it() has also already done its own ptlrpc_req_put(req) by then, so the only remaining reference is the replay-list one. ptlrpc_free_committed() drops that as soon as the import generation moves (req->rq_import_generation < imp_generation -> ptlrpc_free_request()), i.e. on any reconnect/eviction/failover racing this open. And on a read-only export there is no replay-list reference at all: mdt_empty_transno() returns early for mdt_rdonly(), so rq_transno is 0, mdc_finish_enqueue() clears rq_replay, and after_reply() never retains the request -- the put in ll_file_open() is then the last one and the request is freed before we get here.
Same condition also breaks the rq_commit_cb guard: it is only installed when the open is replayable, so with rq_replay == 0 an och (or ll_release_openhandle()) owns the handle and this still sends a close for it.
Would also requiring it_disposition(it, DISP_ENQ_OPEN_REF) fix both? That bit tracks exactly "the intent still holds a reference and nobody has consumed the open handle", and it is still set on the paths this hunk is meant to catch (ll_lookup_it() errors, pcc_inode_create_fini() failure).
owner Oleg Drokin · uploader Oleg Drokin · PS5 uploaded 60d ago · NEW · open in Gerrit ↗
commit message
LU-6301 llite: clear rq_replay in ll_open_cleanup
ll_open_cleanup() closes the MDT-side handle of an open the client
abandoned after the MDT had granted it, but leaves the open request
itself replayable. Nothing ever clears rq_replay for such a request:
it has no och and therefore no mdc_commit_open() commit callback, so
once the transaction commits ptlrpc_free_committed() moves it to
imp_committed_list, where it stays -- pinning a reply buffer sized to
max_mds_easize, hundreds of KB with wide/PFL/DoM layouts -- until the
next reconnect. A workload that takes the open-error path often enough
grows that list without bound and can OOM the client.
Clear rq_replay before sending the close, exactly as mdc_close() does
for a normal close, and drop the request from the replay list with
ptlrpc_request_committed() afterwards, as mdc_free_open() does. Clearing
it after md_close() would be too late: after_reply() for the close runs
ptlrpc_free_committed() on the same import, and if the open has committed
by then the request is moved to imp_committed_list with rq_replay still
set -- and that list is only rescanned when the import generation changes.
Both happen even if op_data cannot be allocated and no close goes out,
since that is the low-memory case this is meant to help.
Make ll_open_cleanup() self-guarding while here. It takes the
lookup_intent instead of a req_capsule and does nothing unless
DISP_OPEN_OPEN is set, i.e. the MDT granted an open and the reply holds a
handle to release. Which reference on that reply it may use then depends
on how the open ended. With DISP_ENQ_OPEN_REF set the intent still owns
the reference mdc_finish_intent_lock() took, so it->it_request is safe.
Without it, and with the open itself successful, ll_file_open() or
ll_release_openhandle() has taken the handle over and cleared the bit; an
och owns the handle (and with it rq_early_free_repbuf) and the request
may already be freed -- on a non-replayable open, such as one against a
read-only export, mdc_finish_enqueue() clears rq_replay, nothing retains
the request, and their ptlrpc_req_put() was the last reference. Without
it and with the open failed, the bit was never set at all, because
mdc_finish_intent_lock() only sets it when it_open_error(DISP_OPEN_OPEN)
is zero; the MDT can install the mfd in mdt_finish_open() and then fail
the request in mdt_refetch_lovea(), and that handle still has to be
released. Nothing retains the reply there either -- mdt_reint_open()
zeroes the transno on error -- so the caller's own reference is the only
one, and callers that have one pass it in. ll_lookup_it_finish() and
ll_prep_inode() do; ll_atomic_open()'s out_release passes NULL, since
ll_lookup_it() has already dropped it by then. DISP_OPEN_OPEN is cleared
once the close has been issued, so a second cleanup of the same abandoned
open is a no-op; DISP_ENQ_OPEN_REF must survive for ll_intent_release()
to drop the reference.
ll_atomic_open() gains a cleanup call on out_release, which previously
only released the intent. That label is reached both by the error exits
and by the two finish_no_open() branches, which return 1 and leave the
VFS to open the dentry itself; either way the handle granted for this
intent is abandoned, and until now it leaked until umount or eviction.
It passes no request of its own, since ll_lookup_it() has already
dropped its reference by then, so it covers the intents that still carry
DISP_ENQ_OPEN_REF and not an open the MDT granted and then failed --
that one arrives here through ll_file_open()'s out_och_free with the bit
already clear, and freeing it would need ll_lookup_it() to hand the
reply reference back. As at the other two call sites, the intent lock is
dropped first, since the close waits for a mod RPC slot and holding the
lock across that wait can get the client evicted (LU-13101).
The leak is reachable today via ll_prep_inode() and
llcrypt_prepare_readdir() failures. It becomes
easy to hit with "LU-9868 llite: use d_splice_alias for directories",
which lets ll_splice_alias() fail with -ELOOP or -ESTALE where the
current d_add() cannot: a racing rename/create workload then drives
ll_lookup_it_finish() into this error path thousands of times per run.
Fixes: d2b203692e24 ("LU-6301 llite: cleanup open handle for client open failure")
Signed-off-by: Oleg Drokin <green@whamcloud.com>
Assisted-by: ClaudeCode:Opus-5 llm_code_and_review_tools
Change-Id: Iea44872f5507d829c1baa791ed179ee0f13f09c1
67385
master
J –B ✓T ✓R +3/2
LU-20232 build: dkms-deb should only build dkms packages
reviewing Timothy Day · you voted +1 on current PS
master-next
3 unresolved
S +19 −24
2d
LU-20232 build: dkms-deb should only build dkms packages
reviewing Timothy Day · you voted +1 on current PS
master-next
3 unresolved
S +19 −24
2d
build #134168 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Xiao Yang +1 · Minh +1
no vote yet: Shaun Tancheff, Patrick Farrell
patchsets:
PS1 07-20
PS2 08-25 Minh
PS3 10-07 Minh
PS4 10-21
threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (style) This isn't a bug, but if the patch is refreshed: the make target is `dkms-debs`, not `dkms-deb`. The target also still builds `lustr
Gerrit AI review for Lustre
(style) This isn't a bug, but if the patch is refreshed: the make target is `dkms-debs`, not `dkms-deb`. The target also still builds `lustre-source`, the module-assistant source package, which isn't a DKMS package. Something imperative like "build: build only arch-indep packages for dkms-debs" would describe the change more accurately.
reply Gerrit AI review for Lustre COMMIT_MSG:27 — (suggestion) Which testing exercises this? `testgroup=full-dkms` with the default distro runs on RHEL and installs from `make dkms-rpm`, so
Gerrit AI review for Lustre
(suggestion) Which testing exercises this? `testgroup=full-dkms` with the default distro runs on RHEL and installs from `make dkms-rpm`, so it never runs debian/rules or config/Makefile.dkms-deb. Is there an Ubuntu client distro option for full-dkms that could be added here? If not, it would help to note in the commit message that `make dkms-debs` was built and the resulting lustre-client-modules-dkms package was installed by hand.
reply Gerrit AI review for Lustre Makefile.dkms-deb:22 — (minor) KERNEL_OBJ and KERNEL_SRC are only read by the configure-stamp rule in debian/rules (`--with-linux=`/`--with-linux-obj=`), and that
Gerrit AI review for Lustre
(minor) KERNEL_OBJ and KERNEL_SRC are only read by the configure-stamp rule in debian/rules (`--with-linux=`/`--with-linux-obj=`), and that rule no longer runs for this target. The commit message dropped the systemd and int_o2ib settings for the same reason. If the patch is refreshed, could these two exports and the "Kernel Source/Object" echoes go too? As written, the output suggests the build kernel still matters for dkms-debs.
owner Timothy Day · uploader Timothy Day · PS4 uploaded 13d ago · NEW · open in Gerrit ↗
commit message
LU-20232 build: dkms-deb should only build dkms packages Make the lustre-client-modules-dkms package Architecture: all, since the DKMS package ships source and builds modules on the target host rather than shipping prebuilt binaries. Build only the arch-independent packages (source + DKMS) for the dkms-debs target by passing -g to dpkg-buildpackage, and trim the mv list to the packages that are actually produced. Neither package needs a configured or built tree: both ship the source as-is, and the UAPI headers the DKMS package installs are not generated. Copy them with dh_install instead of running a full "make install" into a temporary DESTDIR, which compiled the whole tree under fakeroot just to extract a few headers. With that, build-indep is empty, the source and DKMS binary rules no longer depend on configure-stamp, and the systemd and int_o2ib build profiles only consumed by configure are dropped from the dkms-debs target. Test-Parameters: trivial testgroup=full-dkms Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: I287da7cff8e743b84e7e5d7f1344bdcee325db1c
66647
master
J !B ✓T ✓R +2/2
LU-9639 ldlm: Add kernel doc style for LDLM (3)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
master-next
3 unresolved
L +206 −46
2d
LU-9639 ldlm: Add kernel doc style for LDLM (3)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
master-next
3 unresolved
L +206 −46
2d
janitor run: 5 failing config(s), none unique to this patch — janitor results
build #130208 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Timothy Day +1
no vote yet: Oleg Drokin
patchsets:
PS1 06-14
PS2 08-24 Oleg Drokin
PS3 08-25
your previous vote: +1 on PS1 (2026-07-30 19:02) — now at PS3
threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:15 — The body describes this as a kernel-doc conversion plus two corrected claims, but the diff also changes three lines in ldlm_setup() from GOT
Gerrit AI review for Lustre
The body describes this as a kernel-doc conversion plus two corrected claims, but the diff also changes three lines in ldlm_setup() from GOTO(out, -ENOMEM) to GOTO(out, rc = -ENOMEM). That is a behaviour change, not a comment change, and nothing in the message accounts for it. It is worth spelling out, because it is a real fix: GOTO() only logs its second argument, so with rc still 0 from the declaration the out: path ran ldlm_cleanup() (which frees ldlm_state and sets it NULL) and then returned 0. ldlm_get_ref() read that as success and left ldlm_refcount at 1, so the next ldlm_state deref (for example __ldlm_bl_to_thread() reading ldlm_state->ldlm_bl_pool) was on a NULL pointer. Could the body say what the three lines fix, or should the fix land as its own change?
reply Gerrit AI review for Lustre COMMIT_MSG:16 — Since the patch now fixes ldlm_setup() returning 0 on the kobject/kset failure paths, should it carry a Fixes: tag so the maintenance branch
Gerrit AI review for Lustre
Since the patch now fixes ldlm_setup() returning 0 on the kobject/kset failure paths, should it carry a Fixes: tag so the maintenance branches pick it up?
Fixes: 1196bd199e7c ("LU-8066 ldlm: move /proc/fs/lustre/ldlm to sysfs")
That commit added the three GOTO(out, -ENOMEM) sites along with the kobject/kset setup.
reply Gerrit AI review for Lustre ldlm_lockd.c:3546 — This and the two below are the only non-comment lines in the patch. The change itself is right - without the assignment rc stays 0 from the
Gerrit AI review for Lustre
This and the two below are the only non-comment lines in the patch. The change itself is right - without the assignment rc stays 0 from the declaration and ldlm_setup() reports success after ldlm_cleanup() has already torn everything down - but it belongs with a commit-message entry and a Fixes: tag rather than riding along with the kernel-doc conversion.
owner Arshad Hussain · uploader Arshad Hussain · PS3 uploaded 71d ago · NEW · open in Gerrit ↗
commit message
LU-9639 ldlm: Add kernel doc style for LDLM (3) Convert the descriptive function comments in ldlm_lockd.c to kernel-doc style, and drop '/**' from the two static-variable comments, which are not kernel-doc. Two long-standing claims are corrected while converting: the waiting-lock helpers work under waiting_locks_spinlock, not the namespace lock, and ldlm_server_glimpse_ast() neither waits for the reply nor updates the LVB itself. Test-Parameters: trivial Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Signed-off-by: Oleg Drokin <green@whamcloud.com> Assisted-by: ClaudeCode:Opus-5 llm_code_and_review_tools Change-Id: I8a1c827a7fd7f0638fd450ba4ffdf6a78e53fd70
66515
master
J ✗1B ✓T ✓R +2/2
LU-9639 ldlm: Add kernel doc style for LDLM (8)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
master-next
M +55 −16
2d
LU-9639 ldlm: Add kernel doc style for LDLM (8)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
master-next
M +55 −16
2d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity2@zfs:test_56a | seen in 45 other reviews |
1 optional test failure(s) — informational
build #126089 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Timothy Day +1
owner Arshad Hussain · uploader Arshad Hussain · PS1 uploaded 149d ago · NEW · open in Gerrit ↗
commit message
LU-9639 ldlm: Add kernel doc style for LDLM (8) This patch converts existing functional comments to kernel doc style comments and removes '/**' for comments which is not meant to be a kernel-doc comment Test-Parameters: trivial Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Change-Id: Ie72810f8dfacafcc70f898c59ddf7493a202b791
66209
master
J –B ✓T ✓R +1/2−
LU-20310 lod: fix remaining checkpatch.pl warnings
reviewing Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
M +157 −77
3d
LU-20310 lod: fix remaining checkpatch.pl warnings
reviewing Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
M +157 −77
3d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
you voted +1 on current PS
build #134613 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Arshad Hussain +1
no vote yet: Andreas Dilger
patchsets:
PS2 07-14
PS3 07-14
PS4 10-13
PS5 10-28 Arshad Hussain
PS6 10-28 Arshad Hussain
+1 earlier
PS1 05-27your previous vote: +1 on PS3 (2026-08-06 19:50) — now at PS6
owner Timothy Day · uploader Arshad Hussain · PS6 uploaded 7d ago · NEW · open in Gerrit ↗
commit message
LU-20310 lod: fix remaining checkpatch.pl warnings ... via checkpatch.pl --fix-inplace. Test-Parameters: trivial Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: I05eb56bf377e947e654de8424e5c0f47609975ec
69650
master
J –B ✓T ✓R +0/2−
LU-17916 sec: fix in-kernel fscrypt macros and blocksize
reviewing Sebastien Buisson · you voted -1 on current PS
CI@PS6
M +107 −6
4d
LU-17916 sec: fix in-kernel fscrypt macros and blocksize
reviewing Sebastien Buisson · you voted -1 on current PS
CI@PS6
M +107 −6
4d
build #134349 SUCCESS · tests all Maloo sessions
reviews:
James Simmons -1 · Andreas Dilger +1
no vote yet: Artem Blagodarenko, Timothy Day
patchsets:
PS3 10-14
PS4 10-19
PS5 10-20
PS6 10-23
PS7 10-27
+2 earlier
PS1 10-13 PS2 10-13build/test results are from PS6 — PS7…PS7 changed only the commit message (votes copied, CI not re-run)
owner Sebastien Buisson · uploader Sebastien Buisson · PS7 uploaded 8d ago · NEW · open in Gerrit ↗
commit message
LU-17916 sec: fix in-kernel fscrypt macros and blocksize
When Lustre is built with in-kernel fscrypt, LL_CRYPTO_BLOCK_SIZE
is defined as FS_CRYPTO_BLOCK_SIZE, which kernel 5.19 split into
FSCRYPT_CONTENTS_ALIGNMENT and an internal definition. It is the
AES block size, so define it as 16, as embedded llcrypt does.
Since the switch to struct folio, llcrypt_decrypt_pagecache_blocks()
takes a folio and a page offset in it, but the in-kernel fscrypt
mapping was still passing 3 arguments to
fscrypt_decrypt_pagecache_blocks(). That function took a page
before kernel 6.3, and was removed in kernel 7.3. Implement
llcrypt_decrypt_pagecache_blocks() with
fscrypt_decrypt_block_inplace(), available in all these kernels,
block by block, as fscrypt_decrypt_pagecache_blocks() does.
Also, llcrypt_encrypt_pagecache_blocks() takes and returns a folio,
and llcrypt_finalize_bounce_page() takes a folio pointer and a page
offset in it. With in-kernel fscrypt, implement both as wrappers
converting between folio and page.
The in-kernel fscrypt build still fails with kernels from 5.10,
which removed fscrypt_inherit_context().
Fixes: 51de594ed75a ("LU-17916 osc: switch to struct folio")
Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Assisted-by: Claude:claude-opus-5-5 ltvm
Change-Id: I035cf2348e13489d1e97edb7b844268cc1ab5b94
69833
master
J –B ✓T ✓R +0/2−
LU-20903 obdclass: fix stats key table overflow
reviewing patrick bot · you voted -1 on current PS
pw_own
M +47 −11
5d
LU-20903 obdclass: fix stats key table overflow
reviewing patrick bot · you voted -1 on current PS
pw_own
M +47 −11
5d
build #134242 SUCCESS · tests all Maloo sessions
reviews:
James Simmons -1 · Andreas Dilger +1
no vote yet: Arshad Hussain, Patrick Farrell, Timothy Day
patchsets:
PS1 10-20
PS2 10-21
PS3 10-22
tags: pw_own
owner patrick bot · uploader patrick bot · PS3 uploaded 13d ago · NEW · open in Gerrit ↗
commit message
LU-20903 obdclass: fix stats key table overflow
A Netlink stats request, which non-root lctl get_param uses
for exports stats, builds a key table that is two entries
larger than the buffer allocated for it. The table is
sized for LUSTRE_STATS_ATTR_MAX + ls_num - 1 keys, but
indices up to LUSTRE_STATS_ATTR_MAX + ls_num are written,
so 32 bytes are written past the end of the allocation.
Since lkl_maxattr is also one too large, the reply carried
a key for a dataset attribute that is never sent.
Size the table for all of its slots and set lkl_maxattr to
the last dataset attribute actually used. Also copy the
fixed keys one by one, since a struct assignment does not
copy the flexible array member and compilers differ in
whether they copy the keys anyway.
Add sanity 104e to run exports stats queries as a non-root
user against the MDS and OSS. It names each export, since
the Netlink source filter cannot glob over the dots of an
IPv4 NID.
Fixes: 5803284ac3a5 ("LU-11850 obd: use netlink to get lustre stats")
Assisted-by: ClaudeCode:claude-sonnet-5-5
Assisted-by: ClaudeCode:claude-opus-5-5
Signed-off-by: Patrick Farrell <patrick@thelustrecollective.com>
Change-Id: I0094d5b00d478777daeff1469968bc321103483b
69371
master
J !B ✓T ✓R +1/2−
LU-20847 lnetctl: peer show drops unknown peer msg
reviewing Cyril Bordage · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
3 unresolved
S +17 −0
5d
LU-20847 lnetctl: peer show drops unknown peer msg
reviewing Cyril Bordage · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
3 unresolved
S +17 −0
5d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
you voted -1 on current PS
janitor run: 3 failing config(s), none unique to this patch — janitor results
build #132693 SUCCESS · tests all Maloo sessions
reviews:
James Simmons -1 · Xinxia Qu +1 · Chris Horn +1 · Timothy Day +1
no vote yet: Manish Regmi
threads: 2 need your reply · 1 waiting on others · 0 own notes · 0 bot
reply Chris Horn COMMIT_MSG:9 — +1
Gerrit AI review for Lustre
(minor) If the patch is refreshed: the body describes the symptom only. Could it say how the fix works, i.e. yaml_lnet_peer_display() now returns 0 on a netlink reader error so yaml_lnet_peer() reports the kernel extack message? Also, the same non-list path handles `lnetctl peer add`, `peer del` and `peer set`, so kernel errors from those commands were also being dropped and are now printed. It would help to mention that too, since it is a user-visible change beyond `peer show`.
Chris Horn
+1
reply Gerrit AI review for Lustre COMMIT_MSG:11 — (minor) This looks like a regression from the LU-18083 change, which added `rc = -EINVAL` at out_err: in yaml_lnet_peer_display(). Before th
Gerrit AI review for Lustre
(minor) This looks like a regression from the LU-18083 change, which added `rc = -EINVAL` at out_err: in yaml_lnet_peer_display(). Before that, a failed yaml_parser_load() in the non-list branch returned 0, so yaml_lnet_peer() fetched the reader error and printed it through yaml_lnet_print_error(). After it, the -EINVAL skips that print. Should this carry:
Fixes: 9d78f39798 ("LU-18083 utils: handle more than one peer NI per peer")
owner Cyril Bordage · uploader Cyril Bordage · PS1 uploaded 33d ago · NEW · open in Gerrit ↗
commit message
LU-20847 lnetctl: peer show drops unknown peer msg "lnetctl peer show" of an unknown peer was dropping kernel error report. Test-parameters: trivial Signed-off-by: Cyril Bordage <cbordage@whamcloud.com> Change-Id: I0da574282f9e77c40b11ac33c82b8c4d71f5a8dd
68338
master
J –B ✓T ✗14R -2/2−
LU-19404 lnet: retry netlink dump on ENOBUFS
reviewing Minh · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
10 unresolved
M +97 −5
6d
LU-19404 lnet: retry netlink dump on ENOBUFS
reviewing Minh · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
10 unresolved
M +97 −5
6d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
you voted -1 on current PS
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-ipv6 | RHEL 9.8 / x86_64 | ran 4 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-part-2 | RHEL 9.7 / x86_64 | ran 11 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-part-5 | RHEL 9.7 / x86_64 | ran 5 tests. 1 tests failed: sanityn. | session |
| review-dne-subtest-change | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-zfs-part-2 | RHEL 9.8 / x86_64 | ran 11 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-zfs-part-2 | RHEL 10.1 / x86_64 | ran 11 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-zfs-part-4 | RHEL 10.1 / x86_64 | ran 9 tests. 1 tests failed: sanity-quota. | session |
| review-dne-zfs-subtest-change | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 9.8 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 10.1 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, SLES 15.7 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-arm | RHEL 8.10 / x86_64, Rocky 9.8 / aarch64 | ran 6 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 24.04 / x86_64 | ran 6 tests. 1 tests failed: sanity-lnet. | session |
build #134019 SUCCESS · tests all Maloo sessions
reviews:
James Simmons -1
no vote yet: Alexey Lyashkov, Serguei Smirnov, Andreas Dilger, Timothy Day
patchsets:
PS1 08-25
PS2 08-25
PS3 10-16
PS4 10-19
your previous vote: -1 on PS2 (2026-08-25 15:42) — now at PS4
threads: 8 need your reply · 1 waiting on others · 1 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (minor) Is LU-19404 the right ticket? It describes sanity-lnet test_50 failing in `lnetctl import` of `routing: enable` with errno -12 on an
Gerrit AI review for Lustre
(minor) Is LU-19404 the right ticket? It describes sanity-lnet test_50 failing in `lnetctl import` of `routing: enable` with errno -12 on an aarch64 64K-page client. test_50 now lowers the router buffer counts because the default pool needs about 1 GiB. That points to a real ENOMEM from router buffer allocation, not a dump ENOBUFS. This patch only adds retries to the `LNET_CMD_NETS` dump path, which an `import` doesn't use. Should this patch get its own LU ticket?
reply Andreas Dilger COMMIT_MSG:20 — do the large allocations not fall back to `OBD_ALLOC_LARGE()` (or `kvmalloc()` internally)?
Andreas Dilger
do the large allocations not fall back to `OBD_ALLOC_LARGE()` (or `kvmalloc()` internally)? James, I think this is another case where we _can't_ just keep increasing the size of the buffers allocated to hold everything in one read, and have to accept that the netlink data will be returned in smaller chunks in some cases.
reply Gerrit AI review for Lustre COMMIT_MSG:37 — (minor) Does fff650726b2b introduce this problem? It adds the `--nid` option and NI address handling for `net add`/`net del`. It doesn't tou
Gerrit AI review for Lustre
(minor) Does fff650726b2b introduce this problem? It adds the `--nid` option and NI address handling for `net add`/`net del`. It doesn't touch `cb->min_dump_alloc` or the reply error mapping.
The costly-order dump allocation comes from 8f64231185, which set `cb->min_dump_alloc = U16_MAX` for every net dump. b94f56769f (LU-20221) then made the size scale with the configured NIs. Something like this may fit better:
Fixes: 8f64231185 ("LU-9680 utils: fix nested attribute handling in liblnetconfig")
That also affects the "Since LU-20221 ..." paragraph. Before LU-20221 every node asked for a ~64KB skb, which is order 4 or higher. So LU-20221 made the allocation smaller for small configs and larger only for big ones. It didn't create the costly-order allocation.
reply Gerrit AI review for Lustre api-ni.c:6173 — (defect) Does this error ever reach lnetctl? Returning -ENOBUFS from the dumpit callback is not the same as an alloc_skb() failure. netlink_
Gerrit AI review for Lustre
(defect) Does this error ever reach lnetctl? Returning -ENOBUFS from the dumpit callback is not the same as an alloc_skb() failure. netlink_dump() puts the callback's return value into the NLMSG_DONE payload (dump_done_errno). It sets NLM_F_ACK_TLVS on that DONE only when netlink_ack_tlv_len() is non-zero, which needs an extack message, cookie, bad_attr, policy or miss_type. None of those are set here.
On the user side, libnl hands NLMSG_DONE to NL_CB_FINISH, so yaml_netlink_msg_complete() calls yaml_netlink_parse_msg_error(). That function only takes the error if
nlh->nlmsg_type == NLMSG_ERROR || nlh->nlmsg_flags & NLM_F_ACK_TLVS
Neither is true for this DONE, so the -ENOBUFS is dropped. The dump then looks complete and empty. yaml_parser_load() returns an empty document, yaml_emitter_dump() prints nothing, and yaml_lnet_config_ni() returns 0. yaml_lnet_dump_retry() is never called.
If that is right, test_306 fails in both halves. With fail_loc=0x8000e005, `net show -v` exits 0 with empty output, so the "net type:" check fails. With fail_loc=0xe005 it also exits 0, so "net show succeeded with every dump failing" fires.
One fix is to have yaml_netlink_parse_msg_error() also accept an NLMSG_DONE with a negative error. That would also stop other dump errors that have no extack text from being dropped silently. Another is to inject the failure where the real one happens, before any chunk is built. Adding NL_SET_ERR_MSG() here would make the error visible, but the extack text would replace "No buffer space available", so the test's string check would need to change too. The comment above also describes a different reporting path from the one this injection takes.
note James Simmons liblnetconfig_netlink.c:1089 — I disagree with the error handling change which has improved just recently. The current code return how Netlink sees it and errno so you can
James Simmons
I disagree with the error handling change which has improved just recently. The current code return how Netlink sees it and errno so you can use strerrno() as well. You seem to just want only strerro in this case. Why?
reply Gerrit AI review for Lustre lnetctl.c:2670 — (minor) Should `msg` be reset to NULL here as well? Suppose the first attempt fails with ENOBUFS and a retry then loads the reply, but `yaml
Gerrit AI review for Lustre
(minor) Should `msg` be reset to NULL here as well? Suppose the first attempt fails with ENOBUFS and a retry then loads the reply, but `yaml_emitter_dump()` fails. The `rc == 0` path then prints the previous attempt's "No buffer space available" and returns -EINVAL. That branch never assigns `msg`.
reply Gerrit AI review for Lustre sanity-lnet.sh:6289 — (suggestion) With only `INTERFACES[0]` configured, `lnet_net_show_start()` asks for about 2 * (NI_MSG_MIN_SIZE + NI_MSG_VALUES_SIZE), roughl
Gerrit AI review for Lustre
(suggestion) With only `INTERFACES[0]` configured, `lnet_net_show_start()` asks for about 2 * (NI_MSG_MIN_SIZE + NI_MSG_VALUES_SIZE), roughly 20KB, for 0@lo plus this NI. That is an order-3 allocation, which is not above PAGE_ALLOC_COSTLY_ORDER. GFP_KERNEL keeps retrying for it instead of failing, and on 64K-page nodes it is order 0. Changing discovery doesn't change the NI count either. So can this test ever hit ENOBUFS, with or without the fix? A deterministic trigger would be more useful. For example, a CFS_FAIL check in `lnet_net_show_dump()` that returns -ENOBUFS would come back to user space in NLMSG_DONE and exercise the retry. Another option is to configure many NIs the way test_113 does.
reply Andreas Dilger sanity-lnet.sh:6293 — (style) use `end=$((SECONDS + 30))` and `while (($SECONDS < $end))` to avoid an extra shell command each time
Andreas Dilger
(style) use `end=$((SECONDS + 30))` and `while (($SECONDS < $end))` to avoid an extra shell command each time
reply Chris Horn sanity-lnet.sh:6327 — FYI, I have a fix for this stack_trap issue - https://review.whamcloud.com/c/fs/lustre-release/+/70137
Andreas Dilger
Hmm, is this true? I don't think I've ever seen `stack_trap` being triggered from every subtest at the cleanup phase of the test script, or it would generate a ton of errors... I wonder if Claude hallucinated this because it was running the test script shell fragment directly instead of as part of the whole test script? If that **was** true, then we should fix `stack_trap` and not work around it inside each test script...
Chris Horn
I think it is true. stack_trap is not used in any sanity-lnet.sh test suite. IIRC, it was only a problem in janitor testing.
Chris Horn
FYI, I have a fix for this stack_trap issue - https://review.whamcloud.com/c/fs/lustre-release/+/70137
owner Minh · uploader Minh · PS4 uploaded 15d ago · NEW · open in Gerrit ↗
commit message
LU-19404 lnet: retry netlink dump on ENOBUFS
lnetctl net show -v and other DLC netlink dumps can fail
transiently with exit 234, empty output and a cYAML error of
"Out of memory" on a host with plenty of free memory. A rerun
succeeds.
Each dump chunk is built in an skb of at least cb->min_dump_alloc
bytes. lnet_net_show_start() set this to U16_MAX, an order-4
alloc_skb() on every node. LU-20221 sizes it from the configured
NIs instead, about 6.5KB per NI plus 3.5KB per net, so a node with
three or more NIs still needs order 4 and a large multi-rail
config needs far more. Above PAGE_ALLOC_COSTLY_ORDER these
allocations fail under memory fragmentation regardless of free
memory, and the kernel reports ENOBUFS: as an NLMSG_ERROR if the
first chunk fails, or as a socket error on recvmsg() if a later
one does. Neither can be resumed on that socket, because the
kernel only refills a dump from recvmsg() after a successful
dequeue, so only a new request recovers.
Retry the whole request on a fresh socket, bounded with
exponential backoff, when a dump fails with ENOBUFS or ENOMEM. The
retry is shared by yaml_lnet_config_ni() and yaml_lnet_route(),
the two dumps whose kernel side raises cb->min_dump_alloc. libnl
maps ENOBUFS to NLE_NOMEM, whose text is "Out of memory", so
report ENOBUFS as "No buffer space available" on both paths, and
return the real errno from yaml_lnet_config_ni() instead of
-EINVAL so the exit status, errno and message agree.
Add CFS_FAIL_NET_SHOW_DUMP to fail lnet_net_show_dump() with
-ENOBUFS, and sanity-lnet test_306 to check that lnetctl net show
retries a single failure and reports a persistent one.
Fixes: 8f64231185a9 ("LU-9680 utils: fix nested attribute handling in liblnetconfig")
TLC-bug-id: TLU-226
Signed-off-by: Minh Diep <mdiep@thelustrecollective.com>
Assisted-by: Claude:claude-opus-5
Change-Id: I6906afe6cca3f80b556152a94ed627d6b75631e9
54225
master
J –B ✓T ✓R +0/2−
LU-17594 ptlrpc: remove ptlrpc_connection hash table
reviewing Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
6 unresolved
L +273 −443
6d
LU-17594 ptlrpc: remove ptlrpc_connection hash table
reviewing Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
6 unresolved
L +273 −443
6d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
you voted +1 on current PS
build #133581 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1
no vote yet: Serguei Smirnov, Shaun Tancheff, Chris Horn, Andreas Dilger, Neil Brown, Mikhail Pershin
patchsets:
PS13 09-10 James Simmons
PS14 02-14 James Simmons
PS15 02-23 James Simmons
PS16 03-10 James Simmons
PS17 10-13
+12 earlier
PS1 02-29 PS2 02-29 PS3 03-01 PS4 05-24 PS5 05-24 PS6 06-20 PS7 07-24 James Simmons PS8 12-20 PS9 01-24 James Simmons PS10 02-14 James Simmons PS11 03-16 PS12 09-03 James Simmonsthreads: 6 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:14 — (style) The body describes the hash removal, but not three other changes in the diff:
Gerrit AI review for Lustre
(style) The body describes the hash removal, but not three other changes in the diff: - Lifetime: a connection is now freed on the last ptlrpc_connection_put(). Before, it stayed cached until ptlrpc_connection_fini(). This is the risky part of the change, and it is why imp_lock is now taken in ptl_send_rpc(), ptlrpc_register_bulk() and rev_import_reconnect(). - ptlrpc_send_reply() no longer does the get/put of the connection. - All of the PM-QoS code (kick_cpu_latency(), cpu_latency_work(), the per-CPU array setup and teardown, and the tunables, which become static) moves into lproc_ptlrpc.c. Could the body explain these, or could the PM-QoS move go into its own patch?
reply Gerrit AI review for Lustre ldlm_lib.c:1636 — (defect) This expands on the earlier comment about target_handle_connect() swapping export connections. Locking the swap in rev_import_recon
Gerrit AI review for Lustre
(defect) This expands on the earlier comment about target_handle_connect() swapping export connections. Locking the swap in rev_import_reconnect() covers the writer side, but most readers of these pointers still take neither exp_lock nor imp_lock. Each ptlrpc_connection_get() now returns a private object. So when a client reconnects from a different NID, the old connection has only two references: exp_connection and revimp->imp_connection. This put drops the first one, and the put of `old_conn` in rev_import_reconnect() drops the second and calls OBD_FREE_PTR(). Meanwhile, other threads can still be using the old pointer: - ptlrpcd: ldlm_cb_interpret() -> ldlm_handle_ast_error() reads `&req->rq_import->imp_connection->c_peer` on the reverse import, then later calls libcfs_nidstr(&peer->nid). AST failures are likely while the client is reconnecting. - MDT service thread, on another in-flight request for the same export: ucred_set_nid() reads `info->mti_exp->exp_connection` twice with no lock. - obd_nid_hash RCU lookups: nid_keycmp() and nid_keyhash() dereference exp->exp_connection->c_peer.nid. Before this patch these reads were safe, because the object stayed in conn_hash until module unload. Now they look like use-after-free. Should the old connection be kept alive until those readers are done (for example, freed via RCU), or should the readers take a reference or the lock?
reply Gerrit AI review for Lustre lproc_ptlrpc.c:1550 — (minor) This is pre-existing in the moved code, not introduced here. If the OBD_ALLOC_PTR() fails, this path returns with `latency_qos->lock
Gerrit AI review for Lustre
(minor) This is pre-existing in the moved code, not introduced here. If the OBD_ALLOC_PTR() fails, this path returns with `latency_qos->lock` still held. The next kick_cpu_latency() or cpu_latency_work() call for that CPU would then block forever. This could be fixed in a separate patch.
reply Chris Horn niobuf.c:649 — I suspect this might not be safe either. ptlrpc_connection_addref() is just an unchecked increment. Same thing is done under rev_import_reco
Chris Horn
I suspect this might not be safe either. ptlrpc_connection_addref() is just an unchecked increment. Same thing is done under rev_import_reconnect(). Export connections can be swapped and old ones dropped in target_handle_connect() (ldlm_lib.c:1604-1615. Since connections are now freed immediately when ref reaches zero, I think this becomes another potential use-after-free in both the reply handling and revert-import reconnect paths.
reply Chris Horn niobuf.c:806 — Do we need a reference here since connection is dereferenced below (line 915)? I'm concerned this could race with the connection being repla
Chris Horn
Do we need a reference here since connection is dereferenced below (line 915)? I'm concerned this could race with the connection being replaced in import_select_connection(). If I'm right then is potentially use-after-free.
reply Gerrit AI review for Lustre niobuf.c:357 — (suggestion) This isn't a bug, but ptl_send_rpc() already holds a reference on `connection` when it calls this. Taking imp_lock here a secon
Gerrit AI review for Lustre
(suggestion) This isn't a bug, but ptl_send_rpc() already holds a reference on `connection` when it calls this. Taking imp_lock here a second time adds a lock round-trip to every bulk RPC. It can also, in principle, pick up a different peer than the one the request is sent to. Could the caller pass `&connection->c_peer` (or the connection itself) into ptlrpc_register_bulk() instead?
owner Timothy Day · uploader Timothy Day · PS17 uploaded 21d ago · NEW · open in Gerrit ↗
commit message
LU-17594 ptlrpc: remove ptlrpc_connection hash table With the removal of c_remote_uuid and c_self, it's clear that the hash table in connection.c is simply mapping a lnet_processid to itself. We can remove the hash table entirely. With this change, ptlrpc_connection becomes a ref counted lnet_processid. In the future, we may be able to remove ptlrpc_connection entirely. Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: I9665fb321e961be308bd18327fca0efe2b57c01b
69658
master
J –B ✓T ✓R -1/2−
LU-17916 osc: encrypt by copy with in-kernel fscrypt
reviewing Sebastien Buisson · you voted -1 on current PS
CI@PS6
L +158 −94
7d
LU-17916 osc: encrypt by copy with in-kernel fscrypt
reviewing Sebastien Buisson · you voted -1 on current PS
CI@PS6
L +158 −94
7d
build #134554 SUCCESS · tests all Maloo sessions
reviews:
James Simmons -1
no vote yet: Andreas Dilger
patchsets:
PS3 10-19
PS4 10-20
PS5 10-23
PS6 10-27
PS7 10-28
+2 earlier
PS1 10-13 PS2 10-14build/test results are from PS6 — PS7…PS7 changed only the commit message (votes copied, CI not re-run)
owner Sebastien Buisson · uploader Sebastien Buisson · PS7 uploaded 7d ago · NEW · open in Gerrit ↗
commit message
LU-17916 osc: encrypt by copy with in-kernel fscrypt
With in-kernel fscrypt, osc_encrypt_pagecache_blocks() is mapped to
fscrypt_encrypt_pagecache_blocks(). That function cannot encrypt a
direct IO page: it takes the inode and file index from a locked page
cache folio, whereas a direct IO folio is part of the user buffer,
and it is not locked for encryption.
In-kernel fscrypt does not export a function to encrypt out of
place at a given inode and file index. So copy the clear text into a
bounce folio from the OSC pool, and encrypt it in place there with
fscrypt_encrypt_block_inplace(), for all pages. This costs a copy
of each page, which embedded llcrypt avoids by encrypting into the
bounce folio directly. Get bounce folios from the pool with
in-kernel fscrypt too, and save the source folio in the private
data of the bounce folio, to get it back in
osc_finalize_bounce_page().
Lustre no longer uses fscrypt bounce pages, so it opts out of the
fscrypt mempool.
Calling fscrypt_encrypt_pagecache_blocks() for page cache folios
would save the copy, but would cost more than it saves:
- it allocates its own bounce page from the fscrypt mempool, page
by page. The mempool reserves 32 pages by default, shared by all
filesystems, whereas an RPC is typically 1024 pages, and up to
16384. Under memory pressure, each allocation goes to direct
reclaim, from the thread that prepares an RPC to write dirty pages
back, or waits for a page to return to the mempool. But bounce pages
only return when RPCs complete, and an RPC being prepared keeps the
ones it already got, so RPCs prepared concurrently can exhaust the
reserve and end up waiting for each other. Moreover, an RPC cannot
be sent before all its pages are encrypted.
- it needs the folio to be locked while it runs, so
osc_brw_prep_request() would have to call folio_trylock(), and
still copy when another thread holds the lock.
On the other hand, the copy is small compared to the encryption.
On a simple test system, copying 4KiB takes 30 to 80ns, and encrypting
300 to 500ns.
The wrappers of fscrypt_encrypt_pagecache_blocks() and
fscrypt_finalize_bounce_page() are no longer used, so remove them
along with LC_FSCRYPT_ENCRYPT_PAGECACHE_BLOCKS_FOLIO.
Without client encryption support, osc_encrypt_pagecache_blocks()
used to map to the stub of llcrypt_encrypt_pagecache_blocks(), so make
it a stub that returns -EOPNOTSUPP.
Add LC_FSCRYPT_ENCRYPT_BLOCK_INPLACE_NO_GFP, as kernel 6.17 removed
the gfp_t argument of fscrypt_encrypt_block_inplace().
Lastly, identifying a bounce folio requires testing there is no
mapping and the source folio is in the private data, in addition to
PG_checked as this value is also PG_swapcache.
Fixes: f3fe144b8572 ("LU-15003 sec: use enc pool for bounce pages")
Fixes: 51de594ed75a ("LU-17916 osc: switch to struct folio")
Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Assisted-by: Claude:claude-opus-5-5 ltvm
Change-Id: Ib1d1ac8e17a3ba65a7b4d4c3e65bd6d5ff6b2b38
68022
master
J –B ✓T ✗13R -2/2−
LU-20587 lnet: fix NULL pointer deref in lnet_peer_ni_show_dump
reviewing Andrew Perepechko · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
14 unresolved
L +423 −117
13d
LU-20587 lnet: fix NULL pointer deref in lnet_peer_ni_show_dump
reviewing Andrew Perepechko · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
14 unresolved
L +423 −117
13d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
you voted -1 on current PS
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-ipv6 | RHEL 9.8 / x86_64 | ran 4 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-part-2 | RHEL 9.7 / x86_64 | ran 11 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-part-4 | RHEL 10.1 / x86_64 | ran 9 tests. 1 tests failed: sanity-hsm. | session |
| review-dne-subtest-change | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-zfs-part-2 | RHEL 9.8 / x86_64 | ran 11 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-zfs-part-2 | RHEL 10.1 / x86_64 | ran 11 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-zfs-subtest-change | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 9.8 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 10.1 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, SLES 15.7 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-arm | RHEL 8.10 / x86_64, Rocky 9.8 / aarch64 | ran 6 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 24.04 / x86_64 | ran 6 tests. 1 tests failed: sanity-lnet. | session |
build #134047 SUCCESS · tests all Maloo sessions
reviews:
James Simmons -1
no vote yet: Alexey Lyashkov, Alexander Zarochentsev
patchsets:
PS9 08-24
PS10 08-24
PS11 10-19
PS12 10-19
PS13 10-19
+8 earlier
PS1 08-14 PS2 08-14 PS3 08-15 PS4 08-16 PS5 08-17 PS6 08-18 PS7 08-18 PS8 08-24your previous vote: -1 on PS7 (2026-08-18 20:12) — now at PS13
threads: 11 need your reply · 3 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:13 — (defect) This fixes a crash, so it should carry a Fixes: tag. The unchecked nla_nest_start()/nla_put_*() calls in lnet_peer_ni_show_dump() a
Gerrit AI review for Lustre
(defect) This fixes a crash, so it should carry a Fixes: tag. The unchecked nla_nest_start()/nla_put_*() calls in lnet_peer_ni_show_dump() arrived with the original Netlink conversion:
Fixes: f0be00678cc8 ("LU-9680 lnet: collect data about peer_ni by using Netlink")
reply Gerrit AI review for Lustre COMMIT_MSG:14 — (style) This isn't a bug, but Change-Id: normally sits after Signed-off-by:. Having it first usually means the Lustre commit hooks aren't in
Gerrit AI review for Lustre
(style) This isn't a bug, but Change-Id: normally sits after Signed-off-by:. Having it first usually means the Lustre commit hooks aren't installed.
reply Gerrit AI review for Lustre COMMIT_MSG:31 — (style) This paragraph reads like a changelog against earlier patchsets ("Only mark ... once", "Tighten test_630 to expect exactly one heade
Gerrit AI review for Lustre
(style) This paragraph reads like a changelog against earlier patchsets ("Only mark ... once", "Tighten test_630 to expect exactly one header"). The commit message should describe the change against master. If it is refreshed, consider folding these points into the paragraphs above, e.g. state once that the 'peer' header and key table are emitted once per dump, and list what test_630 checks.
reply Gerrit AI review for Lustre api-ni.c:8149 — (defect) lnet_udsp_info_send() is left on the unchecked path. It ignores nla_nest_start() returning NULL and then runs
Gerrit AI review for Lustre
(defect) lnet_udsp_info_send() is left on the unchecked path. It ignores nla_nest_start() returning NULL and then runs
nla_nest_end(msg, udsp_attr);
nla_nest_end(msg, udsp_info);
at the end of the function, which writes through the NULL start pointer. It also returns 0 on a full skb, so rc here cannot distinguish that from success.
`lnetctl peer show -v 4` sets gnlh->version to 4 and reaches this, so the oops named in the subject still looks reachable from lnet_peer_ni_show_dump().
reply Gerrit AI review for Lustre api-ni.c:8190 — (minor) The -ENOMEM branch here still leaves a half-built message in the skb.
Gerrit AI review for Lustre
(minor) The -ENOMEM branch here still leaves a half-built message in the skb. By this point genlmsg_put() has run and PRIMARY_NID / the nest headers / the peer NI string have been appended, so skb->tail is past the nlmsg_len that genlmsg_put() wrote. Going straight to unlock_api_mutex without genlmsg_cancel() leaves that short header followed by orphan attribute bytes; netlink then appends NLMSG_DONE after them, and a NLMSG_NEXT walk from the short header lands in the middle of the leftovers. The new EMSGSIZE branch above cancels, so it would be consistent for this one to cancel too before returning.
reply Gerrit AI review for Lustre api-ni.c:8173 — (defect) lgpl_hdr_sent is set as soon as the attribute is appended, but the message it lives in can still be rolled back.
Gerrit AI review for Lustre
(defect) lgpl_hdr_sent is set as soon as the attribute is appended, but the message it lives in can still be rolled back.
Every `goto msg_full` below reaches `genlmsg_cancel(msg, hdr)`, which trims the skb back past LNET_PEER_NI_ATTR_HDR. The flag stays true, so when this peer is retried against the fresh skb the attribute is not emitted again - and no later entry emits it either.
The first entry is the one most exposed. lnet_peer_ni_show_start() never sets cb->min_dump_alloc (lnet_net_show_start() sets U16_MAX), so the first skb is NLMSG_GOODSIZE, and the ~65 keys in all[] have already consumed most of it before the loop starts. A version-4 peer with two or three peer NIs then overflows partway through this entry.
On the tools side that attribute is exactly what stops the header repeating - liblnetconfig_netlink.c clears keys[1].lkp_value ("peer") only via
if (attr && parent->lkp_value) {
free(parent->lkp_value);
parent->lkp_value = nla_strdup(attr);
}
so if it never arrives, `strlen(keys[1].lkp_value)` stays non-zero and "peer:" is printed once per netlink message instead of once per dump.
Would setting the flag after genlmsg_end() succeeds, or clearing it in msg_full when this iteration set it, keep it tied to what actually reached user space?
reply Misc Code Checks Robot (Gatekeeper helper) api-ni.c:6505 — warn: lnet_net_show_dump():inconsistent indenting
Misc Code Checks Robot (Gatekeeper helper)
warn: lnet_net_show_dump():inconsistent indenting
reply Misc Code Checks Robot (Gatekeeper helper) api-ni.c:6521 — warn: lnet_net_show_dump():inconsistent indenting
Misc Code Checks Robot (Gatekeeper helper)
warn: lnet_net_show_dump():inconsistent indenting
reply Gerrit AI review for Lustre api-ni.c:6348 — (defect) Can this new -EMSGSIZE return make `lnetctl net show -v 4` loop forever?
Gerrit AI review for Lustre
(defect) Can this new -EMSGSIZE return make `lnetctl net show -v 4` loop forever?
lnet_net_show_dump() can't resume. The key table is already in the skb (genlmsg_end()), so genlmsg_cancel(msg, hdr) leaves skb->len > 0. netlink_dump() then turns the error into "more to dump":
if (nlk->dump_done_errno == -EMSGSIZE && skb->len)
nlk->dump_done_errno = skb->len;
and calls ->dumpit() again. GOTO(net_unlock) skips `nlist->lngl_idx = idx`, so the next call starts from the same index. It resends the key table and the same NIs and overflows at the same place. lnetctl keeps receiving duplicate data and growing its YAML buffer.
The lnet_udsp_info_send() path below now passes -EMSGSIZE through the same way; it used to be reported as -ENOMEM. The existing `!hdr` path has the same issue, but that predates this patch.
The rest of this function still uses nla_nest_start() unchecked (send/recv/drop/health/tunables), so a full skb can still crash here. Should lnet_net_show_dump() either get the same msg_full/resume handling as the peer dump, or return an error that isn't -EMSGSIZE until it does?
reply Gerrit AI review for Lustre api-ni.c:8237 — (minor) The list this checks against is lgpl_list, the peer NID list built in lnet_peer_ni_show_start(), not the key list (the key table fro
Gerrit AI review for Lustre
(minor) The list this checks against is lgpl_list, the peer NID list built in lnet_peer_ni_show_start(), not the key list (the key table from lnet_genl_send_scalar_list()). The window also isn't new: ln_api_mutex is already dropped between ->start() and the first ->dumpit(). If the patch is refreshed, consider rewording, e.g. "present when lnet_peer_ni_show_start() built lgpl_list".
reply Gerrit AI review for Lustre api-ni.c:8338 — (style) This isn't a bug, but copying an atomic_t by plain struct assignment skips atomic_read(). It is an unannotated racy read of a counte
Gerrit AI review for Lustre
(style) This isn't a bug, but copying an atomic_t by plain struct assignment skips atomic_read(). It is an unannotated racy read of a counter that other threads update, and KCSAN would flag it. The atomic_read(&remote_dropped) on the local copy then reads nothing shared. If the goal is only shorter lines, consider:
u32 remote_dropped = atomic_read(&lpni->lpni_hstats.hlt_remote_dropped);
The same applies to remote_timeout, remote_error and network_timeout.
owner Andrew Perepechko · uploader Andrew Perepechko · PS13 uploaded 15d ago · NEW · open in Gerrit ↗
commit message
LU-20587 lnet: fix NULL pointer deref in lnet_peer_ni_show_dump
lnet_peer_ni_show_dump() left several nla_nest_start()/nla_put_*()
return values unchecked, so a full reply skb caused a NULL pointer
dereference instead of being handled. Check every call and roll back/
retry on a fresh skb instead of crashing. Apply the same treatment to
lnet_udsp_info_send()/lnet_nl_put_latency(), and let the dump skip a
peer that got deleted mid-dump instead of aborting the whole listing.
On the userspace side, fix the YAML output buffer in
liblnetconfig_netlink.c, which the same verbose 'peer show' dumps can
overflow. yaml_netlink_msg_parse() only reserves a small amount of
headroom between messages, but a single message can expand into
several KiB of YAML. Add yaml_netlink_input_grow() to realloc the
buffer on demand (rebasing the buffer/read pointers and resyncing
*size to the real free space) and call it in yaml_parse_value_list()
before writing each key, sizing the request for the indent, the key
name, the scalar value and separators, so a message can never write
past data->end and corrupt the heap. Also fix the free-space
accounting after emitting a line to decrement *size by the bytes
written instead of incrementing it.
Add sanity-lnet test_630 to exercise a multi-skb peer dump.
Only mark the once-per-dump 'peer' header as sent once the message
carrying it is finalized: a msg_full rollback cancels the attribute
along with the partial entry, so the flag must not suppress it on the
retry. On the tools side, report a failed realloc in
yaml_parse_value_list() like yaml_netlink_msg_parse() does instead of
printing a truncated YAML document and exiting 0, and fix the
free-space accounting when the buffer pointer moves back. Tighten
test_630 to expect exactly one header, check the primary-nid count,
and clean up peers and output on failure.
Fixes: f0be00678cc8 ("LU-9680 lnet: collect data about peer_ni by using Netlink")
HPE-bug-id: LUS-13452
Signed-off-by: Andrew Perepechko <andrew.perepechko@hpe.com>
Change-Id: I24688de6f0a001943f2de6241b60bce567e29176
60112
master
J ✗16B ✓T ✗15R -2/2−
LU-19167 lnet: add corrupt fault injection
reviewing Manish Regmi · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; janitor: test failures unique to this patch; enforced tests failed
needs rebase
16 unique failures
9 unresolved
L +935 −11
13d
LU-19167 lnet: add corrupt fault injection
reviewing Manish Regmi · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; janitor: test failures unique to this patch; enforced tests failed
needs rebase
16 unique failures
9 unresolved
L +935 −11
13d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; janitor: test failures unique to this patch; enforced tests failed
you voted -1 on current PS
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-lnet@ldiskfs+DNE:test_450 | seen in 6 other reviews |
| sanity-lnet@ldiskfs+DNE:test_475 | seen in 2 other reviews |
| sanity-lnet@ldiskfs+DNE:test_476 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-lnet@ldiskfs+DNE:test_500 | seen in 8 other reviews |
| sanity-lnet@ldiskfs+DNE:test_501 | seen in 7 other reviews |
| sanity-lnet@ldiskfs+DNE:test_502 | seen in 7 other reviews |
| sanity-lnet@ldiskfs+DNE:test_525 | seen in 2 other reviews |
| sanity-lnet@ldiskfs+DNE:test_617 | seen in 7 other reviews |
| sanity-lnet@zfs:test_450 | seen in 7 other reviews |
| sanity-lnet@zfs:test_475 | seen in 2 other reviews |
| sanity-lnet@zfs:test_476 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-lnet@zfs:test_500 | seen in 9 other reviews |
| sanity-lnet@zfs:test_501 | seen in 8 other reviews |
| sanity-lnet@zfs:test_502 | seen in 8 other reviews |
| sanity-lnet@zfs:test_525 | seen in 2 other reviews |
| sanity-lnet@zfs:test_617 | seen in 8 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-ipv6 | RHEL 9.8 / x86_64 | ran 4 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-part-2 | RHEL 9.7 / x86_64 | ran 11 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-part-5 | RHEL 9.7 / x86_64 | ran 5 tests. 1 tests failed: sanityn. | session |
| review-dne-subtest-change | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-zfs-part-2 | RHEL 9.8 / x86_64 | ran 11 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-zfs-part-2 | RHEL 10.1 / x86_64 | ran 11 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-zfs-part-4 | RHEL 9.8 / x86_64 | ran 9 tests. 1 tests failed: sanity-quota. | session |
| review-dne-zfs-subtest-change | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 9.8 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 10.1 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, SLES 15.7 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-arm | RHEL 8.10 / x86_64, Rocky 9.8 / aarch64 | ran 6 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 24.04 / x86_64 | ran 6 tests. 1 tests failed: sanity-lnet. | session |
build #132531 SUCCESS · tests all Maloo sessions
reviews:
James Simmons -1
no vote yet: Serguei Smirnov, Chris Horn, Andreas Dilger, Oleg Drokin
patchsets:
PS10 08-06
PS11 08-06
PS12 08-07
PS13 09-02
PS14 09-29
+9 earlier
PS1 07-09 PS2 07-09 PS3 07-10 PS4 07-13 Andreas Dilger PS5 09-10 PS6 09-19 PS7 08-05 PS8 08-05 PS9 08-05your previous vote: -1 on PS6 (2026-05-24 14:27) — now at PS14
threads: 7 need your reply · 1 waiting on others · 1 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:15 — (style) This isn't a bug, but the house style is to quote command names in backticks (`lnetctl fault corrupt add`, `del`, `show`, `reset`).
Gerrit AI review for Lustre
(style) This isn't a bug, but the house style is to quote command names in backticks (`lnetctl fault corrupt add`, `del`, `show`, `reset`). If the message is touched again, the new entry points (lnet_corrupt_rule_add(), lnet_corrupt_rule_match_and_corrupt() called from lnet_finalize()) could also be named so they can be found with git log.
reply Manish Regmi patchset comment — I added lnetctl commands together with Netlink support and also removed ipv4 specific logic to make it ipv6 friendly. I have not removed the
James Simmons
I few issues. 1) Don't add new fault injection to lctl. Instead add it to lnetctl 2) No new ioctls. You need to update lnet_fault_cmd() and friends in api.c instead. The Netlink interface is IPv6 freindly. Can you tell me what the YAML net fault looks like? I can help you with this.
Manish Regmi
I added lnetctl commands together with Netlink support and also removed ipv4 specific logic to make it ipv6 friendly. I have not removed the ioctl and lctl commands yet as it can be used as fallback.
reply Manish Regmi lnetctl.8:524 — Added Thanks
Gerrit AI review for Lustre
(style) This isn't a bug, but the fonts in the new synopsis are inconsistent: `-r` and `-i` are bold while `-s`, `-d`, `-z`, `-f`, `-n`, `-m`, `-p` and `-o` are plain, and the placeholders are lowercase italic. man-pages(7) style (and the rest of Documentation/man8) is bold for the option including its dashes and italic uppercase for the value, e.g. `\fB\-s\fR \fISRC\fR`.
Andreas Dilger
This would have been flagged by `checkpatch-man.pl` before push if you have the Git commit hooks installed: ``` cd .git/hooks ln -sf ../../contrib/git-hooks/*commit-msg . cd - ```
Manish Regmi
Added Thanks
reply Gerrit AI review for Lustre lnetctl.8:540 — (minor) This reads as if a portal selector simply has no effect on REPLY, but it actually removes REPLY from the rule. lnet_fault_attr_valid
Gerrit AI review for Lustre
(minor) This reads as if a portal selector simply has no effect on REPLY, but it actually removes REPLY from the rule. lnet_fault_attr_validate() narrows fa_msg_mask to GET|PUT as soon as fa_ptl_mask is non-zero, and lnet_corrupt_rule_add() then masks with PUT|REPLY, so PUT is all that is left. So `-p 52` with no `-m` gives a PUT-only rule even though the previous sentence says both are selected by default, and `-m REPLY -p 52` is rejected outright - lnetctl just prints "failed to add corrupt rule: Invalid argument" with no hint about which option caused it. Could the text say that specifying a portal restricts the rule to PUT?
reply Gerrit AI review for Lustre lnetctl.8:556 — (minor) Lustre man pages are expected to carry an EXAMPLES entry for each major way of using a sub-command, and lnetctl.8 already has that p
Gerrit AI review for Lustre
(minor) Lustre man pages are expected to carry an EXAMPLES entry for each major way of using a sub-command, and lnetctl.8 already has that pattern at the end of the page for udsp. Could a short example be added here for the two scheduling modes, e.g. a rate rule
lnetctl fault corrupt add -s 10.0.0.1@tcp -d 10.0.0.2@tcp -r 100 -z 8 -f 4096 -m PUT -p 52
and an interval rule? The offset/offset_range/size interaction is hard to infer from the prose alone.
note James Simmons net_fault.c:1595 — No ioctl!!!! This is not IPv6 friendly. You need to update lnet_fault_cmd() in api.c instead.
James Simmons
No ioctl!!!! This is not IPv6 friendly. You need to update lnet_fault_cmd() in api.c instead.
reply Gerrit AI review for Lustre net_fault.c:1554 — (defect) Does REPLY corruption ever fire on o2iblnd, kfilnd, gnilnd or efalnd for a GET whose reply is moved by RDMA?
Gerrit AI review for Lustre
(defect) Does REPLY corruption ever fire on o2iblnd, kfilnd, gnilnd or efalnd for a GET whose reply is moved by RDMA? Those LNDs build the REPLY with lnet_create_reply_msg(), not lnet_parse_reply(). That message comes from kmem_cache_zalloc() and only gets msg_hdr.src_nid and payload_length set: - msg_hdr.type stays 0 (LNET_MSG_ACK) - msg_kiov stays NULL, because lnet_setpayloadbuffer() is never called - msg_rxni stays NULL lnet_finalize() still passes the outer check (msg_rx_committed, msg_md and LNET_EVENT_REPLY are all set). This early return then drops the message on all three conditions. The result is that `-m REPLY` only works for socklnd and for small IMMEDIATE replies. On o2ib, a GET larger than IBLND_MSG_SIZE is never corrupted, and with `-f 4096` no o2ib REPLY is eligible at all. The man page and commit message don't mention this limit. The `reply write REPLY` case in sanity-lnet test_411 expects errors, so it should fail when NETTYPE is o2ib. One possible fix: key off msg_ev.type instead of msg_hdr.type. For the optimized reply, take the buffer from msg_md->md_kiov/md_niov and the length from msg_ev.mlength (set by lnet_set_reply_msg_len()), and treat a missing local NID as "any".
reply Gerrit AI review for Lustre Makefile.am:44 — (minor) corrupt-fault.sh is added to noinst_SCRIPTS but not to lustre/tests/test-groups/regression, so once `Test-Parameters: testlist=corru
Gerrit AI review for Lustre
(minor) corrupt-fault.sh is added to noinst_SCRIPTS but not to lustre/tests/test-groups/regression, so once `Test-Parameters: testlist=corrupt-fault` has run for this change the new suite will not be picked up by any of the standard sessions again. Since the subtests are LNet-selftest based, would it be simpler to add them to sanity-lnet.sh, which is already in the regression group, or to add corrupt-fault to that list?
owner Manish Regmi · uploader Manish Regmi · PS14 uploaded 35d ago · NEW · open in Gerrit ↗
commit message
LU-19167 lnet: add corrupt fault injection Add a receive-side LNet fault rule that corrupts bytes in completed PUT and REPLY payloads before upper-layer completion. Rules can match source, destination, local NID, portal, and message type. They support rate- or interval-based scheduling and select the corruption offset, range, and size. Manage corrupt rules with lnetctl fault corrupt add, del, show, and reset over generic netlink. Document the commands in lnetctl(8), and add coverage to the regular sanity-lnet test suite. Assisted-by: Codex:5.6-Sol Test-Parameters: testlist=sanity-lnet env=ONLY=411 Signed-off-by: Manish Regmi <mregmi@ddn.com> Change-Id: Ib4972807a48c185043f335d030d266ed3cad7e1e
58613
master
J –B ✓T ✓R -2/2−
LU-18876 build: copy-builtin
reviewing Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
copy-builtin
37 unresolved
L +760 −54
20d
LU-18876 build: copy-builtin
reviewing Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
copy-builtin
37 unresolved
L +760 −54
20d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
you voted -1 on current PS
build #131625 SUCCESS · tests all Maloo sessions
reviews:
James Simmons -1
no vote yet: Shaun Tancheff, Neil Brown, Sebastien Buisson, Andreas Dilger
patchsets:
PS10 06-08 James Simmons
PS11 07-07
PS12 07-07
PS13 07-10
PS14 09-11
+9 earlier
PS1 03-31 PS2 03-31 PS3 04-01 PS4 04-02 PS5 08-29 PS6 12-12 PS7 05-05 PS8 05-12 PS9 05-31your previous vote: -1 on PS12 (2026-07-07 18:44) — now at PS14
threads: 10 need your reply · 16 waiting on others · 11 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:15 — (style) The body only describes the new script, but roughly half the diff is a build-system conversion that isn't mentioned: every `obj-m` b
Gerrit AI review for Lustre
(style) The body only describes the new script, but roughly half the diff is a build-system conversion that isn't mentioned: every `obj-m` becoming `obj-$(CONFIG_*)`, the new Kconfig files, the `CONFIG_LNET_O2IBLND` -> `CONFIG_LNET_XPRT_IB` rename, the new `LUSTRE_OOT_BUILD` gate around the `lustre_compat` objects in lnet/libcfs/Makefile, and the `zfs_incdir`/`spl_incdir` restructure in lustre/osd-zfs/Makefile. Those all change the out-of-tree build, so it would help to say what changed and why. The `CBI_WITH_O2IB`/`CBI_WITH_GNI`/`CBI_WITH_KFI`/`CBI_WITH_EFA`/`CBI_WITH_LDISKFS`/`CBI_WITH_ZFS` knobs the script introduces are also worth naming here, since they are the only way to get anything beyond ksocklnd/wbcfs.
reply Timothy Day patchset comment — Ping Andreas, James, Shaun
Timothy Day
Ping Andreas, James, Shaun
note James Simmons Makefile.exports.in:95 — To keep with history of upstream CONFIG_LNET_XRPT_IB ?
James Simmons
To keep with history of upstream CONFIG_LNET_XRPT_IB ?
reply Gerrit AI review for Lustre Makefile.exports.in:97 — (defect) This line makes the in-kernel LND get built in configurations where it previously wasn't, and I think it breaks `make modules`.
Gerrit AI review for Lustre
(defect) This line makes the in-kernel LND get built in configurations where it previously wasn't, and I think it breaks `make modules`.
`lnet/klnds/Makefile` uses the same symbol for the in-kernel tree:
obj-$(CONFIG_LNET_XPRT_IB) += in-kernel-o2iblnd/
Previously that was `CONFIG_LNET_O2IBLND`, exported only under `@BUILT_IN_KO2IBLND_TRUE@`. Now `EXTERNAL_KO2IBLND=yes, BUILT_IN_KO2IBLND=no` also sets it, and that combination is reachable — config/lustre-lnet.m4 forces `BUILT_IN_KO2IBLND="no"` when MOFED is found without `--enable-multiple-lnds`, and again when the kernel has no usable in-kernel rdma headers.
In that configuration `lnet/klnds/in-kernel-o2iblnd/` holds only a Makefile; its sources are generated by `make sources -C lnet/klnds/in-kernel-o2iblnd`, which the top-level Makefile drives from `SOURCE_SUBDIRS := $(LUSTRE_BUILT_IN_KO2IBLND_NT) ...` — empty here. So `__modules` descends into a directory whose `ko2iblnd-objs` have no .c files and no kbuild rule to make them.
Would it work to keep a separate symbol for the in-kernel tree (only under `@BUILT_IN_KO2IBLND_TRUE@`) and use `CONFIG_LNET_XPRT_IB` just for `lnet/klnds/o2iblnd/`?
reply Gerrit AI review for Lustre copy-builtin:89 — (minor) `CBI_WITH_O2IB`, `CBI_WITH_GNI`, `CBI_WITH_KFI`, `CBI_WITH_EFA`, `CBI_WITH_LDISKFS` and `CBI_WITH_ZFS` are the script's whole config
Gerrit AI review for Lustre
(minor) `CBI_WITH_O2IB`, `CBI_WITH_GNI`, `CBI_WITH_KFI`, `CBI_WITH_EFA`, `CBI_WITH_LDISKFS` and `CBI_WITH_ZFS` are the script's whole configuration interface, but they appear only in code comments — `cbi_usage()` doesn't list them and neither does the commit message. Could they be documented in the usage text?
reply Gerrit AI review for Lustre copy-builtin:261 — (minor) `KPATH` is assigned here and again in `cbi_clean()`, but nothing reads it. Leftover?
Gerrit AI review for Lustre
(minor) `KPATH` is assigned here and again in `cbi_clean()`, but nothing reads it. Leftover?
reply Gerrit AI review for Lustre copy-builtin:301 — (minor) A bare `exit` here means a wrong argument count or a bad path exits 0, so a caller or CI job can't tell success from a usage error.
Gerrit AI review for Lustre
(minor) A bare `exit` here means a wrong argument count or a bad path exits 0, so a caller or CI job can't tell success from a usage error. `exit 1` on the error paths would help. Routing the text through `less -F` also makes `copy-builtin help` need a pager and stops it being pipeable; a plain `cat`/heredoc to stderr is probably enough for a five-line message. The text also doesn't show that `clean` takes the tree argument.
note James Simmons copy-builtin:131 — Looks like we can copy over zfs and ldiskfs. Well at least ZFS can run. I doubt ldiskfs will work :-(
James Simmons
Looks like we can copy over zfs and ldiskfs. Well at least ZFS can run. I doubt ldiskfs will work :-(
note James Simmons copy-builtin:175 — Yuck. We shouldn't need to copy compat stuff to the kernel tree.
James Simmons
Yuck. We shouldn't need to copy compat stuff to the kernel tree.
reply Gerrit AI review for Lustre copy-builtin:184 — (minor) Nothing generates or consumes `undef.h`: configure only declares `AC_CONFIG_HEADERS([config.h])`, and the only two references to `un
Gerrit AI review for Lustre
(minor) Nothing generates or consumes `undef.h`: configure only declares `AC_CONFIG_HEADERS([config.h])`, and the only two references to `undef.h` in the tree are this line and the matching `rm -f` in `clean_linux()`. The `|| true` hides that it never copies anything. Leftover from an earlier layout?
reply Gerrit AI review for Lustre copy-builtin:252 — (defect) These three lines fix up the shims that use `#include_next`, but two of them are missed.
Gerrit AI review for Lustre
(defect) These three lines fix up the shims that use `#include_next`, but two of them are missed.
`headers_clone()` drops `include/lustre_compat` into `$KERNEL_DIR/include`, so a shim is found in the very same -I directory as the kernel header it wants to chain to. `#include_next` then has nothing left to search:
include/lustre_compat/linux/module.h: #include_next <linux/module.h>
include/lustre_compat/linux/bio.h: #include_next <linux/bio.h>
`lnet/libcfs/module.c` includes `<lustre_compat/linux/module.h>` unconditionally, and libcfs is always copied, so `net/lnet/libcfs/module.c` should fail with "fatal error: linux/module.h: No such file or directory". `<lustre_compat/linux/bio.h>` is the same situation in `lustre/osd-ldiskfs/osd_io.c` for `CBI_WITH_LDISKFS`.
Adding `module` and `bio` to this list would make them match slab/workqueue/kallsyms. Are those two just an oversight?
reply Gerrit AI review for Lustre copy-builtin:255 — (minor) Every other `$KERNEL_DIR` use in the script is quoted, but this command substitution is not, so a kernel path containing whitespace
Gerrit AI review for Lustre
(minor) Every other `$KERNEL_DIR` use in the script is quoted, but this command substitution is not, so a kernel path containing whitespace splits into bogus `find` arguments. It also means an empty result would turn into `find` with no path operand, i.e. `find .`, and `sed -i` would rewrite the Lustre source tree in place. Collecting the dirs into an array and passing `"${dirs[@]}"` would avoid both.
owner Timothy Day · uploader Timothy Day · PS14 uploaded 53d ago · NEW · open in Gerrit ↗
commit message
LU-18876 build: copy-builtin It's useful, for the upstreaming effort, distribution packagers, and general development, to be able to build the Lustre kernel modules natively as part of the Linux build. Some projects (such as openZFS) have a script to automatically port their kernel modules to the Linux tree. Lustre should have the same. This patch implements such a script. Test-Parameters: trivial Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: I8fdbddd0d522f848541ae80f4873f8af1c957dc4
66818
master
J –B ✓T ✓R +2/2
LU-20418 build: Move libcfs early checks to ksym checks
reviewing Shaun Tancheff · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; Verified -1 by Oleg Drokin
needs rebaseVerified -1
1 unresolved
M +42 −59
22d
LU-20418 build: Move libcfs early checks to ksym checks
reviewing Shaun Tancheff · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; Verified -1 by Oleg Drokin
needs rebaseVerified -1
1 unresolved
M +42 −59
22d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; Verified -1 by Oleg Drokin
you voted +1 on current PS
build #126958 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Andreas Dilger +1 · Timothy Day +1
no vote yet: Oleg Drokin
patchsets:
PS1 06-23
PS2 06-25
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Oleg Drokin patchset comment — when I have this in master-next on top of master, the build fails with
Oleg Drokin
when I have this in master-next on top of master, the build fails with
/home/green/git/lustre-release/lustre/osd-ldiskfs/osd_internal.h: In function ‘bdev_integrity_enabled’:
/home/green/git/lustre-release/lustre/osd-ldiskfs/osd_internal.h:1815:36: error: implicit declaration of function ‘bdev_get_integrity’ [-Werror=implicit-function-declaration]
1815 | struct blk_integrity *bi = bdev_get_integrity(bdev);
| ^~~~~~~~~~~~~~~~~~
/home/green/git/lustre-release/lustre/osd-ldiskfs/osd_internal.h:1815:36: warning: initialization of ‘struct blk_integrity *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
/home/green/git/lustre-release/lustre/osd-ldiskfs/osd_internal.h:1795:36: error: ‘BLK_INTEGRITY_NOVERIFY’ undeclared (first use in this function); did you mean ‘HAVE_BLK_INTEGRITY_NOVERIFY’?
1795 | #define INTEGRITY_READ(flag) (!(BLK_INTEGRITY_NOVERIFY & (flag)))
| ^~~~~~~~~~~~~~~~~~~~~~
/home/green/git/lustre-release/lustre/osd-ldiskfs/osd_internal.h:1821:24: note: in expansion of macro ‘INTEGRITY_READ’
1821 | if (rw == 0 && INTEGRITY_READ(bi->flags))
| ^~~~~~~~~~~~~~
/home/green/git/lustre-release/lustre/osd-ldiskfs/osd_internal.h:1795:36: note: each undeclared identifier is reported only once for each function it appears in
1795 | #define INTEGRITY_READ(flag) (!(BLK_INTEGRITY_NOVERIFY & (flag)))
| ^~~~~~~~~~~~~~~~~~~~~~
/home/green/git/lustre-release/lustre/osd-ldiskfs/osd_internal.h:1821:24: note: in expansion of macro ‘INTEGRITY_READ’
1821 | if (rw == 0 && INTEGRITY_READ(bi->flags))
| ^~~~~~~~~~~~~~
LD [M] /home/green/git/lustre-release/ldiskfs/ldiskfs.o
libtool: link: rm -fr .libs/liblustreapi.a .libs/liblustreapi.la .libs/liblustreapi.lai
libtool: link: (cd .libs/liblustreapi.lax/libcfs.a && ar x "/home/green/git/lustre-release/lustre/utils/../../lib/libcfs/.libs/libcfs.a")
/home/green/git/lustre-release/lustre/osd-ldiskfs/osd_internal.h:1796:36: error: ‘BLK_INTEGRITY_NOGENERATE’ undeclared (first use in this function)
1796 | #define INTEGRITY_WRITE(flag) (!(BLK_INTEGRITY_NOGENERATE & (flag)))
| ^~~~~~~~~~~~~~~~~~~~~~~~
/home/green/git/lustre-release/lustre/osd-ldiskfs/osd_internal.h:1824:24: note: in expansion of macro ‘INTEGRITY_WRITE’
1824 | if (rw == 1 && INTEGRITY_WRITE(bi->flags))
| ^~~~~~~~~~~~~~~
owner Shaun Tancheff · uploader Shaun Tancheff · PS2 uploaded 131d ago · NEW · open in Gerrit ↗
commit message
LU-20418 build: Move libcfs early checks to ksym checks Move checks for: HAVE_LINUX_BIO_INTEGRITY_HEADER HAVE_LINUX_BLK_INTEGRITY_HEADER HAVE_MMAP_LOCK Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: Ic7bab998a5ed235e4870791598f3435f0593171c
66124
master
J !B ✓T ✓R +1/2−
LU-9653 utils: Add kernel doc style for utils (21)
reviewing Arshad Hussain · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
dwg
2 unresolved
S +17 −8
22d
LU-9653 utils: Add kernel doc style for utils (21)
reviewing Arshad Hussain · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
dwg
2 unresolved
S +17 −8
22d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
you voted +1 on current PS
janitor run: 2 failing config(s), none unique to this patch — janitor results
build #130102 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Arshad Hussain +1 · Timothy Day +1
no vote yet: Oleg Drokin
patchsets:
PS1 05-25
PS2 08-24 Oleg Drokin
your previous vote: +1 on PS1 (2026-08-06 19:35) — now at PS2
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre liblustreapi_ioctl.c:136 — (defect) llapi_ioctl() doesn't return a negative errno on error, so this contract looks inaccurate.
Gerrit AI review for Lustre
(defect) llapi_ioctl() doesn't return a negative errno on error, so this contract looks inaccurate.
llapi_ioctl_dev() goes through l_ioctl(), which converts (lib/libcfs/l_ioctl.c):
rc = ioctl(fd, opc, buf);
return rc < 0 ? -errno : rc;
llapi_ioctl() calls ioctl(2) directly and returns its value unchanged, so a failure is -1 with errno set, not -errno. The three in-tree callers all compensate:
rc = llapi_ioctl(fd, OBD_IOC_GETDTNAME, lov_name);
if (rc)
rc = -errno;
The one exception is the fd < 0 short-circuit, which does return -EBADF. Since this is a public entry point (lustre/include/lustre/lustreapi.h), should the block spell out the mixed contract, e.g. %-EBADF if fd is negative, otherwise the ioctl(2) result with errno set on failure?
reply Arshad Hussain liblustreapi_ioctl.c:137 — Documantation list down the the generatl return. To make it even, it will be updated.
Gerrit AI review for Lustre
(minor) this isn't a bug, but llapi_ioctl() is public API and it also has a man page, Documentation/man3/llapi_ioctl.3, which still says under RETURN VALUES:
<0 a negative value on failure and sets errno.
That no longer lines up with the contract being pinned down here: the fd < 0 path returns -EBADF and leaves errno untouched, and the ioctl(2) failure path returns -1, not -errno. Should the man page be updated in the same patch so the two descriptions agree?
Arshad Hussain
Documantation list down the the generatl return. To make it even, it will be updated.
owner Arshad Hussain · uploader Oleg Drokin · PS2 uploaded 72d ago · NEW · open in Gerrit ↗
commit message
LU-9653 utils: Add kernel doc style for utils (21) This patch converts the existing functional comments in liblustreapi_ioctl.c to kernel doc style comments. llapi_ioctl() returns the ioctl(2) result with errno set rather than a negative errno, except for a negative fd, so document that mixed contract in the kernel doc comment. Test-Parameters: trivial Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Signed-off-by: Oleg Drokin <green@whamcloud.com> Assisted-by: ClaudeCode:Opus-5 llm_code_and_review_tools Change-Id: If3120b1c705496c63a907d2aad422a939a9d38d9
63234
master
J !B ✓T ✓R -2/2−
LU-9642 osc: Add kernel doc style for OSC (2)
reviewing Arshad Hussain · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
dwg
1 unresolved
M +111 −23
22d
LU-9642 osc: Add kernel doc style for OSC (2)
reviewing Arshad Hussain · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
dwg
1 unresolved
M +111 −23
22d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
you voted -1 on current PS
janitor run: 8 failing config(s), none unique to this patch — janitor results
build #125502 SUCCESS · tests all Maloo sessions
reviews:
James Simmons -1
no vote yet: Anjus George, Andreas Dilger
patchsets:
PS2 01-08
PS3 01-12
PS4 01-15
PS5 04-02
PS6 05-25
+1 earlier
PS1 01-05your previous vote: +1 on PS4 (2026-02-03 19:33) — now at PS6
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Arshad Hussain osc_page.c:53 — Anjus, yes. Ideally, all function with EXPORT_SYMBOLS(...) should have kernel-doc describing the function. Which is mostly taken care off. S
Anjus George
@ashehata@whamcloud.com Wouldn't these functions and a few functions below this also be needing the comment blocks?
Arshad Hussain
Anjus, yes. Ideally, all function with EXPORT_SYMBOLS(...) should have kernel-doc describing the function. Which is mostly taken care off. Some may be missed, like this which you have pointed out. Also, for OSC, IMO, you should tag Andreas/Patrick/Bobi.
owner Arshad Hussain · uploader Arshad Hussain · PS6 uploaded 163d ago · NEW · open in Gerrit ↗
commit message
LU-9642 osc: Add kernel doc style for OSC (2) This patch converts existing functional comments to kernel doc style comments and removes '/**' for comments which is not meant to be a kernel-doc comment Test-Parameters: trivial Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Change-Id: I2b0d155c0777b70a2044dba5f65608764a88b48e
66902
master
J ✗1B ✓T ✓R +0/2−
LU-18687 build: Move LL_BDI_CAP_FLAGS compat backing-dev.h
reviewing Shaun Tancheff · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
5 unresolved
M +33 −18
36d
LU-18687 build: Move LL_BDI_CAP_FLAGS compat backing-dev.h
reviewing Shaun Tancheff · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
5 unresolved
M +33 −18
36d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
you voted -1 on current PS
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity-quota@ldiskfs+DNE:test_1b | seen in 17 other reviews |
build #127030 SUCCESS · tests all Maloo sessions
reviews:
James Simmons -1 · Andreas Dilger +1 · Timothy Day +1
threads: 1 need your reply · 0 waiting on others · 4 own notes · 0 bot
reply Timothy Day backing-dev.h:12 — include_next perhaps?
Timothy Day
include_next perhaps?
note James Simmons backing-dev.h:16 — According to git commit ed7b6b4f6e915cb0bc52d0000bcc63168867b6ac upstream we don't need this if we are using SB_I_CGROUPWB. I just looked an
James Simmons
According to git commit ed7b6b4f6e915cb0bc52d0000bcc63168867b6ac upstream we don't need this if we are using SB_I_CGROUPWB. I just looked and SB_I_CGROUPWB has been around since 4.1 so we don't need the ifdef anymore for SB_I_CGROUPWB as well in fs.h. Looks like this can be dropped.
note James Simmons backing-dev.h:21 — We could test this and place this in config.h instead.
James Simmons
We could test this and place this in config.h instead.
note James Simmons backing-dev.h:26 — Note this was removed with git commit 2841808f35eebfd07150333f3af3007cb2904a09 upstream. This is only needed for wb_stat_mod() handling whic
James Simmons
Note this was removed with git commit 2841808f35eebfd07150333f3af3007cb2904a09 upstream. This is only needed for wb_stat_mod() handling which is not used by lustre and also was removed upstream. If we do want to wb stats there is a newer way to do it but I don't know it off the top of my head. We can remove the wb_stats handling as well.
note James Simmons backing-dev.h:30 — This is break when porting to upstream.
James Simmons
This is break when porting to upstream.
owner Shaun Tancheff · uploader Shaun Tancheff · PS1 uploaded 130d ago · NEW · open in Gerrit ↗
commit message
LU-18687 build: Move LL_BDI_CAP_FLAGS compat backing-dev.h Move LL_BDI_CAP_FLAGS and the removed flags to backing-dev.h LL_BDI_CAP_FLAGS can be removed for upstream linux. Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: I5ef5befb629d48bf67757a24f4a441dbe9dea1a6
57776
master
J ✗2B ✓T ✓R +1/2−
LU-10026 lustre: add lz4 and lz4hc kernel modules
reviewing Artem Blagodarenko · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
csdc
5 unresolved
XL +4422 −2
47d
LU-10026 lustre: add lz4 and lz4hc kernel modules
reviewing Artem Blagodarenko · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
csdc
5 unresolved
XL +4422 −2
47d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
you voted +1 on current PS
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity-lfsck@zfs:test_18c | seen in 25 other reviews |
| sanity-scrub@ldiskfs+DNE:test_9 | seen in 5 other reviews |
build #125233 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Marc Vef +1 · Andreas Dilger +1 · Timothy Day -1
no vote yet: Sebastien Buisson, Oleg Drokin
patchsets:
PS28 05-11 Marc Vef
PS29 05-11 Marc Vef
PS30 05-11 Marc Vef
PS31 05-13 Marc Vef
PS32 05-18 Marc Vef
+27 earlier
PS1 01-15 PS2 01-15 PS3 01-15 PS4 01-16 PS5 01-16 PS6 01-16 PS7 01-17 PS8 01-17 PS9 01-20 PS10 01-21 PS11 01-22 PS12 04-08 Timothy Day PS13 04-08 Timothy Day PS14 04-09 Timothy Day PS15 04-09 Timothy Day PS16 04-09 Timothy Day PS17 04-10 Timothy Day PS18 05-12 Timothy Day PS19 05-21 Timothy Day PS20 05-05 Marc Vef PS21 05-05 Marc Vef PS22 05-05 Marc Vef PS23 05-05 Marc Vef PS24 05-05 Marc Vef PS25 05-07 Marc Vef PS26 05-07 Marc Vef PS27 05-07 Marc Vefyour previous vote: -1 on PS19 (2025-06-17 13:20) — now at PS32
threads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Timothy Day COMMIT_MSG:36 — This is false.
Timothy Day
This is false.
reply Timothy Day COMMIT_MSG:60 — These modules do not compile on newer kernels (6.18, at least). I think it should be possible to build without these.
Timothy Day
These modules do not compile on newer kernels (6.18, at least). I think it should be possible to build without these.
reply Oleg Drokin kcompr.c:86 — just as the smatch implies this should really be IS_ERR, I don't think filp_open can return NULL?
Oleg Drokin
just as the smatch implies this should really be IS_ERR, I don't think filp_open can return NULL?
reply Marc Vef lz4_decompress.c:155 — Oleg, I looked into this. For all three comments of yours, this is still exactly the same in the kernel today: https://github.com/torvalds/l
Oleg Drokin
smatch highlighted it in the past and it was still not addressed, but this looks like an inconsistency and should be && even though I guess all parts evaluate to 0 or 1
Marc Vef
Oleg, I looked into this. For all three comments of yours, this is still exactly the same in the kernel today: https://github.com/torvalds/linux/blob/master/lib/lz4/lz4_decompress.c However, this discussion did come up on the kernel mailing list as well where the maintainer explained why & is used over && since smatch also flagged it there. There is a comment (line 147-148) on this here because of it. Basically, this is for performance reasons where it is noticeably beneficial in hot code segments. There are actually several points (very briefly, I linked the detailed discussion below): 1. `&&` indroduces a serial dependency but it is better for style. `&` can be executed in parallel 2. Too many densely packed branches impact the micro-op cache 3. A denser pack of branches impacts branch prediction In summary, they argue that it is _generally_ better to use `&` over `&&` (iff conditions permit it) but it only matters in very hot code segments, which this is. Much more detailed source: https://lore.kernel.org/all/D4762145-BBC5-4574-BF68-8C1A3AF41D98@fb.com/
reply Marc Vef lz4_decompress.c:204 — hmm, I'm not an expert in this code here, but this looks to be correct.
Oleg Drokin
is this likely really just for the first part of this statement, or for the whole while condition (and the parenthesis is then misplaced)
Marc Vef
hmm, I'm not an expert in this code here, but this looks to be correct. IIUC, likely() here is only used for the safety/bounds check which looks to be an over-read guard when there is fewer of 15 bytes (`RUN_MASK` as the safety margin?) of input left. I guess, a valid input is generally considered the common case and thus `likely`. `s == 255` is deciding whether we iterate further. That part is variable and should not be included in the `likely` statement.
tags: csdc
owner Artem Blagodarenko · uploader Marc Vef · PS32 uploaded 170d ago · NEW · open in Gerrit ↗
commit message
LU-10026 lustre: add lz4 and lz4hc kernel modules lz4 and lz4hc kernel modules implement compression according to the lz4 and lz4hc algorithms respectively, through the kernel Crypto API. lz4 module provides 2 cipher drivers under the generic name 'lz4': * lz4-lustre-generic of type compression * lz4-lustre-scomp of type scomp lz4hc module provides 2 cipher drivers under the generic name 'lz4hc': * lz4hc-lustre-generic of type compression * lz4hc-lustre-scomp of type scomp lz4 and lz4hc kernel module sources are copied from linux v6.1-rc5, and renamed to llz4.c and llz4hc.c respectively to avoid name collisions. Use of vmalloc has been changed to kvmalloc since it is faster in most cases. They implement the Crypto API interface, and rely on the lz4/lz4hc kernel library for compression implementation. They have been modified to grok a compression acceleration/level, as read from the top 4 bits of the crypto_tfm flags, and pass it to the underlying library. The lz4/lz4hc library sources are also copied from linux v6.1-rc5 and built statically, so lz4_compress, lz4_decompress and lz4hc_compress sources have been "de-modulified", and EXPORT_SYMBOLs removed. Headers have also been copied from linux v6.1-rc5 for consistency, and source files modified to include the copied headers instead of the system headers. All aforementioned sources are located in the lustre_compat/crypto/lz4 directory. The lz4/lz4hc modules are built only if the kernel does not provide them. This is verified by checking if the CONFIG_CRYPTO_LZ4 and CONFIG_CRYPTO_LZ4HC kernel config options are defined. This patch provides unit testing of several compression modules, such as lz4, lz4hc, lzo and gzip. This is done via a new test kernel module kcompr.ko, and new sanity test_84. File lustre/tests/kernel/kcompr.c contains examples of how to call the compression/decompression routines. EX-7998 lustre: Fix build with crypto_tfm_ctx on kernel 6.2 In recent kernels, commit e634ac4 "crypto: api - Add crypto_tfm_ctx_dma" moved crypto_tfm_ctx into algapi.h. So this file must be included from lustre_crypto.h. Was-Change-Id: If10f721355da3e58ca541c17615e978334e8d718 EX-7683 utils: always try to use our own lz4/lz4hc lz4/lz4hc provided by the kernel do not grok a compression level. The built-in lz4/lz4hc do, so always build them as dedicated kernel modules llz4.ko and llz4hc.ko, with the same .cra_name but with a slightly higher .cra_priority = 110, so that they are preferred over the in-kernel modules if any. And try to manually load the llz4/llz4hc kernel modules when a file requires compression with the corresponding alg. This is a "one-shot" try that allows us to prefer our modules that has level support, but continues to at least compress/decompress files even if our own modules are not available. Was-Change-Id: I0bdf267f998e21df81e460250a653aed34e3215d EX-bug-id: EX-6275 Test-Parameters: testlist=sanity env=ONLY=84 Signed-off-by: Sebastien Buisson <sbuisson@ddn.com> Signed-off-by: Artem Blagodarenko <ablagodarenko@ddn.com> Signed-off-by: Marc Vef <mvef@whamcloud.com> Change-Id: I74ce95ff18194c6052d291588d7e8c79596a7f23
56435
master
J !B ✗T –R -2/2−
LU-18231 odb: add a TODO to remove the spinlock for odb_flags
reviewing Ronnie Sahlberg · blocked on the owner: build failure
XS +3 −1
61d
LU-18231 odb: add a TODO to remove the spinlock for odb_flags
reviewing Ronnie Sahlberg · blocked on the owner: build failure
XS +3 −1
61d
blocked on the owner: build failure
you voted -1 on current PS
janitor run: 1 failing config(s), none unique to this patch — janitor results
build #108057 FAILURE
reviews:
James Simmons -1 · Timothy Day -1
patchsets:
PS1 09-20
PS2 09-20
PS3 09-20
PS4 10-01
owner Ronnie Sahlberg · uploader Ronnie Sahlberg · PS4 uploaded 764d ago · NEW · open in Gerrit ↗
commit message
LU-18231 odb: add a TODO to remove the spinlock for odb_flags Now that all modifications of the odb_flag bits are done using atomic set/clear/test functions we may not need the protection of the spinlock in every situation. That is out of scope for this patch series but is something that we can consider in the future. Add a TODO that we can remove some of the uses of this spinlock in a future series. Test-Parameters: trivial Signed-off-by: Ronnie Sahlberg <rsahlberg@whamcloud.com> Change-Id: I30d880b46247374092d9c592554651c35ecda93d
68247
master
J !B ✓T ✓R +0/2−
LU-17000 lmv: use a plain goto for the create retry path
reviewing Oleg Drokin · you voted +1 on current PS
XS +2 −2
62d
LU-17000 lmv: use a plain goto for the create retry path
reviewing Oleg Drokin · you voted +1 on current PS
XS +2 −2
62d
janitor run: 6 failing config(s), none unique to this patch — janitor results
build #130091 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Andreas Dilger -1
owner Oleg Drokin · uploader Oleg Drokin · PS1 uploaded 72d ago · NEW · open in Gerrit ↗
commit message
LU-17000 lmv: use a plain goto for the create retry path lmv_locate_tgt_create() has no rc and new_tgt: unconditionally reassigns tgt, so GOTO(new_tgt, -EAGAIN) only made the D_TRACE log claim the function was leaving with -EAGAIN when it was not. Use a plain goto, as the retry paths elsewhere in this file already do. Test-Parameters: trivial Signed-off-by: Oleg Drokin <green@whamcloud.com> Assisted-by: ClaudeCode:Opus-5 llm_code_and_review_tools Change-Id: I1581178a9842c5e7b433babb4963bfcffcebfb9b
66512
master
J !B ✓T ✓R +1/2
LU-9639 ldlm: Add kernel doc style for LDLM (6)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
M +33 −17
70d
LU-9639 ldlm: Add kernel doc style for LDLM (6)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
M +33 −17
70d
janitor run: 5 failing config(s), none unique to this patch — janitor results
build #130080 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Arshad Hussain +1
no vote yet: Oleg Drokin, Timothy Day
patchsets:
PS1 06-07
PS2 08-16
PS3 08-18
PS4 08-24 Oleg Drokin
your previous vote: +1 on PS1 (2026-07-30 18:59) — now at PS4
owner Arshad Hussain · uploader Oleg Drokin · PS4 uploaded 72d ago · NEW · open in Gerrit ↗
commit message
LU-9639 ldlm: Add kernel doc style for LDLM (6) This patch converts existing functional comments to kernel doc style comments and removes '/**' for comments which is not meant to be a kernel-doc comment Also correct the ldlm_process_flock_lock() description: it runs under the resource lock rather than the namespace lock, its conflict scan is over the locks already granted on the resource, and its return value is an iterator verdict. Test-Parameters: trivial Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Signed-off-by: Oleg Drokin <green@whamcloud.com> Assisted-by: ClaudeCode:Opus-5 llm_code_and_review_tools Change-Id: Ie20f2650887718a571ba639bd1420a7a76f87d3d
63717
master
J ✓B ✓T ✓R +1/2
LU-19844 osd-zfs: Add kernel doc style for osd-zfs (5)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
1 unresolved
M +42 −33
71d
LU-19844 osd-zfs: Add kernel doc style for osd-zfs (5)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
1 unresolved
M +42 −33
71d
build #130074 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Arshad Hussain +1
no vote yet: Oleg Drokin, Timothy Day
patchsets:
PS1 02-01
PS2 02-02
PS3 08-24 Oleg Drokin
your previous vote: +1 on PS2 (2026-08-06 19:41) — now at PS3
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:10 — (minor) The message says the patch "removes '/**' for comments which is not meant to be a kernel-doc comment", but this patch has no such hu
Gerrit AI review for Lustre
(minor) The message says the patch "removes '/**' for comments which is not meant to be a kernel-doc comment", but this patch has no such hunk — all four blocks are '/**' comments being converted into real kernel-doc. That sentence looks carried over from patch (1) of the series. Could it be dropped here so the body matches the diff?
owner Arshad Hussain · uploader Oleg Drokin · PS3 uploaded 72d ago · NEW · open in Gerrit ↗
commit message
LU-19844 osd-zfs: Add kernel doc style for osd-zfs (5) This patch converts existing functional comments in osd_io.c and osd_xattr.c to kernel doc style comments. osd_bufs_get_read() returns the number of local niobufs filled, not 0, so document that per the dbo_bufs_get() contract in dt_object.h. Test-Parameters: trivial Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Signed-off-by: Oleg Drokin <green@whamcloud.com> Assisted-by: ClaudeCode:Opus-5 llm_code_and_review_tools Change-Id: If8aea2457659c688b2dfcd4cc8d3d0a808ad3918
66511
master
J !B ✓T ✓R +1/2
LU-9639 ldlm: Add kernel doc style for LDLM (5)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
9 unresolved
M +58 −27
71d
LU-9639 ldlm: Add kernel doc style for LDLM (5)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
9 unresolved
M +58 −27
71d
janitor run: 4 failing config(s), none unique to this patch — janitor results
build #130069 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Arshad Hussain +1
no vote yet: Oleg Drokin, Timothy Day
patchsets:
PS1 06-07
PS2 08-24 Oleg Drokin
your previous vote: +1 on PS1 (2026-07-30 19:00) — now at PS2
threads: 9 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre ldlm_extent.c:185 — (typo) "lcok" -> "lock".
Gerrit AI review for Lustre
(typo) "lcok" -> "lock".
reply Gerrit AI review for Lustre ldlm_extent.c:186 — (minor) Same `[out]` question as @contended_locks. ldlm_extent_internal_policy_granted() only ever shrinks this extent — `new_ex->end = min(
Gerrit AI review for Lustre
(minor) Same `[out]` question as @contended_locks. ldlm_extent_internal_policy_granted() only ever shrinks this extent — `new_ex->end = min(new_ex->end, START(lck) - 1)` and the `new_ex->start == req_start && new_ex->end == req_end` early break both read the incoming value. The caller ldlm_extent_policy() has to seed it with `{ 0, OBD_OBJECT_EOF }` first. Worth documenting it as in/out with that precondition rather than as a pure output.
reply Gerrit AI review for Lustre ldlm_extent.c:456 — (minor) Two things read oddly here. `[out]` suggests the callee only writes it, but ldlm_extent_compat_queue() does `*contended_locks += che
Gerrit AI review for Lustre
(minor) Two things read oddly here. `[out]` suggests the callee only writes it, but ldlm_extent_compat_queue() does `*contended_locks += check_contention` and then reads it back in `ldlm_check_contention(req, *contended_locks)`. The caller relies on that: ldlm_process_extent_lock() zeroes the variable once and passes the same one to the granted-queue call and then the waiting-queue call, so the second call accumulates onto the first. Marking it in/out would describe the contract better. Also, "locks that are waiting" doesn't quite match — on the granted-queue path the count comes from ldlm_extent_compat_cb(), which bumps it for conflicting *granted* locks. Something like "running count of conflicting locks used for contention detection" is closer.
reply Gerrit AI review for Lustre ldlm_extent.c:828 — (typo) "lcok" -> "lock" here too.
Gerrit AI review for Lustre
(typo) "lcok" -> "lock" here too.
reply Gerrit AI review for Lustre ldlm_extent.c:838 — (defect) This block has no `Return:` section, but the function returns LDLM_ITER_CONTINUE, LDLM_ITER_STOP, or a negative rc via the `out:` l
Gerrit AI review for Lustre
(defect) This block has no `Return:` section, but the function returns LDLM_ITER_CONTINUE, LDLM_ITER_STOP, or a negative rc via the `out:` label. Running scripts/kernel-doc over the patched file still reports:
No description found for return value of 'ldlm_process_extent_lock'
It is the only kernel-doc warning left in the file after this patch, so adding a `Return:` list here would make the file clean.
reply Gerrit AI review for Lustre ldlm_extent.c:1018 — (minor) The commit message says the patch removes `/**` from comments that aren't meant to be kernel-doc, but this one and the matching one
Gerrit AI review for Lustre
(minor) The commit message says the patch removes `/**` from comments that aren't meant to be kernel-doc, but this one and the matching one on ldlm_extent_unlink_lock() are still `/**`. kernel-doc silently ignores them, so they end up looking like documentation that never gets parsed. Convert them or drop to `/*`?
reply Gerrit AI review for Lustre ldlm_extent.c:487 — Two things about this line, neither a bug.
Gerrit AI review for Lustre
Two things about this line, neither a bug. -EAGAIN isn't really tied to group locks - it is driven by LDLM_FL_BLOCK_NOWAIT / LDLM_FL_SPECULATIVE, and the plain-extent paths reach it too (`if (!work_list || (*flags & LDLM_FL_SPECULATIVE))` on the granted tree, and the `spec_contention` goto in the waiting-queue walk). "such as" makes it survive, but naming the flags would be more useful. More importantly, every negative return goes through `destroylock:`, which unlinks @req from the resource and calls ldlm_lock_destroy_nolock(). Since a Return: list is being added anyway, worth saying that @req is destroyed on that path so a reader knows not to touch it.
reply Gerrit AI review for Lustre ldlm_extent.c:774 — This description is inherited from the old \param text, but since the line is being rewritten anyway: struct ldlm_prolong_args has no timeou
Gerrit AI review for Lustre
This description is inherited from the old \param text, but since the line is being rewritten anyway: struct ldlm_prolong_args has no timeout field (the timeout comes from ptlrpc_export_prolong_timeout(arg->lpa_req, false)), and lpa_extent is never read here - only ldlm_resource_prolong() uses it, to bound the extent_search(). What this function actually touches is lpa_export, lpa_req, lpa_locks_cnt and lpa_blocks_cnt.
reply Gerrit AI review for Lustre ldlm_extent.c:868 — "conflicting lock queue" only covers half of what this list carries here. `grant_work` aliases `work_list` whenever `intention != LDLM_PROCE
Gerrit AI review for Lustre
"conflicting lock queue" only covers half of what this list carries here. `grant_work` aliases `work_list` whenever `intention != LDLM_PROCESS_ENQUEUE`, and `ldlm_grant_lock(lock, grant_work)` then puts a completion-AST work item for `lock` itself onto it. In the LDLM_PROCESS_RESCAN branch both compat_queue calls pass NULL, so the only thing that ever lands on `work_list` there is `lock`'s own CP AST - never a conflicting lock. ldlm_reprocess_queue() relies on exactly that when it splices to the CP_AST list vs. the BL_AST list. Something like "list collecting AST work items: blocking ASTs for conflicting locks, plus the completion AST for @lock when @intention is not LDLM_PROCESS_ENQUEUE" would describe it. The same phrase on ldlm_extent_compat_queue() is fine - it really is only conflicting locks there.
owner Arshad Hussain · uploader Oleg Drokin · PS2 uploaded 72d ago · NEW · open in Gerrit ↗
commit message
LU-9639 ldlm: Add kernel doc style for LDLM (5) This patch converts existing functional comments to kernel doc style comments and removes '/**' for comments which is not meant to be a kernel-doc comment. ldlm_extent.c is now clean under contrib/scripts/kernel-doc -none -Wreturn -Wall. Test-Parameters: trivial Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Signed-off-by: Oleg Drokin <green@whamcloud.com> Assisted-by: ClaudeCode:Opus-5 llm_code_and_review_tools Change-Id: Id9b20c82c81665c986d2b2def1fa37620353c187
68248
master
J ✗1B ✓T ✓R +2/2
LU-17000 ldlm: clear the sysfs pointers in ldlm_cleanup()
reviewing Oleg Drokin · you voted +1 on current PS
XS +7 −2
71d
LU-17000 ldlm: clear the sysfs pointers in ldlm_cleanup()
reviewing Oleg Drokin · you voted +1 on current PS
XS +7 −2
71d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity2@ldiskfs+DNE:test_64h | seen in 17 other reviews |
build #130093 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Andreas Dilger +1
owner Oleg Drokin · uploader Oleg Drokin · PS1 uploaded 72d ago · NEW · open in Gerrit ↗
commit message
LU-17000 ldlm: clear the sysfs pointers in ldlm_cleanup()
ldlm_cleanup() unregisters ldlm_ns_kset, ldlm_svc_kset and ldlm_kobj
but leaves the globals set, so a second ldlm_setup() that fails
before reassigning them unregisters already freed objects. Clear
them, as ldlm_debugfs_cleanup() right below already does for its own
dentries.
Test-Parameters: trivial
Fixes: 1196bd199e7c ("LU-8066 ldlm: move /proc/fs/lustre/ldlm to sysfs")
Signed-off-by: Oleg Drokin <green@whamcloud.com>
Assisted-by: ClaudeCode:Opus-5 llm_code_and_review_tools
Change-Id: I00043f47d6bfa562ec90fd4c387bc823cdfc726d
65830
master
J ✓B ✓T ✗1R +2/2
LU-20246 tests: handle small test nodes with ncpt < 2
reviewing Shaun Tancheff · blocked on the owner: enforced tests failed
XS +4 −2
81d
LU-20246 tests: handle small test nodes with ncpt < 2
reviewing Shaun Tancheff · blocked on the owner: enforced tests failed
XS +4 −2
81d
blocked on the owner: enforced tests failed
you voted +1 on current PS
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-dne-arm | RHEL 8.10 / x86_64, Rocky 9.5 / aarch64 | ran 5 tests. 1 tests failed: sanity. | session |
build #129032 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Chris Horn +1
no vote yet: Cyril Bordage, Andreas Dilger, Oleg Drokin, Timothy Day
patchsets:
PS2 05-12
PS3 05-12
PS4 06-28
PS5 08-05
PS6 08-10
+1 earlier
PS1 05-12your previous vote: +1 on PS5 (2026-08-06 19:09) — now at PS6
owner Shaun Tancheff · uploader Shaun Tancheff · PS6 uploaded 86d ago · NEW · open in Gerrit ↗
commit message
LU-20246 tests: handle small test nodes with ncpt < 2
sanity-lnet/170 should not fail with -ERANGE when node is configured
with less than 2 cpu partitions.
Test-Parameters: trivial testlist=sanity-lnet
Fixes: 18bc6c4a54 ("LU-20000 lnetctl: bad CPTs/tunables during import")
Signed-off-by: Shaun Tancheff <shaun@tancheff.com>
Change-Id: I2abf7ad256c05403b149935927ceaccbc600a1b7
66838
master
J –B ✓T ✓R +3/2
LU-20418 build: Move core pre-v5.19 checks to ksym checks
reviewing Shaun Tancheff · you voted +1 on current PS
stalled 101d
L +272 −503
101d
LU-20418 build: Move core pre-v5.19 checks to ksym checks
reviewing Shaun Tancheff · you voted +1 on current PS
stalled 101d
L +272 −503
101d
build #126972 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Andreas Dilger +1 · Timothy Day +1
patchsets:
PS1 06-24
PS2 06-26
owner Shaun Tancheff · uploader Shaun Tancheff · PS2 uploaded 131d ago · NEW · open in Gerrit ↗
commit message
LU-20418 build: Move core pre-v5.19 checks to ksym checks Move checks for: HAVE_SET_POSIX_ACL_USER_NS FOLIO_MEMCG_LOCK_EXPORTED HAVE_FOLIO_MEMCG_LOCK_STATIC HAVE_KIOCB_COMPLETE_2ARGS HAVE_ACCOUNT_PAGE_DIRTIED HAVE_ACCOUNT_PAGE_DIRTIED_EXPORT HAVE_FOLIO_MEMCG_LOCK HAVE_COPY_PAGE_FROM_ITER_ATOMIC HAVE_FOLIO_BATCH HAVE_SECURITY_DENTRY_INIT_WITH_XATTR_NAME_ARG HAVE_DELETE_FROM_PAGE_CACHE HAVE_INVALIDATE_FOLIO HAVE_BIO_SET_DEV HAVE_FAULT_IN_IOV_ITER_READABLE HAVE___FILEMAP_GET_FOLIO HAVE_BI_BDEV HAVE_DIRTY_FOLIO HAVE_ALLOC_INODE_SB HAVE_USER_NAMESPACE_ARG HAVE_GET_ACL_RCU_ARG HAVE_FILEATTR_GET Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: I5aaac5bffe98f3409407c773d9529b1e797858a2
66830
master
J –B ✓T ✓R +3/2
LU-20418 build: Move libcfs pre-v5.10 checks to ksym checks
reviewing Shaun Tancheff · blocked on the owner: Verified -1 by Oleg Drokin
Verified -1
stalled 116d
2 unresolved
L +236 −399
116d
LU-20418 build: Move libcfs pre-v5.10 checks to ksym checks
reviewing Shaun Tancheff · blocked on the owner: Verified -1 by Oleg Drokin
Verified -1
stalled 116d
2 unresolved
L +236 −399
116d
blocked on the owner: Verified -1 by Oleg Drokin
you voted +1 on current PS
build #126960 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Andreas Dilger +1 · Timothy Day +1
no vote yet: Oleg Drokin
patchsets:
PS1 06-24
PS2 06-25
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Timothy Day patchset comment — It's difficult to test these patches sufficiently beforehand, because Janitor refuses to build them:
Oleg Drokin
when I have this in master net, the build fails with:
make[1]: Entering directory '/home/green/bk/linux-5.14.0-570.58.1.el9_6'
CC [M] /home/green/git/lustre-release/lustre/obdclass/llog.o
In file included from /home/green/git/lustre-release/lustre/include/lprocfs_status.h:29,
from /home/green/git/lustre-release/lustre/include/obd_support.h:27,
from /home/green/git/lustre-release/lustre/include/obd_class.h:20,
from /home/green/git/lustre-release/lustre/include/lustre_log.h:34,
from /home/green/git/lustre-release/lustre/obdclass/llog.c:29:
/home/green/git/lustre-release/include/lustre_compat/linux/sysfs.h:14: warning: "ATTRIBUTE_GROUPS" redefined
14 | #define ATTRIBUTE_GROUPS(_name) static struct attribute *_name##_groups = _name##_attrs
|
In file included from ./include/linux/kobject.h:20,
from /home/green/git/lustre-release/lustre/include/obd_class.h:19,
from /home/green/git/lustre-release/lustre/include/lustre_log.h:34,
from /home/green/git/lustre-release/lustre/obdclass/llog.c:29:
./include/linux/sysfs.h:159: note: this is the location of the previous definition
159 | #define ATTRIBUTE_GROUPS(_name) \
|
In file included from /home/green/git/lustre-release/include/linux/libcfs/libcfs_private.h:24,
from /home/green/git/lustre-release/lustre/include/obd_support.h:24,
from /home/green/git/lustre-release/lustre/include/obd_class.h:20,
from /home/green/git/lustre-release/lustre/include/lustre_log.h:34,
from /home/green/git/lustre-release/lustre/obdclass/llog.c:29:
/home/green/git/lustre-release/lustre/obdclass/llog.c: In function ‘llog_init_handle’:
/home/green/git/lustre-release/include/lustre_compat/linux/vmalloc.h:11:39: error: too many arguments to function ‘__vmalloc’
11 | #define __compat_vmalloc(size, flags) __vmalloc(size, flags, PAGE_KERNEL)
| ^~~~~~~~~
/home/green/git/lustre-release/lustre/include/obd_support.h:889:17: note: in expansion of macro ‘__compat_vmalloc’
889 | __compat_vmalloc(size, GFP_NOFS | __GFP_ZERO) : \
| ^~~~~~~~~~~~~~~~
/home/green/git/lustre-release/lustre/include/obd_support.h:902:10: note: in expansion of macro ‘__OBD_VMALLOC_VERBOSE’
902 | __OBD_VMALLOC_VERBOSE(ptr, NULL, 0, size)
| ^~~~~~~~~~~~~~~~~~~~~
/home/green/git/lustre-release/lustre/include/obd_support.h:915:17: note: in expansion of macro ‘OBD_VMALLOC’
915 | OBD_VMALLOC(ptr, size); \
| ^~~~~~~~~~~
/home/green/git/lustre-release/lustre/obdclass/llog.c:420:9: note: in expansion of macro ‘OBD_ALLOC_LARGE’
420 | OBD_ALLOC_LARGE(llh, chunk_size);
| ^~~~~~~~~~~~~~~
In file included from ./include/asm-generic/io.h:994,
from ./arch/x86/include/asm/io.h:349,
from ./include/linux/scatterlist.h:9,
from ./include/linux/kfifo.h:42,
from ./include/linux/tty_port.h:5,
from ./include/linux/tty.h:12,
from /home/green/git/lustre-release/include/linux/libcfs/libcfs_debug.h:19,
from /home/green/git/lustre-release/lustre/include/obd_support.h:23,
from /home/green/git/lustre-release/lustre/include/obd_class.h:20,
from /home/green/git/lustre-release/lustre/include/lustre_log.h:34,
from /home/green/git/lustre-release/lustre/obdclass/llog.c:29:
./include/linux/vmalloc.h:148:14: note: declared here
148 | extern void *__vmalloc(unsigned long size, gfp_t gfp_mask) __alloc_size(1);
| ^~~~~~~~~
In file included from /home/green/git/lustre-release/include/linux/libcfs/libcfs_private.h:24,
from /home/gree
Timothy Day
It's difficult to test these patches sufficiently beforehand, because Janitor refuses to build them: ``` Lustre Gerrit Janitor Cannot detect any functional changes in this patch ```
reply Gerrit AI review for Lustre HAVE_IP6_SET_PREF.ksym:11 — (defect) The second argument is `bool val`, but the kernel prototype is `int val`:
Gerrit AI review for Lustre
(defect) The second argument is `bool val`, but the kernel prototype is `int val`:
static inline int ip6_sock_set_addr_preferences(struct sock *sk, int val)
The escaped regex therefore matches no kernel, so HAVE_IP6_SET_PREF is never defined. The old LIBCFS_IP6_SET_PREF test called `ip6_sock_set_addr_preferences(NULL, 0)` and was arg-type-agnostic, so it detected the function. On a kernel that still has `kernel_setsockopt` and also provides this inline (vendor backport / 5.8 merge window), the fallback in include/lustre_compat/net/tcp.h now compiles too, giving a redefinition of `ip6_sock_set_addr_preferences`. The sibling HAVE_IP_SET_TOS check uses `int val` correctly; this should be `int val`.
owner Shaun Tancheff · uploader Shaun Tancheff · PS2 uploaded 131d ago · NEW · open in Gerrit ↗
commit message
LU-20418 build: Move libcfs pre-v5.10 checks to ksym checks Move checks for: HAVE_CACHE_DETAIL_WRITERS HAVE_GENL_DUMPIT_INFO_FAMILY HAVE_IP6_SET_PREF HAVE_IP_SET_TOS HAVE_KALLSYMS_LOOKUP_NAME HAVE_KERNEL_SETSOCKOPT HAVE_KEY_NEED_UNLINK HAVE_KOBJ_TYPE_DEFAULT_GROUPS HAVE_NR_UNSTABLE_NFS HAVE_NR_UNSTABLE_NFS_DEPRECATED HAVE_PROC_OPS HAVE_SEC_RELEASE_SECCTX_1ARG HAVE_TCP_SOCK_SET_KEEPCNT HAVE_TCP_SOCK_SET_KEEPINTVL HAVE_TCP_SOCK_SET_QUICKACK HAVE_USER_UID_KEYRING HAVE_VMALLOC_2ARGS Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: Id530a1c47b6e178e024bd8010b4b6661d34ff3b9
66819
master
J !B ✓T ✓R +3/2
LU-20418 build: Move core early checks to ksym checks
reviewing Shaun Tancheff · you voted +1 on current PS
stalled 123d
M +84 −140
123d
LU-20418 build: Move core early checks to ksym checks
reviewing Shaun Tancheff · you voted +1 on current PS
stalled 123d
M +84 −140
123d
janitor run: 6 failing config(s), none unique to this patch — janitor results
build #126995 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Andreas Dilger +1 · Timothy Day +1
patchsets:
PS1 06-23
PS2 06-26
PS3 06-26
owner Shaun Tancheff · uploader Shaun Tancheff · PS3 uploaded 131d ago · NEW · open in Gerrit ↗
commit message
LU-20418 build: Move core early checks to ksym checks Move early checks for: HAVE_GRAB_CACHE_PAGE_WRITE_BEGIN_WITH_FLAGS HAVE_INVALIDATE_LOCK HAVE_LOCKS_LOCK_FILE_WAIT HAVE_STRUCT_LSM_CONTEXT HAVE_WB_STAT_MOD Move check for: HAVE_GRAB_CACHE_PAGE_WRITE_BEGIN Drop the early pass now that all early checks are ksym Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: I1f997b8597949b12e0e170887486ce0811f89b68
66874
master
J –B ✓T ✓R +3/2
LU-20418 build: Move core pre-v7.1 checks to ksym checks
reviewing Shaun Tancheff · you voted +1 on current PS
stalled 123d
L +204 −350
123d
LU-20418 build: Move core pre-v7.1 checks to ksym checks
reviewing Shaun Tancheff · you voted +1 on current PS
stalled 123d
L +204 −350
123d
build #126994 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Andreas Dilger +1 · Timothy Day +1
patchsets:
PS1 06-26
PS2 06-26
owner Shaun Tancheff · uploader Shaun Tancheff · PS2 uploaded 131d ago · NEW · open in Gerrit ↗
commit message
LU-20418 build: Move core pre-v7.1 checks to ksym checks Move checks for: HAVE_INODE_JUST_DROP HAVE_MEMDESC_FLAGS_T PAGE_FLAGS HAVE_DENTRY__D_NAME HAVE_FILE__F_PATH HAVE_VFS_MKDIR_DELEGATE HAVE_INODE_STATE_READ HAVE_VFS_CREATE_DELEGATE HAVE_ILOOKUP5_NOWAIT_ISNEW HAVE_FILEMAP_ALLOC_FOLIO_NUMA HAVE_KILL_LITTER_SUPER HAVE_D_MAKE_PERSISTENT HAVE_POSIX_ACL_TO_XATTR_ALLOC_BUFFER Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: Ic0d14173c3c3ddaac4aeb096fab82d0e1f2386cd
66846
master
J –B ✓T ✓R +3/2
LU-20418 build: Move core pre-v6.12 checks to ksym checks
reviewing Shaun Tancheff · you voted +1 on current PS
stalled 123d
L +220 −382
123d
LU-20418 build: Move core pre-v6.12 checks to ksym checks
reviewing Shaun Tancheff · you voted +1 on current PS
stalled 123d
L +220 −382
123d
build #126993 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Andreas Dilger +1 · Timothy Day +1
patchsets:
PS1 06-24
PS2 06-26
PS3 06-26
owner Shaun Tancheff · uploader Shaun Tancheff · PS3 uploaded 131d ago · NEW · open in Gerrit ↗
commit message
LU-20418 build: Move core pre-v6.12 checks to ksym checks Move checks for: HAVE_FLUSH___WORKQUEUE HAVE_INODE_GET_CTIME HAVE_COPY_FOLIO_FROM_ITER_ATOMIC HAVE_MMAP_WRITE_TRYLOCK HAVE_GENERIC_FILEATTR_HAS_MASK_ARG HAVE_GROUP_INFO_USAGE_AS_REFCOUNT HAVE_NSPROXY_COUNT_AS_REFCOUNT HAVE_INODE_GET_MTIME_SEC HAVE_SHRINKER_ALLOC HAVE_DENTRY_D_CHILDREN HAVE_GENERIC_ERROR_REMOVE_FOLIO HAVE_STRUCT_FILE_LOCK_CORE HAVE_CSUM_TYPE_BLK_INTEGRITY HAVE_FOLIO_MEMCG_LOCK_STATIC Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: I4fae08aefc51beb260035af8ba568c8f6e2a4afb
66845
master
J –B ✓T ✓R +3/2
LU-20418 build: Move core pre-v6.6 checks to ksym checks
reviewing Shaun Tancheff · you voted +1 on current PS
stalled 123d
L +321 −562
123d
LU-20418 build: Move core pre-v6.6 checks to ksym checks
reviewing Shaun Tancheff · you voted +1 on current PS
stalled 123d
L +321 −562
123d
build #126991 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Andreas Dilger +1 · Timothy Day +1
patchsets:
PS1 06-24
PS2 06-26
PS3 06-26
owner Shaun Tancheff · uploader Shaun Tancheff · PS3 uploaded 131d ago · NEW · open in Gerrit ↗
commit message
LU-20418 build: Move core pre-v6.6 checks to ksym checks Move checks for: HAVE_ACL_WITH_DENTRY HAVE_BIO_ADD_FOLIO HAVE_CLASS_CREATE_WITH_MODULE HAVE_ENUM_ITER_PIPE HAVE_FILEMAP_SPLICE_READ HAVE_FILLDIR_USE_CTX_RETURN_BOOL HAVE_FOLIO_BATCH_REINIT HAVE_FOLIO_MAPCOUNT HAVE_GET_RANDOM_U32_AND_U64 HAVE_GET_RANDOM_U32_BELOW HAVE_GET_USER_PAGES_WITHOUT_VMA HAVE_IOP_GET_INODE_ACL HAVE_IOV_ITER_IOVEC HAVE_MNT_IDMAP_ARG_GETATTR HAVE_MNT_IDMAP_ARG_GET_ACL HAVE_PAGEVEC HAVE_POSIX_ACL_TYPE HAVE_SG_SET_FOLIO HAVE_U64_CAPABILITY HAVE___IOV_MEMBER Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: I63059934626f123bcf4cb588a55adb2763719797
65122
master
J !B ✓T ✓R -2/2−
LU-20085 llite: client vfs rename hang
reviewing Alexander Zarochentsev · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 135d
5 unresolved
S +45 −0
135d
LU-20085 llite: client vfs rename hang
reviewing Alexander Zarochentsev · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 135d
5 unresolved
S +45 −0
135d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
you voted -1 on current PS
janitor run: 6 failing config(s), none unique to this patch — janitor results
build #123634 SUCCESS · tests all Maloo sessions
reviews:
James Simmons -1
no vote yet: Andrew Perepechko, Andreas Dilger
patchsets:
PS1 04-06
PS2 04-07
PS3 04-09
your previous vote: -1 on PS2 (2026-04-07 18:32) — now at PS3
threads: 3 need your reply · 2 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger namei.c:616 — (style) should be named `ll_d_ancestor()` so that it is more clear where it came from
Andreas Dilger
(style) should be named `ll_d_ancestor()` so that it is more clear where it came from (minor) should have a configure check for d_ancestor() export in case that is changed in upstream kernels.
reply Oleg Drokin namei.c:643 — note it's client console, but the usefullness is still questionable.
Andreas Dilger
(defect) This is OK for testing, but it isn't helpful to print this on the server console every time that someone passes the wrong arguments to `mv`. This should *at the very most* be CWARN(), but probably be a CDEBUG() since it could happen during normal operation and there isn't anything "wrong" with the filesystem that the admin needs to fix.
Oleg Drokin
note it's client console, but the usefullness is still questionable.
reply Alexander Zarochentsev namei.c:644 — sorry. wrong reply :-) Andreas, your comment is right.
Andreas Dilger
(defect) this is accessing "new" and "inode" after `dput(new)` and `iput(inode)` above. This should be printed first
Alexander Zarochentsev
ah yes. thanks!
Alexander Zarochentsev
seems not, new dentry (which is actually the "old" dentry found by the alias search, but the naming comes from d_splice_alias) has an extra ref from the search,
Alexander Zarochentsev
sorry. wrong reply :-) Andreas, your comment is right.
owner Alexander Zarochentsev · uploader Alexander Zarochentsev · PS3 uploaded 208d ago · NEW · open in Gerrit ↗
commit message
LU-20085 llite: client vfs rename hang ll_splice_alias doesn't try to reuse an existing dir alias if its name is not equal to the new one. It leads to a deadlock during rename when VFS tries to lock inodes to both names/dentries, the same inode getting locked twice. The code makes an exception for accessing Lustre ROOT inode by .lustre/fid/<ROOT_FID>, but doesn't allow the same for .lustre and .lustre/fid, these objects became not accessible by their FIDs using .lustre/fid/, the corresponding test case gets disabled. HPE-bug-id: LUS-13174 Signed-off-by: Alexander Zarochentsev <alexander.zarochentsev@hpe.com> Change-Id: I280c016208ecdc529d7735abb36dba3dc3d15df9
63054
master
J !B ✓T ✓R +2/2
LU-9646 lov: Add kernel doc style for LOV (3)
reviewing Arshad Hussain · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
dwg
stalled 149d
M +95 −75
149d
LU-9646 lov: Add kernel doc style for LOV (3)
reviewing Arshad Hussain · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
dwg
stalled 149d
M +95 −75
149d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
you voted +1 on current PS
janitor run: 5 failing config(s), none unique to this patch — janitor results
build #125602 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Anjus George +1 · Jian Yu +1
no vote yet: Andreas Dilger
patchsets:
PS1 12-14
PS2 05-27
your previous vote: +1 on PS1 (2026-05-25 12:47) — now at PS2
owner Arshad Hussain · uploader Arshad Hussain · PS2 uploaded 161d ago · NEW · open in Gerrit ↗
commit message
LU-9646 lov: Add kernel doc style for LOV (3) This patch converts existing functional comments to kernel doc style comments and removes '/**' for comments which is not meant to be a kernel-doc comment Test-Parameters: trivial Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Change-Id: Iab02ad42250207a279d07ff3dd1ea92648537699
63577
master
J ✗1B ✓T ✓R +1/2−
LU-9650 mdc: Add kernel doc style for MDC (2)
reviewing Arshad Hussain · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
dwg
stalled 158d
M +52 −30
158d
LU-9650 mdc: Add kernel doc style for MDC (2)
reviewing Arshad Hussain · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
dwg
stalled 158d
M +52 −30
158d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
you voted +1 on current PS
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity-hsm@zfs:test_254b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
build #125497 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Anjus George +1
no vote yet: Andreas Dilger
patchsets:
PS1 01-26
PS2 01-26
PS3 01-26
PS4 05-25
owner Arshad Hussain · uploader Arshad Hussain · PS4 uploaded 163d ago · NEW · open in Gerrit ↗
commit message
LU-9650 mdc: Add kernel doc style for MDC (2) This patch converts existing functional comments to kernel doc style comments and removes '/**' for comments which is not meant to be a kernel-doc comment Test-Parameters: trivial Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Change-Id: I72c5f143d93aff45916352b15c5cdfaa5e445119
62659
b2_15
B ✓T ✓R +4/1
LU-16051 o2iblnd: detect link state to set fatal error on ni
reviewing Etienne AUJAMES · you voted +1 on current PS
stalled 159d
M +192 −34
159d
LU-16051 o2iblnd: detect link state to set fatal error on ni
reviewing Etienne AUJAMES · you voted +1 on current PS
stalled 159d
M +192 −34
159d
build #118872 SUCCESS · tests all Maloo sessions
reviews:
Cyril Bordage +1 · James Simmons +1 · Serguei Smirnov +1 · Chris Horn +1
no vote yet: Frank Sehr
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS1 uploaded 347d ago · NEW · backport · open in Gerrit ↗
commit message
LU-16051 o2iblnd: detect link state to set fatal error on ni To avoid selecting lnet ni which corresponds to a downed link for sending, add a mechanism for detecting ip-layer link events in o2iblnd. On ip link up/down events, find corresponding ni and toggle ni_fatal_error_on flag. This complements the existing mechanism for ib-layer link event handling. Lustre-change: https://review.whamcloud.com/48644 Lustre-commit: 30d73908087d5b2f0b18cce95826c4825c030ad4 Test-Parameters: trivial Signed-off-by: Serguei Smirnov <ssmirnov@whamcloud.com> Change-Id: I4720cd0a7bc577a522c7d40b54f821a4c12b670f Reviewed-by: Frank Sehr <fsehr@whamcloud.com> Reviewed-by: Chris Horn <chris.horn@hpe.com> Reviewed-by: Cyril Bordage <cbordage@whamcloud.com> Reviewed-by: James Simmons <jsimmons@infradead.org> Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
62953
b2_15
J ✗3B ✓T ✓R +4/1
LU-18644 socklnd: make link state detection namespace-aware
reviewing Sonia Sharma · you voted +1 on current PS
stalled 159d
S +9 −2
159d
LU-18644 socklnd: make link state detection namespace-aware
reviewing Sonia Sharma · you voted +1 on current PS
stalled 159d
S +9 −2
159d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity-quota@zfs+DNE:test_1e | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs+DNE:test_1f | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-quota@zfs+DNE:test_1i | NEW unique failure for this branch in the last 30 days, and was seen 1 times across 1 other branches 1 reviews |
build #120187 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Adam Peace +1 · Chris Horn +1 · Timothy Day +1
no vote yet: Frank Sehr, Serguei Smirnov, Oleg Drokin
patchsets:
PS1 12-08
PS2 01-08
PS3 01-08
owner Sonia Sharma · uploader Sonia Sharma · PS3 uploaded 300d ago · NEW · backport · open in Gerrit ↗
commit message
LU-18644 socklnd: make link state detection namespace-aware Check the network namespace of the device in the event against the namespace associated with the ni and ignore events from non-matching namespaces Lustre-change: https://review.whamcloud.com/57808 Lustre-commit: b4748cb4684f5b2594d127b29f3876f07bd077ee Test-Parameters: trivial testlist=sanity-lnet Signed-off-by: Serguei Smirnov <ssmirnov@whamcloud.com> Reviewed-by: James Simmons <jsimmons@infradead.org> Reviewed-by: Chris Horn <chris.horn@hpe.com> Reviewed-by: Frank Sehr <fsehr@whamcloud.com> Reviewed-by: Adam Peace <adam.peace@microsoft.com> Reviewed-by: Oleg Drokin <green@whamcloud.com> Signed-off-by: Sonia Sharma <sonia.sh.sharma@oracle.com> Change-Id: I9698950497721a3eb3b0e161e59c2db778091138
39654
master
J –B ✓T ✓R -2/2−
LU-13903 build: Always include OpenSFS UAPI headers
reviewing Neil Brown · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 160d
XS +2 −2
160d
LU-13903 build: Always include OpenSFS UAPI headers
reviewing Neil Brown · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 160d
XS +2 −2
160d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
you voted -1 on current PS
build #16077 SUCCESS
reviews:
James Simmons -1
owner Neil Brown · uploader Neil Brown · PS1 uploaded 2275d ago · NEW · open in Gerrit ↗
commit message
LU-13903 build: Always include OpenSFS UAPI headers Various utils code including util/parser.c and util/nidstrings.c include files from the lnet,lustre/uapi directory, but that is not included in CPPFLAGS when configured with --disable-modules. There is no need to isolate the assignment to that case - we can safely add these directories unconditionally. Test-Parameters: trivial Signed-off-by: Mr NeilBrown <neilb@suse.de> Change-Id: I9974ad78ccabe84b1a0054c41bbc017503be231c
65171
master
J !B ✓T ✗28R +0/2−
LU-20101 osp: release procfs entries early
reviewing Alex Zhuravlev · blocked on the owner: enforced tests failed
stalled 164d
XS +1 −0
164d
LU-20101 osp: release procfs entries early
reviewing Alex Zhuravlev · blocked on the owner: enforced tests failed
stalled 164d
XS +1 −0
164d
blocked on the owner: enforced tests failed
you voted +1 on current PS
janitor run: 3 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-part-1 | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-part-2 | RHEL 8.10 / x86_64 | ran 21 tests. 6 tests failed: sanity-pfl, sanity-lnet, sanity-sec, sanity-lfsck, runtests, replay-dual. | session |
| review-dne-part-2 | RHEL 9.7 / x86_64 | ran 21 tests. 6 tests failed: sanity-pfl, sanity-lnet, sanity-sec, sanity-lfsck, runtests, replay-dual. | session |
| review-dne-part-3 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-3 | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-4 | RHEL 8.10 / x86_64 | ran 17 tests. 5 tests failed: sanity-quota, sanity-hsm, sanity-flr, mmp, insanity. | session |
| review-dne-part-4 | RHEL 9.7 / x86_64 | ran 17 tests. 5 tests failed: sanity-quota, sanity-hsm, sanity-flr, mmp, insanity. | session |
| review-dne-part-5 | RHEL 8.10 / x86_64 | ran 7 tests. 2 tests failed: sanityn, recovery-small. | session |
| review-dne-part-5 | RHEL 9.7 / x86_64 | ran 7 tests. 2 tests failed: sanityn, recovery-small. | session |
| review-dne-part-6 | RHEL 8.10 / x86_64 | ran 6 tests. 2 tests failed: ost-pools, replay-single. | session |
| review-dne-part-6 | RHEL 9.7 / x86_64 | ran 6 tests. 2 tests failed: ost-pools, replay-single. | session |
| review-dne-part-7 | RHEL 8.10 / x86_64 | ran 9 tests. 3 tests failed: sanity-scrub, sanity-pcc, large-scale. | session |
| review-dne-part-7 | RHEL 9.7 / x86_64 | ran 9 tests. 3 tests failed: sanity-scrub, sanity-pcc, large-scale. | session |
| review-dne-part-8 | RHEL 8.10 / x86_64 | ran 6 tests. 2 tests failed: replay-dual, replay-vbr. | session |
| review-dne-part-8 | RHEL 9.7 / x86_64 | ran 6 tests. 2 tests failed: replay-dual, replay-vbr. | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-selinux-ssk-part-2 | RHEL 8.10 / x86_64 | ran 9 tests. 3 tests failed: sanity-selinux, sanity-sec, recovery-small. | session |
| review-dne-zfs-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-2 | RHEL 8.10 / x86_64 | ran 21 tests. 6 tests failed: sanity-pfl, sanity-lnet, sanity-sec, sanity-lfsck, runtests, replay-dual. | session |
| review-dne-zfs-part-3 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-4 | RHEL 8.10 / x86_64 | ran 17 tests. 5 tests failed: sanity-quota, sanity-hsm, sanity-flr, mmp, insanity. | session |
| review-dne-zfs-part-5 | RHEL 8.10 / x86_64 | ran 7 tests. 2 tests failed: sanityn, recovery-small. | session |
| review-dne-zfs-part-6 | RHEL 8.10 / x86_64 | ran 6 tests. 2 tests failed: ost-pools, replay-single. | session |
| review-dne-zfs-part-7 | RHEL 8.10 / x86_64 | ran 9 tests. 3 tests failed: sanity-scrub, sanity-pcc, large-scale. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 9.7 / x86_64 | ran 7 tests. 2 tests failed: sanity-lnet, sanity. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 24.04 / x86_64 | ran 10 tests. 3 tests failed: sanity-sec, sanity-lnet, sanity. | session |
| review-zfs | RHEL 8.10 / x86_64 | ran 16 tests. 5 tests failed: sanity-lsnapshot, insanity, replay-single, sanity-flr, sanity-quota. | session |
31 optional test failure(s) — informational
build #124642 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Andreas Dilger -1
no vote yet: Mikhail Pershin
patchsets:
PS1 04-08
PS2 04-09
PS3 04-13
PS4 05-06
owner Alex Zhuravlev · uploader Alex Zhuravlev · PS4 uploaded 182d ago · NEW · open in Gerrit ↗
commit message
LU-20101 osp: release procfs entries early to prevent concurrent access to the internal structures being freed in parallel umount process. Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com> Change-Id: I9bc9e2d782fd6d4b1a0f64b0d28d8b7558de3d49
63339
master
J ✓B ✓T ✓R +3/2
LU-9636 ofd: Add kernel doc style for OFD (5)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
stalled 174d
L +149 −145
174d
LU-9636 ofd: Add kernel doc style for OFD (5)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
stalled 174d
L +149 −145
174d
build #120605 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Anjus George +1 · Andreas Dilger +1
patchsets:
PS1 01-12
PS2 01-16
owner Arshad Hussain · uploader Arshad Hussain · PS2 uploaded 292d ago · NEW · open in Gerrit ↗
commit message
LU-9636 ofd: Add kernel doc style for OFD (5) This patch converts existing functional comments to kernel doc style comments and removes '/**' for comments which is not meant to be a kernel-doc comment Test-Parameters: trivial Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Change-Id: I98ef715f8d0cd37842540ff586c5b481458ddfad
63340
master
J ✗1B ✓T ✓R +3/2
LU-9636 ofd: Add kernel doc style for OFD (6)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
stalled 174d
M +88 −98
174d
LU-9636 ofd: Add kernel doc style for OFD (6)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
stalled 174d
M +88 −98
174d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| recovery-small@zfs:test_155 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
build #120603 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Anjus George +1 · Andreas Dilger +1
patchsets:
PS1 01-12
PS2 01-16
owner Arshad Hussain · uploader Arshad Hussain · PS2 uploaded 292d ago · NEW · open in Gerrit ↗
commit message
LU-9636 ofd: Add kernel doc style for OFD (6) This patch converts existing functional comments to kernel doc style comments and removes '/**' for comments which is not meant to be a kernel-doc comment Test-Parameters: trivial Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Change-Id: Ie82da73be03be0a64a108060267ccb234e7038e6
63329
master
J !B ✓T ✓R +3/2
LU-9644 target: Add kernel doc style for target (3)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
stalled 174d
M +52 −45
174d
LU-9644 target: Add kernel doc style for target (3)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
stalled 174d
M +52 −45
174d
janitor run: 4 failing config(s), none unique to this patch — janitor results
build #120608 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Anjus George +1 · Andreas Dilger +1
patchsets:
PS1 01-12
PS2 01-16
owner Arshad Hussain · uploader Arshad Hussain · PS2 uploaded 292d ago · NEW · open in Gerrit ↗
commit message
LU-9644 target: Add kernel doc style for target (3) This patch converts existing functional comments to kernel doc style comments and removes '/**' for comments which is not meant to be a kernel-doc comment Test-Parameters: trivial Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Change-Id: I11f7f09aacafec5045e08976df6f152bbd7c3b96
63334
master
J ✓B ✓T ✓R +3/2
LU-9644 target: Add kernel doc style for target (7)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
stalled 174d
L +142 −157
174d
LU-9644 target: Add kernel doc style for target (7)
reviewing Arshad Hussain · you voted +1 on current PS
dwg
stalled 174d
L +142 −157
174d
build #120609 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Anjus George +1 · Andreas Dilger +1
patchsets:
PS1 01-12
PS2 01-16
owner Arshad Hussain · uploader Arshad Hussain · PS2 uploaded 292d ago · NEW · open in Gerrit ↗
commit message
LU-9644 target: Add kernel doc style for target (7) This patch converts existing functional comments to kernel doc style comments and removes '/**' for comments which is not meant to be a kernel-doc comment Test-Parameters: trivial Signed-off-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Change-Id: I8261aa798029c5b422878b29ba62aa4b1350eb1b
65344
b2_15
J !B ✓T ✓R +3/1
LU-14171 ldlm: fix wrong lock in __ldlm_del_waiting_lock
reviewing Etienne AUJAMES · you voted +1 on current PS
stalled 181d
XS +1 −1
181d
LU-14171 ldlm: fix wrong lock in __ldlm_del_waiting_lock
reviewing Etienne AUJAMES · you voted +1 on current PS
stalled 181d
XS +1 −1
181d
janitor run: 7 failing config(s), none unique to this patch — janitor results
build #123993 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Yang Sheng +1 · Sohei Koyama +1
no vote yet: Andreas Dilger
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS1 uploaded 203d ago · NEW · backport · open in Gerrit ↗
commit message
LU-14171 ldlm: fix wrong lock in __ldlm_del_waiting_lock
In __ldlm_del_waiting_lock(), when the head of the
waiting_locks_list is removed and the timer is recalculated
for the next lock, the delta computation incorrectly uses
the removed lock's timestamp instead of the next lock's.
The condition correctly checks next->l_callback_timestamp,
but the delta assignment uses lock->l_callback_timestamp
(the lock being removed). Since the removed lock's callback
has already arrived, its timestamp is at or before the
current time, making delta zero or negative. This causes
the timer to fire immediately, expiring the next lock
prematurely and leading to unnecessary client evictions.
Fix by using next->l_callback_timestamp in the delta
calculation, consistent with waiting_locks_callback().
Lustre-change: https://review.whamcloud.com/63845
Lustre-commit: 614580008484b1169ee8da627bef11571c2cc3df
Fixes: e150810faa5b ("LU-12931 timers: correctly offset mod_timer.")
Test-Parameters: trivial
Signed-off-by: Sohei Koyama <skoyama@ddn.com>
Change-Id: Idcecc1d882ccbdd458fc69f24b7684578bd7a776
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Andreas Dilger <adilger@thelustrecollective.com>
Reviewed-by: Yang Sheng <ys@whamcloud.com>
Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
64223
master
J !B ✓T ✓R +1/2−
LU-19922 mdc: free procfs entries early
reviewing Alex Zhuravlev · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 218d
XS +1 −1
218d
LU-19922 mdc: free procfs entries early
reviewing Alex Zhuravlev · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 218d
XS +1 −1
218d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
you voted +1 on current PS
janitor run: 9 failing config(s), none unique to this patch — janitor results
1 optional test failure(s) — informational
build #123091 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Andreas Dilger +1
no vote yet: Mikhail Pershin
patchsets:
PS1 02-25
PS2 03-30
your previous vote: +1 on PS1 (2026-03-18 17:28) — now at PS2
owner Alex Zhuravlev · uploader Alex Zhuravlev · PS2 uploaded 219d ago · NEW · open in Gerrit ↗
commit message
LU-19922 mdc: free procfs entries early so that they are release before anydata procfs can access like stats. Signed-off-by: Alex Zhuravlev <bzzz@whamcloud.com> Change-Id: I3b63b2a4a77c6b356127ab96eebb7e0441215d26
64950
master
J ✗2B ✓T ✗7R -1/2−
LU-19918 lnet: fix lnetctl import segfault with NID ranges
reviewing Stephane Thiell · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
2 unique failures
stalled 218d
M +169 −1
218d
LU-19918 lnet: fix lnetctl import segfault with NID ranges
reviewing Stephane Thiell · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
2 unique failures
stalled 218d
M +169 −1
218d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
you voted -1 on current PS
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-lnet@ldiskfs+DNE:test_255 | seen in 1 other review |
| sanity-lnet@zfs:test_255 | seen in 1 other review |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 | RHEL 8.10 / x86_64 | ran 11 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-part-2 | RHEL 9.5 / x86_64 | ran 11 tests. 1 tests failed: sanity-lnet. | session |
| review-dne-zfs-part-2 | RHEL 8.10 / x86_64 | ran 11 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 9.5 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, SLES 15.5 / x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 6 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 24.04 / x86_64 | ran 6 tests. 1 tests failed: sanity-lnet. | session |
10 optional test failure(s) — informational
build #122976 SUCCESS · tests all Maloo sessions
reviews:
James Simmons -1
no vote yet: Kilian Cavalotti
owner Stephane Thiell · uploader Stephane Thiell · PS1 uploaded 221d ago · NEW · open in Gerrit ↗
commit message
LU-19918 lnet: fix lnetctl import segfault with NID ranges
Handle route blocks in jt_import with a dedicated handler instead of
passing raw YAML events to the kernel via netlink. The kernel's
lnet_route_cmd() cannot parse NID range expressions (e.g.
10.52.0.[131-134]@o2ib4) in the gateway field, causing a segfault.
The new handle_route_sequence() parses route YAML entries and calls
yaml_lnet_route() for each one, which properly expands NID ranges via
lustre_lnet_parse_nid_range() before sending individual NIDs to the
kernel. This matches the behavior of the CLI path (lnetctl route add)
which already worked correctly with NID ranges.
This is a regression from 2.15 introduced when commit 56af81e1aa
(LU-10391) moved route handling in jt_import from the old ioctl API to
the netlink path without NID range expansion.
sanity-lnet test_255b exercises importing a route config with NID
range syntax in the gateway field.
Fixes: 56af81e1aa ("LU-10391 lnet: update Netlink commands functionality")
Signed-off-by: Kilian Cavalotti <kilian@stanford.edu>
Signed-off-by: Stephane Thiell <sthiell@stanford.edu>
Change-Id: I4a4c1b955487474acf10d01bc117850aea9119b4
56524
b2_15
B ✓T ✓R +4/1
LU-18260 o2iblnd: fix race between REJ vs kiblnd_connd
reviewing Etienne AUJAMES · you voted +1 on current PS
stalled 246d
S +24 −20
246d
LU-18260 o2iblnd: fix race between REJ vs kiblnd_connd
reviewing Etienne AUJAMES · you voted +1 on current PS
stalled 246d
S +24 −20
246d
build #107994 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Serguei Smirnov +1 · Chris Horn +1 · Andreas Dilger +1
no vote yet: Frank Sehr
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS1 uploaded 767d ago · NEW · backport · open in Gerrit ↗
commit message
LU-18260 o2iblnd: fix race between REJ vs kiblnd_connd
This patch fixes a possible race between CM_EVENT_REJECTED and
kiblnd_connd().
kiblnd_connd() set connection state to IBLND_CONN_DISCONNECTED
before removing the QP. So if CM_EVENT_REJECTED is received in this
time windows, it will cause the following crash:
Workqueue: ib_cm cm_work_handler [ib_cm]
all Trace:
<TASK>
dump_stack_lvl+0x34/0x48
panic+0x100/0x2d2
lbug_with_loc.cold+0x18/0x18 [libcfs]
kiblnd_cm_callback+0x108d/0x10b0 [ko2iblnd]
cma_cm_event_handler+0x1e/0xb0 [rdma_cm]
cma_ib_handler+0x8d/0x2e0 [rdma_cm]
cm_process_work+0x22/0x190 [ib_cm]
cm_rej_handler+0xdf/0x260 [ib_cm]
cm_work_handler+0x47f/0x4d0 [ib_cm]
process_one_work+0x1e8/0x390
worker_thread+0x53/0x3d0
kthread+0x124/0x150
ret_from_fork+0x1f/0x30
</TASK>
Lustre-change: https://review.whamcloud.com/56518
Lustre-commit: TBD (4c92a401be1e0a66f747a4bb68036f5f65753088)
Test-Parameters: trivial testlist=sanity-lnet
Fixes: 0b8c18d ("LU-17480 o2iblnd: add a timeout for rdma_connect")
Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
Change-Id: I2d04433eb51e1a6862b788a89e127d8abb24b8a9
55909
b2_15
J ✗1B ✓T ✓R +5/1
LU-17400 uapi: Fix incorrect snamelen return value
reviewing Etienne AUJAMES · you voted +1 on current PS
LTS15
stalled 319d
S +40 −2
319d
LU-17400 uapi: Fix incorrect snamelen return value
reviewing Etienne AUJAMES · you voted +1 on current PS
LTS15
stalled 319d
S +40 −2
319d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity2@zfs:test_272a | seen in 5 other reviews |
1 optional test failure(s) — informational
build #106506 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Arshad Hussain +1 · Josh Samuelson +1 · xinliang +1 · Timothy Day +1
no vote yet: Guillaume Courrier, Andreas Dilger
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS1 uploaded 824d ago · NEW · backport · open in Gerrit ↗
commit message
LU-17400 uapi: Fix incorrect snamelen return value
The sname char array is limited by the struct
changelog_rec.cr_namelen value and has no '\0' character allocated
to it, so strlen() will overrun the char array till it finds the next
'\0' char.
This issue can be seen on the client side when "lfs changelog"
is run and 08RENME record types are present.
Pointer arithmetic was used between sname and name to avoid the
GCC 11 warnings mentioned in 6331eadbd6.
Added Andreas's safety/range check code to changelog_rec_sname.
Lustre-change: https://review.whamcloud.com/53624
Lustre-commit: b8f4a96b5ebd5cd35747b0a061277d02d46e7a4c
Fixes: 6331eadbd6 ("LU-15420 uapi: avoid gcc-11 -Werror=stringop-overread")
Signed-off-by: Josh Samuelson <josh@1up.unl.edu>
Change-Id: Ie0817dfdd1d02e06b9399e66f1affaadb9e156c4
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Timothy Day <timday@amazon.com>
Reviewed-by: Arshad Hussain <arshad.hussain@aeoncomputing.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: xinliang <xinliang.liu@linaro.org>
Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
60266
b2_15
J !B ✓T ✓R +3/1
LU-16837 llite: handle unknown layout component
reviewing Andreas Dilger · you voted +1 on current PS
LTS15
stalled 320d
M +171 −22
320d
LU-16837 llite: handle unknown layout component
reviewing Andreas Dilger · you voted +1 on current PS
LTS15
stalled 320d
M +171 −22
320d
janitor run: 1 failing config(s), none unique to this patch — janitor results
build #119906 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Zhenyu Xu +1 · Vitaliy Kuznetsov +1
patchsets:
PS1 07-21
PS2 08-28
PS3 11-04
PS4 12-18
your previous vote: +1 on PS1 (2025-07-23 01:07) — now at PS4
owner Andreas Dilger · uploader Andreas Dilger · PS4 uploaded 320d ago · NEW · backport · open in Gerrit ↗
commit message
LU-16837 llite: handle unknown layout component
If lustre client encounters unknown layout component pattern in
a mirror file, this patch makes client mark this mirror as invalid
and skip it.
Lustre-change: https://review.whamcloud.com/51060
Lustre-commit: 14ed4a6f8f231fe94392906f991a32f07e7d7883
LU-16837 lov: NULL dereference in lov_delete_composite
commit 14ed4a6f8f retroduced the issue fixed by commit
5da049d9ef ("LU-14389 lov: avoid NULL dereference in cleanup), this
patch makes the fix cover the new case added by 14ed4a6f8f.
Lustre-change: https://review.whamcloud.com/52826
Lustre-commit: 250c6195fbe748d7c8f4c55888ed749de4cb95ce
Was-Change-Id: I4a2b72e21139b60519ed523b4851723c91f523c1
Signed-off-by: Bobi Jam <bobijam@whamcloud.com>
Change-Id: Ie5f44212ab96bdc706cc5a9e11f330234fc01069
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Vitaliy Kuznetsov <vkuznetsov@ddn.com>
60180
b2_15
J !B ✗T –R +3/1
LU-14301 client: use EOPNOTSUPP instead of ENOTSUPP
reviewing Gian-Carlo DeFazio · blocked on the owner: build failure
stalled 343d
S +12 −12
343d
LU-14301 client: use EOPNOTSUPP instead of ENOTSUPP
reviewing Gian-Carlo DeFazio · blocked on the owner: build failure
stalled 343d
S +12 −12
343d
blocked on the owner: build failure
you voted +1 on current PS
janitor run: 2 failing config(s), none unique to this patch — janitor results
build #118975 FAILURE
reviews:
James Simmons +1 · Alexander Zarochentsev +1 · Andreas Dilger +1
no vote yet: Neil Brown
patchsets:
PS1 07-14
PS2 11-26
your previous vote: +1 on PS1 (2025-11-25 20:09) — now at PS2
owner Gian-Carlo DeFazio · uploader Gian-Carlo DeFazio · PS2 uploaded 343d ago · NEW · backport · open in Gerrit ↗
commit message
LU-14301 client: use EOPNOTSUPP instead of ENOTSUPP Don't return NFS-specific error code ENOTSUPP back to userspace, instead use EOPNOTSUPP. ENOTSUPP does not print a useful error message from strerror() if it is hit by an application. Lustre-change: https://review.whamcloud.com/51511 Lustre-commit: ffd2fc1e17822c013d7790cc8247361c567792af Signed-off-by: Andreas Dilger <adilger@whamcloud.com> Signed-off-by: Gian-Carlo DeFazio <defazio1@llnl.gov> Change-Id: Iabd07b31069737e8ee7ca2382fd8cff6143ebbe5 Reviewed-by: Neil Brown <neilb@suse.de> Reviewed-by: jsimmons <jsimmons@infradead.org>
57767
b2_15
J ✗8B ✓T ✓R +2/1
LU-16973 ptlrpc: flush delayed file desc if idle
reviewing Etienne AUJAMES · you voted +1 on current PS
stalled 373d
S +44 −0
373d
LU-16973 ptlrpc: flush delayed file desc if idle
reviewing Etienne AUJAMES · you voted +1 on current PS
stalled 373d
S +44 −0
373d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity4@zfs:test_122b | seen in 5 other reviews |
| recovery-small@ldiskfs+DNE:test_24b | seen in 2 other reviews |
| sanity3@ldiskfs+DNE:test_812a | seen in 1 other review |
| sanity3@ldiskfs+DNE:test_812b | seen in 1 other review |
| sanity3@ldiskfs+DNE:test_812c | seen in 1 other review |
| sanity3@ldiskfs+DNE:test_816 | seen in 1 other review |
| sanity3@ldiskfs+DNE:test_818 | seen in 1 other review |
| sanity2@zfs:test_133d | seen in 4 other reviews |
1 optional test failure(s) — informational
build #117872 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Alex Zhuravlev +1
no vote yet: Andrew Perepechko, Alexander Boyko, Andreas Dilger, Neil Brown
patchsets:
PS1 01-15
PS2 10-16
PS3 10-24
your previous vote: +1 on PS1 (2025-01-15 19:30) — now at PS3
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS3 uploaded 376d ago · NEW · backport · open in Gerrit ↗
commit message
LU-16973 ptlrpc: flush delayed file desc if idle
The use of alloc_file_pseudo() allocates a real file descriptor,
so fput() will use a deferred cleanup for the descriptor, either
when the thread "finishes the syscall" (which never happens for
kernel threads), or a unmount time. This accumulates too many
file descriptors (millions) on a busy system.
Instead of waiting to cleanup these file descriptors at unmount
time, call flush_delayed_fput() to clean them up when a ptlrpcd
thread becomes idle before it goes to sleep.
For kernels 3.6 and later when flush_delayed_fput() was first added,
and before kernel 5.4 when it was EXPORT_SYMBOL'd, grab a pointer
to the function with kallsyms_lookup_name() so it can be called.
Delete LN_CONFIG_STRSCPY_EXISTS reference that generates configure
warnings, since this check was renamed and moved to libcfs.
Lustre-change: https://review.whamcloud.com/51805
Lustre-commit: 2feb4a7bb01c5e98763a62fb0bd64edf933c95de
Fixes: b0f150eba ("LU-13783 osd-ldiskfs: use alloc_file_pseudo to create fake files")
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: I24a08f9568d7d636a69672c5c3132ab25b292407
Reviewed-by: Neil Brown <neilb@suse.de>
Reviewed-by: Andrew Perepechko <andrew.perepechko@hpe.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Alexander Boyko <alexander.boyko@hpe.com>
Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com>
Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
41140
master
J !B ✓T ✓R +0/2−
LU-14295 o2iblnd: update default peer_credits value
reviewing Amir Shehata · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 441d
XS +2 −2
441d
LU-14295 o2iblnd: update default peer_credits value
reviewing Amir Shehata · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 441d
XS +2 −2
441d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
you voted +1 on current PS
janitor run: 1 failing config(s), none unique to this patch — janitor results
build #104192 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1
no vote yet: Serguei Smirnov, Chris Horn
owner Amir Shehata · uploader Serguei Smirnov · PS4 uploaded 932d ago · NEW · open in Gerrit ↗
commit message
LU-14295 o2iblnd: update default peer_credits value Update the peer_credits/peer_credits_hiw/concurrent_sends default values to 32/16/64 respectively, as these are the optimal values performance wise. The default peer_credits is used for socklnd as well. Therefore this patch will update the default socklnd peer_credits to 32 as well, which is desirable. Test-Parameters: trivial testlist=sanity-lnet Signed-off-by: Amir Shehata <ashehata@whamcloud.com> Change-Id: I0e7b7064b42b30629930af63706577117fc99a45
59519
master
J ✗3B ✓T ✓R ✗
LU-19080 shrinker: make ll_shrinker_create() compilable
reviewing Vladimir Saveliev · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; Vladimir Saveliev voted -1
needs rebaseCR -1
stalled 448d
XS +2 −2
448d
LU-19080 shrinker: make ll_shrinker_create() compilable
reviewing Vladimir Saveliev · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; Vladimir Saveliev voted -1
needs rebaseCR -1
stalled 448d
XS +2 −2
448d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; Vladimir Saveliev voted -1
you voted -1 on current PS
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity2@ldiskfs+DNE:test_56a | seen in 26 other reviews |
| conf-sanity2@ldiskfs+DNE:test_57a | seen in 26 other reviews |
| conf-sanity2@ldiskfs+DNE:test_57b | seen in 26 other reviews |
2 optional test failure(s) — informational
build #113874 SUCCESS · tests all Maloo sessions
reviews:
James Simmons -1 · Vladimir Saveliev -1
owner Vladimir Saveliev · uploader Vladimir Saveliev · PS1 uploaded 520d ago · NEW · open in Gerrit ↗
commit message
LU-19080 shrinker: make ll_shrinker_create() compilable ll_shrinker_create() does not compile with not defined HAVE_SHRINKER_ALLOC, e. g. for 5.14.0-503.40.1.el9.x86_64. Signed-off-by: Vladimir Saveliev <vladimir.saveliev@hpe.com> Change-Id: I386ef2954a0c211d4bc179a169710fd2cb1bd216
55951
master
J !B ✗T –R -1/2−
LU-14408 llite: add a Lustre inode cache shrinker
reviewing Etienne AUJAMES · blocked on the owner: build failure
stalled 456d
1 unresolved
L +474 −28
456d
LU-14408 llite: add a Lustre inode cache shrinker
reviewing Etienne AUJAMES · blocked on the owner: build failure
stalled 456d
1 unresolved
L +474 −28
456d
blocked on the owner: build failure
you voted -1 on current PS
janitor run: 1 failing config(s), none unique to this patch — janitor results
build #107151 FAILURE
reviews:
James Simmons -1
no vote yet: Qian Yingjin, Neil Brown, Lai Siyao
patchsets:
PS3 08-07
PS4 08-09
PS5 08-23
PS6 08-23
PS7 08-27
+2 earlier
PS1 08-07 PS2 08-07your previous vote: -1 on PS4 (2024-08-18 14:02) — now at PS7
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Etienne AUJAMES llite_internal.h:907 — Linux already use single list to store all the inodes sb->s_inodes (protected by a single lock). But I think that the last patch implementat
Andreas Dilger
Having a single list and spinlock could have noticeable contention on a many-core system, often 256+ cores today. This could have an array of LRUs (e.g. based on hash/modulo of inode number) with an array of spinlocks, like "struct blockgroup_lock", which is sized large enough to minimize contention, but not so large that it is one lock per core.
Etienne AUJAMES
Linux already use single list to store all the inodes sb->s_inodes (protected by a single lock). But I think that the last patch implementation prevent most of the application overheads.
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS7 uploaded 799d ago · NEW · open in Gerrit ↗
commit message
LU-14408 llite: add a Lustre inode cache shrinker This provides a way to shrink the unused inode cache (inodes not covered by LDLM locks) for a Lustre superblock. The following command will drop all the unused inodes for <fsname>: # lctl set_param llite.<fsname>-*.inode_cache=clear The following command will disable the unused inode cache: # lctl set_param llite.<super>.inode_cache=0 # lctl get_param -n llite.<super>.inode_cache max_cached_mb: 0 max_cached_cnt: 0 unused_inode_mb: 0 unused_inode_cnt: 0 The following command will enable the inode cache without limit: enabled: 1 # lctl set_param llite.<super>.inode_cache=1 or # lctl set_param llite.<super>.inode_cache=unlimited # lctl get_param llite.<super>.inode_cache max_cached_mb: unlimited max_cached_cnt: unlimited unused_inode_mb: 0 unused_inode_cnt: 100 The following command will limit the unused inode cache to 5MiB: # lctl set_param llite.<super>.inode_cache=5M # lctl get_param -n llite.<super>.inode_cache max_cached_mb: 5 max_cached_cnt: 3450 unused_inode_mb: 0 unused_inode_cnt: 100 Add regression tests: sanity 433b, 433c and 433d. Test-Parameters: clientdistro=ubuntu2204 testlist=sanity env=ONLY=433 Test-Parameters: clientdistro=el9.4 testlist=sanity env=ONLY=433 Test-Parameters: clientdistro=el8.10 testlist=sanity env=ONLY=433 Signed-off-by: Etienne AUJAMES <eaujames@ddn.com> Change-Id: I93554e8bc32b55d234fc255abdfee8743a0e3dc0
13342
master
J –B ✓T ✓R -1/2−
LU-5570 lnet: check router aliveness timestamp
reviewing Liang Zhen · you voted -1 on current PS
stalled 456d
M +122 −84
456d
LU-5570 lnet: check router aliveness timestamp
reviewing Liang Zhen · you voted -1 on current PS
stalled 456d
M +122 −84
456d
reviews:
James Simmons -1
no vote yet: Doug Oucharek, Amir Shehata, Andreas Dilger, Isaac Huang
owner Liang Zhen · uploader Liang Zhen · PS4 uploaded 4314d ago · NEW · open in Gerrit ↗
commit message
LU-5570 lnet: check router aliveness timestamp In current LNet, peer aliveness timestamp is only recorded for peers on routers, this patch changes this and also record aliveness of routers on regular nodes, so lnet can check aliveness timestamp of routers before sending message, avoid to choose router which has old aliveness timestamp and could be potentially dead or congested. Please check this patch for history of it: http://review.whamcloud.com/11748 Signed-off-by: Liang Zhen <liang.zhen@intel.com> Change-Id: I57874d6305d5d18faeff7452fc9ae95f04c43fdd
31031
master
J –B ✓T ✗3R -2/2−
LU-10003 tests: replace lctl with lnetctl for lnet
reviewing Amir Shehata · blocked on the owner: enforced tests failed
stalled 456d
M +35 −18
456d
LU-10003 tests: replace lctl with lnetctl for lnet
reviewing Amir Shehata · blocked on the owner: enforced tests failed
stalled 456d
M +35 −18
456d
blocked on the owner: enforced tests failed
you voted -1 on current PS
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-3 | CentOS 7.0/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-2 crashed | CentOS 7.0/x86_64 | ran 12 tests. 1 tests failed: sanity-hsm. %% THIS TEST SESSION CRASHED %% | session |
| review-zfs | CentOS 7.0/x86_64 | ran 8 tests. 1 tests failed: conf-sanity. | session |
3 optional test failure(s) — informational
build #1845 SUCCESS
reviews:
James Simmons -1 · Alexey Lyashkov -1
no vote yet: James Nunez, Andreas Dilger, Sonia Sharma
owner Amir Shehata · uploader James Nunez · PS5 uploaded 2912d ago · NEW · open in Gerrit ↗
commit message
LU-10003 tests: replace lctl with lnetctl for lnet Replace lctl [net|list_nids|ping] with the appropriate lnetctl commands Signed-off-by: Amir Shehata <amir.shehata@intel.com> Change-Id: I51f324df42eaa6a1ac7d59374db67a373e3ee6e5
31313
master
J –B ✓T ✓R +2/2
LU-10669 lnet: do not assert in lnet_msg_detach_md()
reviewing Amir Shehata · you voted +1 on current PS
stalled 456d
S +19 −0
456d
LU-10669 lnet: do not assert in lnet_msg_detach_md()
reviewing Amir Shehata · you voted +1 on current PS
stalled 456d
S +19 −0
456d
reviews:
James Simmons +1 · Olaf Weber +1 · Oleg Drokin -1 · Sonia Sharma +1
no vote yet: Alex Lyashkov, Andreas Dilger, Doug Oucharek
owner Amir Shehata · uploader Amir Shehata · PS1 uploaded 3184d ago · NEW · open in Gerrit ↗
commit message
LU-10669 lnet: do not assert in lnet_msg_detach_md() There appears to be a scenario where lnet_msg_detach_md() can be called twice on the same msg/md pair. Print out more information about the message and the md instead of asserting. Signed-off-by: Amir Shehata <amir.shehata@intel.com> Change-Id: I54813d1db89f55a20833fbbe5d3248014375cb93
33901
master
J –B ✓T ✗2R -1/2−
LU-11735 lnd: clean up fmr/FastReg condition
reviewing Amir Shehata · blocked on the owner: enforced tests failed
stalled 456d
M +55 −26
456d
LU-11735 lnd: clean up fmr/FastReg condition
reviewing Amir Shehata · blocked on the owner: enforced tests failed
stalled 456d
M +55 −26
456d
blocked on the owner: enforced tests failed
you voted -1 on current PS
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-2 | CentOS 7.0/x86_64 | ran 10 tests. 1 tests failed: sanity-scrub. | session |
| review-dne-zfs-part-2 | CentOS 7.0/x86_64 | ran 10 tests. 1 tests failed: sanity-sec. | session |
2 optional test failure(s) — informational
build #60834 SUCCESS
reviews:
James Simmons -1
owner Amir Shehata · uploader Amir Shehata · PS1 uploaded 2876d ago · NEW · open in Gerrit ↗
commit message
LU-11735 lnd: clean up fmr/FastReg condition First patch to do some minor cleanup around selecting which memory registration to use. Previously we used a bool, now we use an enum in case there are different types of memory registration to support in the future. Signed-off-by: Amir Shehata <ashehata@whamcloud.com> Change-Id: I0979c87dbd14f77cba4f2c45d8e54508bcc1f090
36521
master
J !B ✓T ✗1R +1/2
LU-12885 mdc: remove flags argument from pack functions
reviewing Andreas Dilger · blocked on the owner: enforced tests failed
stalled 456d
M +42 −47
456d
LU-12885 mdc: remove flags argument from pack functions
reviewing Andreas Dilger · blocked on the owner: enforced tests failed
stalled 456d
M +42 −47
456d
blocked on the owner: enforced tests failed
you voted +1 on current PS
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-4 | CentOS 8.3/x86_64 | ran 10 tests. 1 tests failed: sanity-quota. | session |
build #19358 SUCCESS
reviews:
James Simmons +1
no vote yet: Arshad Hussain, Neil Brown
owner Andreas Dilger · uploader Andreas Dilger · PS5 uploaded 2075d ago · NEW · open in Gerrit ↗
commit message
LU-12885 mdc: remove flags argument from pack functions Remove the flags argument from mdc_pack_body() and mdc_getattr_pack() functions. All of the callers explicitly pass 0 to the functions, except mdc_xattr_common() which gets 0 directly from mdc_getxattr(), while mdc_setxattr() passes opcode = MDS_REINT and does not call mdc_pack_body() in this case. Rename the xattr_flags to make it clear what kind of flags they are. Signed-off-by: Andreas Dilger <adilger@whamcloud.com> Change-Id: I5d0ab202f1405e2aa4269020d8d274e69a3ebbe5
46112
master
J –B ✓T ✗3R -1/2−
EXA-4252 debian: remove mpi dependency in debs
reviewing Louis Douriez · blocked on the owner: enforced tests failed
stalled 456d
S +6 −6
456d
EXA-4252 debian: remove mpi dependency in debs
reviewing Louis Douriez · blocked on the owner: enforced tests failed
stalled 456d
S +6 −6
456d
blocked on the owner: enforced tests failed
you voted -1 on current PS
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-selinux-ssk-part-1 | CentOS 8.3/x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-1 | CentOS 8.3/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-2 | CentOS 8.3/x86_64 | ran 7 tests. 1 tests failed: replay-dual. | session |
build #85599 SUCCESS · tests all Maloo sessions
reviews:
James Simmons -1
owner Louis Douriez · uploader Louis Douriez · PS1 uploaded 1755d ago · NEW · open in Gerrit ↗
commit message
EXA-4252 debian: remove mpi dependency in debs Remove mpi-default-bin and mpi-default-dev dependencies for all debian packages except lustre-tests Change-Id: I28145d47598d0bf449351f40215236adbb3565e9 Signed-off-by: ldouriez <ldouriez@ddn.com>
46377
master
J ✗1B ✓T ✗1R -1/2−
LU-15501 obdclass: cli access in obd_set_max_rpcs_in_flight racy
reviewing Oleg Drokin · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
1 unique failure
stalled 456d
S +26 −3
456d
LU-15501 obdclass: cli access in obd_set_max_rpcs_in_flight racy
reviewing Oleg Drokin · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
1 unique failure
stalled 456d
S +26 −3
456d
blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
you voted -1 on current PS
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| replay-dual@zfs:test_26 | seen in 1 other review |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-3 | CentOS 8.3/x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
1 optional test failure(s) — informational
build #85946 SUCCESS · tests all Maloo sessions
reviews:
James Simmons -1
no vote yet: Andreas Dilger
owner Oleg Drokin · uploader Oleg Drokin · PS1 uploaded 1740d ago · NEW · open in Gerrit ↗
commit message
LU-15501 obdclass: cli access in obd_set_max_rpcs_in_flight racy also in obd_set_max_mod_rpcs_in_flight. Parallel osc teardown can set cli->import to NULL causing a NULL pointer dereference. Protect access with cli_sem Change-Id: Ia128ff5895be2ec037f09e07d0395889b9861148 Signed-off-by: Oleg Drokin <green@whamcloud.com>
48068
master
J –B ✓T ✓R -1/2−
LU-16053 build: osd-zfs use parallel configure macros
reviewing Brian Behlendorf · you voted -1 on current PS
stalled 456d
L +550 −355
456d
LU-16053 build: osd-zfs use parallel configure macros
reviewing Brian Behlendorf · you voted -1 on current PS
stalled 456d
L +550 −355
456d
build #96796 SUCCESS · tests all Maloo sessions
reviews:
James Simmons -1
no vote yet: Arshad Hussain, Shaun Tancheff, Andreas Dilger, Petros Koutoupis, Jian Yu
patchsets:
PS3 07-28
PS4 04-03 Shaun Tancheff
PS5 05-01 Shaun Tancheff
PS6 08-03 Shaun Tancheff
PS7 08-10 Shaun Tancheff
+2 earlier
PS1 07-28 PS2 07-28your previous vote: -1 on PS5 (2023-05-10 13:39) — now at PS7
owner Brian Behlendorf · uploader Shaun Tancheff · PS7 uploaded 1182d ago · NEW · open in Gerrit ↗
commit message
LU-16053 build: osd-zfs use parallel configure macros The infrastructure to parallelize the kernel configure checks was added in LU-13485 but has only been lightly used. Update the OpenZFS configure checks to make use of the new macros. This reduces the time for these checks to a few seconds. As part of this change the ZFS configure output has also been standardized across all checks. Tested with OpenZFS 2.0.7 and 2.1.5 releases on RHEL 8.6. Test-Parameters: trivial Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: I5be09dce191c1d69bfa8434a716e0d9e75c53344
49281
master
J ✗1B ✓T ✓R +1/2−
LU-13642 lnet: Allow static IP specification
reviewing Frank Sehr · you voted -1 on current PS
stalled 456d
1 unresolved
L +266 −20
456d
LU-13642 lnet: Allow static IP specification
reviewing Frank Sehr · you voted -1 on current PS
stalled 456d
1 unresolved
L +266 −20
456d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity2@zfs+DNE:test_230n | seen in 26 other reviews |
build #92772 SUCCESS · tests all Maloo sessions
reviews:
Cyril Bordage +1 · James Simmons -1 · Serguei Smirnov +1
no vote yet: Amir Shehata, Andreas Dilger, Neil Brown
patchsets:
PS6 02-06
PS7 02-06
PS8 02-17
PS9 02-21
PS10 03-01
+5 earlier
PS1 11-30 PS2 11-30 PS3 12-06 PS4 02-03 PS5 02-04your previous vote: -1 on PS7 (2023-02-07 01:14) — now at PS10
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Frank Sehr lib-lnet.h:503 — Sounds good. Thanks
Neil Brown
I think you should be passing in a 'struct sockaddr', not a 'struct lnet_nid'. That would remove James' complaint about passing LNET_NET_ANY.
Frank Sehr
Sounds good. Thanks
owner Frank Sehr · uploader Frank Sehr · PS10 uploaded 1343d ago · NEW · open in Gerrit ↗
commit message
LU-13642 lnet: Allow static IP specification Allows selecting an interface by specifying an IP address(NID) in the lustre.conf (lnet.conf) file or as parameter in the module start. example: networks=tcp1(1.2.3.4) The change does not have any effect on current configurations. Changes for IPV6 are included, but not activated and tested. Further IPV6 changes are not integrated. For further reference please read IP specification in LNet https://wiki.whamcloud.com/display/LNet/IP+specification+in+LNet Test-Parameters: trivial Signed-off-by: Frank Sehr <fsehr@whamcloud.com> Change-Id: I8c6eed84d621abcc87507f90b84f3f8892739907
51165
master
J !B ✓T ✗4R +2/2
LU-14639 build: Remove disable-lru-resize config
reviewing Patrick Farrell · blocked on the owner: enforced tests failed
stalled 456d
1 unresolved
M +2 −126
456d
LU-14639 build: Remove disable-lru-resize config
reviewing Patrick Farrell · blocked on the owner: enforced tests failed
stalled 456d
1 unresolved
M +2 −126
456d
blocked on the owner: enforced tests failed
you voted +1 on current PS
janitor run: 1 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-selinux-ssk-part-2 | RHEL 8.7/x86_64 | ran 5 tests. 1 tests failed: sanity-sec. | session |
| review-dne-zfs-part-1 | RHEL 8.7/x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-5 crashed | RHEL 8.7/x86_64 | ran 6 tests. 1 tests failed: sanityn. %% THIS TEST SESSION CRASHED %% | session |
| review-zfs crashed | RHEL 8.7/x86_64 | ran 10 tests. 2 tests failed: replay-single, sanity-quota. %% THIS TEST SESSION CRASHED %% | session |
1 optional test failure(s) — informational
build #95222 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Sebastien Buisson +1
no vote yet: Shuichi Ihara, Andreas Dilger, Oleg Drokin
patchsets:
PS1 05-30
PS2 05-31
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Patrick Farrell lustre-core.m4:207 — Huh, I wonder how this got lost in pushing the patch up... Weird.
Sebastien Buisson
So you are not removing this config check? ;-)
Patrick Farrell
Huh, I wonder how this got lost in pushing the patch up... Weird.
owner Patrick Farrell · uploader Patrick Farrell · PS2 uploaded 1252d ago · NEW · open in Gerrit ↗
commit message
LU-14639 build: Remove disable-lru-resize config The lru-resize feature is disabled at runtime by setting lru_resize to 0. If it is compiled out or disabled at mount time, then it can never be enabled without recompiling or remounting. Disabling it like this doesn't offer any advantages, and and all customers disabling it are setting lru_size manually already. Let's remove the extra ways to disable lru-resize to avoid confusion and possible bugs. This patch also removes checks in the tests which verify the client and server have lru-resize support. Servers have had lru-resize support for several years, and with this patch, it becomes impossible to build clients without it either. Signed-off-by: Patrick Farrell <pfarrell@whamcloud.com> Change-Id: I801b9eb8cf280e37bc81b3adade7973e295d151f
51908
master
J –B ✓T –R +0/2−
LU-17022 obdclass: rename obd_dev_lock to obd_devs_lock
reviewing Neil Brown · you voted -1 on current PS
stalled 456d
M +88 −89
456d
LU-17022 obdclass: rename obd_dev_lock to obd_devs_lock
reviewing Neil Brown · you voted -1 on current PS
stalled 456d
M +88 −89
456d
build #96741 SUCCESS
reviews:
James Simmons -1 · Andreas Dilger +1
no vote yet: Timothy Day
owner Neil Brown · uploader Neil Brown · PS1 uploaded 1183d ago · NEW · open in Gerrit ↗
commit message
LU-17022 obdclass: rename obd_dev_lock to obd_devs_lock obd_dev_lock locks all devs, not just one. And the same is the same of that of a lock in struct obd_device - which can be confusing. So rename to obd_devs_lock. Test-Parameters: forbuildonly Signed-off-by: Mr NeilBrown <neilb@suse.de> Change-Id: I562b5535ed9b4528705f9e030375577ea5fa0fcb
33911
master
J –B ✓T ✓R +0/2−
LU-11824 build: Optionally package LNDs in their own RPM
reviewing Sebastien Piechurski · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 456d
S +40 −2
456d
LU-11824 build: Optionally package LNDs in their own RPM
reviewing Sebastien Piechurski · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
stalled 456d
S +40 −2
456d
blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
you voted -1 on current PS
build #15306 SUCCESS
reviews:
Alexey Lyashkov +1 · James Simmons -1 · Nathaniel Clark +1
no vote yet: Minh Diep, Nikitas Angelinas, Bruno Travouillon, Andreas Dilger, Li Xi
owner Sebastien Piechurski · uploader Sebastien Piechurski · PS13 uploaded 2322d ago · NEW · open in Gerrit ↗
commit message
LU-11824 build: Optionally package LNDs in their own RPM For Lustre vendors, it is desirable to maintain a single set of packages for a given build that will be used for all kind of hardware. However, some LNDs can bring external dependencies which are not wanted on some node. For example, the o2ib LND built against Mellanox OFED will bring dependencies on the Mellanox OFED kernel modules, thus requiring with the current packaging to install Mellanox OFED even on the nodes which will only use Ethernet (and not even have IB hardware installed). This patch adds a configure and RPM build time option to package chosen LNDs in their own RPM, binding the dependencies to only the specific LND package. The --with-separate_lnds=o2ib option at configure time (followed by make rpms) or --define 'separate_lnds o2ib' at rpmbuild time will remove the ko2iblnd kernel module from the kmod-lustre package and create an additional kmod-lustre-lnd-o2ib package with the o2ib LND. Several LNDs can be listed at once (separated spaces), in which case each listed LND will be packaged in its own RPM. When the option is not specified, the current behavior remains (packaging all built LNDs in the same kmod-lustre RPM). Signed-off-by: Sebastien Piechurski <sebastien.piechurski@atos.net> Change-Id: I169edb40ebbcfc8c4bcb75e1a56a28bf437f5c9b Test-Parameters: trivial
56382
master
J ✓B ✓T ✓R -1/2−
LU-18227 ldiskfs: refresh Ubuntu 22.04 5.15
reviewing Shaun Tancheff · you voted -1 on current PS
stalled 463d
XL +1784 −8
463d
LU-18227 ldiskfs: refresh Ubuntu 22.04 5.15
reviewing Shaun Tancheff · you voted -1 on current PS
stalled 463d
XL +1784 −8
463d
build #112318 SUCCESS · tests all Maloo sessions
reviews:
James Simmons -1
no vote yet: Jian Yu, Timothy Day
patchsets:
PS1 09-17
PS2 09-17
PS3 04-08
owner Shaun Tancheff · uploader Shaun Tancheff · PS3 uploaded 575d ago · NEW · open in Gerrit ↗
commit message
LU-18227 ldiskfs: refresh Ubuntu 22.04 5.15 Refresh Ubuntu 5.15 ldiskfs kernel, tested with 5.15.0-122-generic Update ext4-data-in-dirent.patch and ext4-prealloc.patch and create a new series for 22.04 Test-Parameters: trivial Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: I5b8f3ebbaf31c07322a818c151c9f9e939bdf0b0
47613
b2_15
B ✓T ✓R +4/1
LU-15509 lnet: Ping buffer ref leak in lnet_peer_data_present
reviewing Olaf Faaland · you voted +1 on current PS
stalled 659d
XS +7 −2
659d
LU-15509 lnet: Ping buffer ref leak in lnet_peer_data_present
reviewing Olaf Faaland · you voted +1 on current PS
stalled 659d
XS +7 −2
659d
build #87961 SUCCESS · tests all Maloo sessions
reviews:
Cyril Bordage +1 · James Simmons +1 · Gian-Carlo DeFazio +1 · Chris Horn +1
no vote yet: Serguei Smirnov, Andreas Dilger, Oleg Drokin
patchsets:
PS1 06-13
PS2 06-15 Chris Horn
your previous vote: +1 on PS1 (2022-06-14 19:04) — now at PS2
owner Olaf Faaland · uploader Chris Horn · PS2 uploaded 1602d ago · NEW · backport · open in Gerrit ↗
commit message
LU-15509 lnet: Ping buffer ref leak in lnet_peer_data_present
lnet_peer_merge_data() and lnet_peer_set_primary_data() are
responsible for dropping the reference on the ping buffer that is
taken by lnet_peer_push_event() and lnet_discovery_event_reply().
However, there are some error paths in lnet_peer_data_present()
where we do not call either lnet_peer_merge_data() or
lnet_peer_set_primary_data(). In these cases, we need to drop
the reference on the ping buffer otherwise it will leak.
Lustre-change: https://review.whamcloud.com/46431
Lustre-commit: 4de9793654ec1b2f08d93f74f7391c4245ab8769
Fixes: 0f1aaad4c1b ("LU-9480 lnet: implement Peer Discovery")
HPE-bug-id: LUS-10715
Test-Parameters: trivial testlist=sanity-lnet
Signed-off-by: Chris Horn <chris.horn@hpe.com>
Signed-off-by: Olaf Faaland <faaland1@llnl.gov>
Change-Id: I36ba0017caa9d6ce139f94090912496f14eda626
Reviewed-by: Andriy Skulysh <andriy.skulysh@hpe.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Serguei Smirnov <ssmirnov@whamcloud.com>
Reviewed-by: Cyril Bordage <cbordage@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
55199
b2_15
J ✗1B –T –R +1/1
LU-9839 clio: lov active ios accounting fix
reviewing Andreas Dilger · blocked on the owner: janitor: test failures unique to this patch
1 unique failure
LTS15
stalled 715d
S +16 −8
715d
LU-9839 clio: lov active ios accounting fix
reviewing Andreas Dilger · blocked on the owner: janitor: test failures unique to this patch
1 unique failure
LTS15
stalled 715d
S +16 −8
715d
blocked on the owner: janitor: test failures unique to this patch
you voted +1 on current PS
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanityn@ldiskfs+DNE:test_80b | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
reviews:
James Simmons +1
no vote yet: Alexander Zarochentsev, Patrick Farrell
patchsets:
PS1 05-25
PS2 06-15
PS3 11-05
your previous vote: +1 on PS1 (2024-05-25 22:26) — now at PS3
owner Andreas Dilger · uploader Andreas Dilger · PS3 uploaded 728d ago · NEW · backport · open in Gerrit ↗
commit message
LU-9839 clio: lov active ios accounting fix ASSERT(atomic_read(&lov->lo_active_ios)==0) is triggered due to a bug in active_ios accounting. For some cl_io_init(,CIT_MISC,,) calls increment the lov_active_ios counter is not protected by the layout lock. So the checks for active_ios != 0 are racy and not preventing another thread from starting new cl_io and incrementing the active_ios counter after any check but before the assertion. The lov_active_ios counter increment should be done under the same condition as taking the layout type lock. The ci_type=CIT_MISC and ci_ignore_layout=1 should not be used in ll_dom_finish_open() as the I/O doesn't come "from the osc layer" and may race with a layout change. Lustre-change: https://review.whamcloud.com/51638 Lustre-commit: 5bc1dd825b700677b002a43463a463c3ccb665ec HPE-bug-id: LUS-11628 Signed-off-by: Alexander Zarochentsev <alexander.zarochentsev@hpe.com> Change-Id: I35fda85b968b847a87e73dd36bbb1648c744d62c Reviewed-by: Mikhail Pershin <mpershin@whamcloud.com> Reviewed-by: James Simmons <jsimmons@infradead.org> Reviewed-by: Patrick Farrell <pfarrell@whamcloud.com> Reviewed-by: Vitaly Fertman <vitaly.fertman@hpe.com>
53655
b2_15
J ✗2B ✓T ✓R +1/1
LU-15722 osd-ldiskfs: fix write stuck for 64K PAGE_SIZE
reviewing xinliang · you voted +1 on current PS
LTS15
stalled 807d
M +36 −15
807d
LU-15722 osd-ldiskfs: fix write stuck for 64K PAGE_SIZE
reviewing xinliang · you voted +1 on current PS
LTS15
stalled 807d
M +36 −15
807d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity-flr@ldiskfs+DNE:test_203 | seen in 1 other review |
| sanity-flr@ldiskfs+DNE:test_204e | seen in 1 other review |
build #105501 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1
no vote yet: Alexey Lyashkov
patchsets:
PS1 01-12
PS2 05-29 Andreas Dilger
PS3 06-14 Andreas Dilger
owner xinliang · uploader Andreas Dilger · PS3 uploaded 872d ago · NEW · backport · open in Gerrit ↗
commit message
LU-15722 osd-ldiskfs: fix write stuck for 64K PAGE_SIZE
This fixes below IO write stuck issue:
-----
[606895.151765] LustreError:
334886:0:(ofd_io.c:1389:ofd_commitrw_write()) lustre-OST0000: restart IO
write too many times: 10000
[606895.207345] LustreError:
334886:0:(ofd_io.c:1389:ofd_commitrw_write()) Skipped 8 previous similar
messages
-------
Which goes into an infinite loop:
ofd_commitrw_write()->osd_write_commit()->osd_ldiskfs_map_inode_pages()
->ldiskfs_map_blocks()->ofd_commitrw_write()
The cause is that:
For 64K PAGE_SIZE blocks allocation/mapping. m_lblk should be the
first un-allocated block if m_lblk points at an already allocated
block when create = 1, ldiskfs_map_blocks() will just return with
already allocated blocks and without allocating any new requested
blocks for the extent.
This stuck issue won't happen on 4K PAGE_SIZE. Because for
PAGE_SIZE = blocksize case, if m_lblk points at an already
allocated block it will point at an un-allocated block in next
restart transaction, because the already mapped block/page will
be filtered out in next restart transaction via flag
OBD_BRW_DONE in osd_declare_write_commit().
Lustre-commit: 48ccf2db8495344e1d0c39f8bed0969279e29db4
Lustre-change: https://review.whamcloud.com/47004
Change-Id: Iadba0be8875a15a2e2f158ec9571f5ece5637ae0
Signed-off-by: Xinliang Liu <xinliang.liu@linaro.org>
Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Signed-off-by: Xinliang Liu <xinliang.liu@linaro.org>
LU-15722 osd-ldiskfs: fix write stuck for 64K PAGE_SIZE
This reverts a previous commit for large PAGE_SIZE to fix a stuck IO
issue in another way.
One more ldiskfs_map_blocks() can't fix the write stuck for PAGE_SIZE
> BLOCK_SIZE. It still gets stuck in some tests like sanity-dom fsx.
Because each time ldiskfs_map_blocks() lookup it only return a
continuous range physical blocks. If a page has multiple continuous
range blocks, then it needs multiple ldiskfs_map_blocks() lookups to
find out all the already mapped blocks.
The fixed idea here is to record the already written blocks of the
start page and skip them at the next write retry.
This also fix and cleanup osd_mark_page_io_done() when start_blocks
is non-zero.
Lustre-commit: 176ea3a4599ede8b1a0c91506dcd34bc162f2959
Lustre-change: https://review.whamcloud.com/47563
Fixes: 176ea3a4599e ("LU-15722 osd-ldiskfs: fix IO write gets stuck for 64K PAGE_SIZE")
Change-Id: I9c14d5d0aa23e81837dacb01d050c091e6a79148
Signed-off-by: Xinliang Liu <xinliang.liu@linaro.org>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Alexey Lyashkov <alexey.lyashkov@hpe.com>
Signed-off-by: Xinliang Liu <xinliang.liu@linaro.org>
55811
b2_15
J ✗1B ✓T ✓R +1/1
LU-17308 mgs: move pool_cmd check to the kernel
reviewing Etienne AUJAMES · you voted +1 on current PS
stalled 807d
XL +642 −688
807d
LU-17308 mgs: move pool_cmd check to the kernel
reviewing Etienne AUJAMES · you voted +1 on current PS
stalled 807d
XL +642 −688
807d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity-scrub@ldiskfs+DNE:test_12 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
1 optional test failure(s) — informational
build #106269 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1
no vote yet: Guillaume Courrier, Andreas Dilger
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS1 uploaded 837d ago · NEW · backport · open in Gerrit ↗
commit message
LU-17308 mgs: move pool_cmd check to the kernel Several checks for pool_cmd need to be done before touching the MGS configuration. e.g: the following case should be denied before adding a destroy record in the MGS configurations: - The pool does not exist - The pool is not empty (OSTs still in the pool) This work is done in userspace (check_pool_cmd) by checking the client lov parameters for pools. But nothing guarantees those parameters to be in sync. So, only the MGS configuration should be trusted for that. This patch move those checks in the kernel. There are several reasons for this: - It guarantees the pool configurations consistency even if an external tool is used. - For standalone MGS, it limits the overhead of reading the configuration several times. This patch add a "-n|--nowait" option for pool_cmd to skip waiting for pool updates on the clients. This is useful when doing a lot of pool_cmd in a raw. And this avoids cancelling clients CONFIG lock each times (because of mgc_requeue_timeout_min). e.g: lctl pool_destroy -n lustre.old lctl pool_new -n lustre.test lctl pool_add -n lustre.test OST0001 ... lctl pool_add lustre.test OST0010 check_pool_cmd_result() is modified to compute the client wait delay with mgc_requeue_timeout_min. Add a regression test "ost-pools 2f". Lustre-change: https://review.whamcloud.com/53202 Lustre-commit: ce824977a212d243e15cf07e52a91984841f9b17 Test-Parameters: testlist=ost-pools Test-Parameters: testlist=ost-pools Test-Parameters: testlist=ost-pools env=ONLY=2f,ONLY_REPEAT=50 Test-Parameters: testlist=ost-pools env=ONLY=2f,ONLY_REPEAT=50 Signed-off-by: Etienne AUJAMES <eaujames@ddn.com> Change-Id: Ifbc49b5667bf17253716052a7480114936c65149 Reviewed-by: Guillaume Courrier <guillaume.courrier@cea.fr> Reviewed-by: Andreas Dilger <adilger@whamcloud.com> Reviewed-by: James Simmons <jsimmons@infradead.org>
51900
master
J !B ✗T –R -1/2−
LU-17022 obdclass: convert recovery flags to bit ops
reviewing Neil Brown · blocked on the owner: build failure
stalled 1074d
1 unresolved
M +95 −94
1074d
LU-17022 obdclass: convert recovery flags to bit ops
reviewing Neil Brown · blocked on the owner: build failure
stalled 1074d
1 unresolved
M +95 −94
1074d
blocked on the owner: build failure
you voted -1 on current PS
janitor run: build failed — no tests ran — janitor results
build #100478 FAILURE
reviews:
James Simmons -1
patchsets:
PS1 08-09
PS2 11-24
PS3 11-24
threads: 0 need your reply · 0 waiting on others · 1 own notes · 0 bot
note James Simmons ldlm_lockd.c:966 — I think you meant.
James Simmons
I think you meant. if (test_bit(OBDF_RECOVERING, lock->l_export->exp_obd->obd_flags))
owner Neil Brown · uploader Neil Brown · PS3 uploaded 1076d ago · NEW · open in Gerrit ↗
commit message
LU-17022 obdclass: convert recovery flags to bit ops obd_recovering:1, /* there are recoverable clients */ obd_abort_recovery:1, /* abort client and MDT recovery */ obd_abort_mdt_recovery:1, /* abort recovery between MDTs */ are now OBDF_RECOVERING, /* there are recoverable clients */ OBDF_ABORT_RECOVERY, /* abort client and MDT recovery */ OBDF_ABORT_MDT_RECOVERY,/* abort recovery between MDTs */ This allows us to remove some locking. In a couple of places the lock also covers code where obd_recovery_timeout or obd_recovery_start are updated. As these fields are also updated or accessed without any locking, the coverage here must be accidental rather than intentional, and can be removed. Test-Parameters: trivial Signed-off-by: Mr NeilBrown <neilb@suse.de> Change-Id: I66ec78683162dc4c9d3e26606fd7cc5f977901dc
51848
b2_15
J ✗1B ✓T ✓R +1/1
LU-16893 libcfs: Remove force_sig usage from lfsck
reviewing xinliang · you voted +1 on current PS
stalled 1085d
M +16 −43
1085d
LU-16893 libcfs: Remove force_sig usage from lfsck
reviewing xinliang · you voted +1 on current PS
stalled 1085d
M +16 −43
1085d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity-hsm@ldiskfs+DNE:test_255 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-dne | RHEL 8.8/x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-dne-arm | RHEL 8.7/aarch64, RHEL 8.8/x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
build #100210 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1
no vote yet: Shaun Tancheff, Neil Brown, Andreas Dilger, Oleg Drokin, Jian Yu
patchsets:
PS1 08-02
PS2 09-07
owner xinliang · uploader xinliang · PS2 uploaded 1154d ago · NEW · backport · open in Gerrit ↗
commit message
LU-16893 libcfs: Remove force_sig usage from lfsck
The lfsck pool of kernel threads uses force_sig() to signal
the worker threads to stop. A signal is used here as the
lfsck workers may be waiting in various, and possibly
nested, states.
As force_sig() has been removed let us simply enable SIGINT
to be passed to the worker threads using send_sig().
Lustre-change: https://review.whamcloud.com/51470
Lustre-commit: b876e22466a83dacfbbbeb90d841dc917a793666
Test-parameters: trivial testlist=sanity-lfsck,lfsck-performance
HPE-bug-id: LUS-11670
Fixes: db9f9543ec ("LU-12634 libcfs: force_sig() removed task parameter")
Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Change-Id: Ibf6a67f43687960b3eff9cb9a7c7dc8b1be1da63
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Neil Brown <neilb@suse.de>
Signed-off-by: Xinliang Liu <xinliang.liu@linaro.org>
51616
b2_15
J ✗15B ✓T ✓R +2/1
LU-13343 gss: no sec flavor on loopback connection
reviewing Xing Huang · you voted +1 on current PS
stalled 1208d
1 unresolved
M +42 −34
1208d
LU-13343 gss: no sec flavor on loopback connection
reviewing Xing Huang · you voted +1 on current PS
stalled 1208d
1 unresolved
M +42 −34
1208d
janitor flagged test failures unique to this patch — superseded (tests have since passed) — full janitor results
| unique failing test | history |
|---|---|
| sanity-pfl@zfs:test_20c | seen in 6 other reviews |
| sanity-pfl@zfs:test_20d | seen in 6 other reviews |
| sanity-pfl@zfs:test_20e | seen in 6 other reviews |
| sanity-pfl@zfs:test_21a | seen in 6 other reviews |
| sanity-pfl@zfs:test_21b | seen in 6 other reviews |
| sanity-pfl@zfs:test_22a | seen in 6 other reviews |
| sanity-pfl@zfs:test_22b | seen in 6 other reviews |
| sanity-pfl@zfs:test_22c | seen in 6 other reviews |
| sanity-pfl@zfs:test_23a | seen in 6 other reviews |
| sanity-pfl@zfs:test_23b | seen in 6 other reviews |
| sanity-pfl@zfs:test_23c | seen in 6 other reviews |
| sanity-pfl@zfs:test_23d | seen in 6 other reviews |
| sanity-pfl@zfs:test_23e | seen in 6 other reviews |
| sanity-pfl@zfs:test_23f | seen in 6 other reviews |
| sanity-pfl@zfs:test_25 | seen in 6 other reviews |
build #96204 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Sebastien Buisson +1
no vote yet: Aurelien Degremont, Andreas Dilger
patchsets:
PS1 07-10
PS2 07-11 Sebastien Buisson
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Sebastien Buisson test-framework.sh:1193 — (defect) this env var is unknown
Sebastien Buisson
(defect) this env var is unknown
owner Xing Huang · uploader Sebastien Buisson · PS2 uploaded 1211d ago · NEW · backport · open in Gerrit ↗
commit message
LU-13343 gss: no sec flavor on loopback connection When using a local client, i.e. a client mounted on a server node, there is no benefit from a security standpoint to enforce an SSK or KRB flavor, since the data does not go over the network. So force the 'null' security flavor for connections on 0@lo, independently of the currently defined srpc flavor. Lustre-change: https://review.whamcloud.com/46704 Lustre-commit: e3e91ea95fd96a5eafc598e3812390b4cbac05c3 Signed-off-by: Sebastien Buisson <sbuisson@ddn.com> Change-Id: If25d69bb1e67735cb0544ca954e49175f7471248 Reviewed-by: Aurelien Degremont <adegremont@nvidia.com> Reviewed-by: Andreas Dilger <adilger@whamcloud.com> Reviewed-by: James Simmons <jsimmons@infradead.org>
51366
b2_15
J !B ✓T ✓R +1/1
LU-8585 llapi: use open_by_handle_at in llapi_open_by_fid
reviewing Etienne AUJAMES · you voted +1 on current PS
stalled 1214d
L +630 −366
1214d
LU-8585 llapi: use open_by_handle_at in llapi_open_by_fid
reviewing Etienne AUJAMES · you voted +1 on current PS
stalled 1214d
L +630 −366
1214d
janitor run: 1 failing config(s), none unique to this patch — janitor results
build #96076 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1
no vote yet: Emoly Liu, Andreas Dilger, Quentin Bouget, Jian Yu
patchsets:
PS1 06-19
PS2 07-05
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS2 uploaded 1218d ago · NEW · backport · open in Gerrit ↗
commit message
LU-8585 llapi: use open_by_handle_at in llapi_open_by_fid
Reimplement llapi_open_by_fid() to use llapi_fid_to_handle() and
open_by_handle_at(2) rather than using ioctl(). This works for
opens on subdirectory mountpoints, unlike ".lustre/fid/<fid>".
This patch also adds llapi_open_by_fid_at() which is similar to
llapi_open_by_fid() except that it takes an open directory file
descriptor or AT_CWD rather than a path as its first argument.
[AD:
- Move get_root_*() functions over to a new liblustreapi_root.c
file in expectation of further enhancements to that code.
- Cache an open file handle on the root directory so repeated
calls to llapi_open_by_fid() and llapi_fid2path() do not need
to search for and open the same root directory path many times.
- Add man pages for newly-added functions.
This reduces the system calls for llapi_fid_test significantly:
original patched
14511 4315 total opens
64807 34067 total syscalls
]
There may still be a need to have a fallback from open_by_handle_at()
to using ".lustre/fid/<FID>" to open the fid (if available), but
that can be added if this initial patch does not test well. The
open_by_handle_at() method avoids reopening the "fid/" directory
each time (though this fd could also be cached), but it has the
drawback that it reconnects dentries to the root directory each time.
Lustre-change: https://review.whamcloud.com/36603
Lustre-commit: bdf7788d19985bb7abf2385add15f1d67f3d01e4
Signed-off-by: Quentin Bouget <quentin.bouget@cea.fr>
Change-Id: I8a4904c996389da2b0894cd9fac639a398607535
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Emoly Liu <emoly@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
51359
b2_15
J !B ✓T ✓R +2/1
LU-15759 libcfs: debugfs file_operation should have an owner
reviewing Etienne AUJAMES · you voted +1 on current PS
stalled 1224d
M +47 −9
1224d
LU-15759 libcfs: debugfs file_operation should have an owner
reviewing Etienne AUJAMES · you voted +1 on current PS
stalled 1224d
M +47 −9
1224d
janitor run: 5 failing config(s), none unique to this patch — janitor results
build #95714 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Neil Brown +1
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS1 uploaded 1234d ago · NEW · backport · open in Gerrit ↗
commit message
LU-15759 libcfs: debugfs file_operation should have an owner If debugfs a file is open when unloading the libcfs/lnet module, it produces a kernel Oops (debugfs file_operations callbacks no longer exist). Crash generated with routerstat (/sys/kernel/debug/lnet/stats): [ 1449.750396] IP: [<ffffffffab24e093>] SyS_lseek+0x83/0x100 [ 1449.750412] PGD 9fa14067 PUD 9fa16067 PMD d4e5d067 PTE 0 [ 1449.750428] Oops: 0000 [#1] SMP [ 1449.750883] [<ffffffffab7aaf92>] system_call_fastpath+0x25/0x2a [ 1449.750897] [<ffffffffab7aaed5>] ? system_call_after_swapgs+0xa2/0x13a This patch adds an owner to debugfs file_operation for libcfs and lnet_router entries (/sys/kernel/debug/lnet/*). The following behavior is expected: $ modprobe lustre $ routerstat 10 > /dev/null & $ lustre_rmmod rmmod: ERROR: Module lnet is in use Can't read statfile (ENODEV) [1]+ Exit 1 routerstat 10 > /dev/null $ lustre_rmmod Note that the allocated 'struct file_operations' cannot be freed until the module_exit() function is called, as files could still be open until then. Lustre-change: https://review.whamcloud.com/47335 Lustre-commit: b2dfb4457f0f1e56f3df448cf67ac97e728f4417 Signed-off-by: Mr NeilBrown <neilb@suse.de> Change-Id: Ia0920313e0c2a4b6cdc875fed08221e174a12a73 Reviewed-by: Etienne AUJAMES <eaujames@ddn.com> Reviewed-by: James Simmons <jsimmons@infradead.org> Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
47382
b2_14
B ✓T ✓R +3/1
LU-15093 libcfs: Check if param_set_uint_minmax is provided
reviewing Jian Yu · you voted +1 on current PS
stalled 1555d
S +22 −0
1555d
LU-15093 libcfs: Check if param_set_uint_minmax is provided
reviewing Jian Yu · you voted +1 on current PS
stalled 1555d
S +22 −0
1555d
build #87499 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Gian-Carlo DeFazio +1 · Chris Horn +1
owner Jian Yu · uploader Jian Yu · PS1 uploaded 1631d ago · NEW · backport · open in Gerrit ↗
commit message
LU-15093 libcfs: Check if param_set_uint_minmax is provided Linux kernel v5.15 commit 2a14c9ae15a38148484a128b84bff7e9ffd90d68 moved param_set_uint_minmax to common code. Lustre-change: https://review.whamcloud.com/45214 Lustre-commit: 3337e9fe920b260e34ff62c0840279ea6bff34ca HPE-bug-id: LUS-10469 Test-Parameters: trivial Signed-off-by: Chris Horn <chris.horn@hpe.com> Change-Id: Ifd1d72ae531f0f6c7cd96cc28fbc07c8a8b70886
47328
b2_14
B ✓T ✓R +2/2
LU-15583 build: Update ZFS version to 2.1.2
reviewing Jian Yu · you voted +1 on current PS
stalled 1617d
XS +2 −2
1617d
LU-15583 build: Update ZFS version to 2.1.2
reviewing Jian Yu · you voted +1 on current PS
stalled 1617d
XS +2 −2
1617d
build #87515 SUCCESS · tests all Maloo sessions
reviews:
James Simmons +1 · Nathaniel Clark +1
patchsets:
PS1 05-13
PS2 05-18
owner Jian Yu · uploader Jian Yu · PS2 uploaded 1630d ago · NEW · open in Gerrit ↗
commit message
LU-15583 build: Update ZFS version to 2.1.2 Update ZFS version to 2.1.2. The changes are listed in: https://github.com/openzfs/zfs/releases/tag/zfs-2.1.2 Change-Id: If7c81a4b1fe13e29eea1c277b896223f5c06b31a Signed-off-by: Jian Yu <yujian@whamcloud.com>
CC'd — on your radar, review not requested
(30)
57550
master
J –B ✓T …R 0/2
LU-16565 ldlm: [3] Remove ldlm is,set,clear macros
cc Timothy Day ·
ldlm_flags_remove
pw_shepherd
M +75 −75
16h
LU-16565 ldlm: [3] Remove ldlm is,set,clear macros
cc Timothy Day ·
ldlm_flags_remove
pw_shepherd
M +75 −75
16h
patchsets:
PS1 12-20
PS2 11-03 patrick bot
tags: pw_shepherd
owner Timothy Day · uploader patrick bot · PS2 uploaded 17h ago · NEW · open in Gerrit ↗
commit message
LU-16565 ldlm: [3] Remove ldlm is,set,clear macros
Replaces ldlm_{is,set,clear} macros with the direct flag
names.
The patch has been generated with the coccinelle script in
contrib/cocci/ldlm_flags.cocci.
Test-Parameters: trivial
Signed-off-by: Timothy Day <timday@amazon.com>
Change-Id: Ib4000fb9e0c36160d41c398393be6136b48dc6ce
50104
master
J ✗4B ✓T …R +2/2
LU-10391 mdt: extend downcall to handle large nids
cc Neil Brown · blocked on the owner: janitor: test failures unique to this patch
4 unique failures
IPv6
M +119 −41
1d
LU-10391 mdt: extend downcall to handle large nids
cc Neil Brown · blocked on the owner: janitor: test failures unique to this patch
4 unique failures
IPv6
M +119 −41
1d
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-hsm@ldiskfs+DNE:test_600 | seen in 3 other reviews |
| sanity-hsm@ldiskfs+DNE:test_604 | seen in 3 other reviews |
| sanity-hsm@zfs:test_600 | seen in 3 other reviews |
| sanity-hsm@zfs:test_604 | seen in 3 other reviews |
3 optional test failure(s) — informational
reviews:
Frank Sehr +1 · Shaun Tancheff +1
no vote yet: Sebastien Buisson, Andreas Dilger
patchsets:
PS3 02-22
PS4 02-26
PS5 02-26
PS6 05-01
PS7 05-02
+2 earlier
PS1 02-21 PS2 02-22owner Neil Brown · uploader Neil Brown · PS7 uploaded 1282d ago · NEW · open in Gerrit ↗
commit message
LU-10391 mdt: extend downcall to handle large nids A new version of the downcall structure is created - with a new magic number - which can hold large nids. If all the nids used are nid4, then we use the original structure for max backward compatibility. Kernel accepts both formats. Test-Parameters: fortestonly testlist=sanity serverversion=2.15 Test-Parameters: testlist=conf-sanity serverversion=2.15 Test-Parameters: testlist=sanity clientversion=2.15 Test-Parameters: testlist=conf-sanity clientversion=2.15 Signed-off-by: Mr NeilBrown <neilb@suse.de> Change-Id: I60cf1b5917a59692322871b454213bbcd282a3dd
70052
master
J –B ✓T ✗3R -2/2−
LU-21045 obdclass: allow disabling server jobstats
cc Venkata Ravi Theja Reddy Venuthurla · blocked on the owner: enforced tests failed
3 unresolved
L +283 −3
2d
LU-21045 obdclass: allow disabling server jobstats
cc Venkata Ravi Theja Reddy Venuthurla · blocked on the owner: enforced tests failed
3 unresolved
L +283 −3
2d
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-4 | RHEL 9.7 / x86_64 | ran 9 tests. 1 tests failed: sanity-quota. | session |
| review-dne-zfs-part-1 | RHEL 9.8 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-4 | RHEL 10.1 / x86_64 | ran 9 tests. 1 tests failed: sanity-hsm. | session |
build #134493 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger -1 · Timothy Day -1
no vote yet: Praveen
threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger patchset comment — Note that `jobid_var=disable` is a strong signal that the storage admin doesn't want the server to collect stats on the server. That is diff
Timothy Day
Why can't we adjust the behavior of jobid_var=disable to avoid allocations/lookups/etc? This new knob seems unneeded.
James Simmons
Agree
Venkata Ravi Theja Reddy Venuthurla
So, the MGS distributed jobid_var=disable alone does not guarantee that the jobids will not be sent from clients, since client administrators can override it locally on the client. In this scenario, on the server side we still perform the stats collection work. ---------- If you mean making the server’s side jobid_var=disable flag to gate incoming jobstats accounting, yes this will help us. But there are few issues 1. It defaults to disable, but servers currently still collect statistics for JobIDs received from clients that enable reporting locally. Adding a server-side check would stop accounting in those configurations after an upgrade unless administrators also enable jobid_var on the servers. 2. jobid_var applies to the entire node (MDS/OSS), so it cannot independently control collection for different targets hosted there. So, here separate job_stats_enable flag, enabled by default, preserves existing accounting behavior while allowing server operators to disable collection independently per MDT/OST. Let me know your thoughts ?
Timothy Day
For 1, we don't want to encourage clients overriding servers. If the MGS advertises jobid_var=disable, I think it's fine to not collect job stats. For 2, I don't think anyone has a use case for per-target job stats enablement at all. Even if they did, MDS/OSS co-location is fairly niche. So I still lean towards using jobid_var. I think it would be confusing for users/admins to have to disable job stats in multiple place. Most users/admins probably presume that jobid_var=disable already disables job stats collections; the client's ability to override seems like an unintended edge case.
Praveen
Agree with @timday@thelustrecollective.com, we should just make a change that checks the mgs view of jobid_var and honors that accross targets.
Andreas Dilger
Note that `jobid_var=disable` is a strong signal that the storage admin doesn't want the server to collect stats on the server. That is different from the default of the storage admin not having *set* `jobid_var` at all, and it is set directly on the clients by some other mechanism (e.g. LU-21060). @timday@thelustrecollective.com, I wouldn't call MDS/OSS co-location as "niche", that is how a majority of DDN EXA appliances are shipped.
reply Gerrit AI review for Lustre mdt.job_stats_enable.4:57 — (minor) Is "the existing expiry ... still apply" accurate while disabled? Expiry is lazy: lprocfs_job_cleanup(stats, false) is only called f
Gerrit AI review for Lustre
(minor) Is "the existing expiry ... still apply" accurate while disabled? Expiry is lazy: lprocfs_job_cleanup(stats, false) is only called from lprocfs_job_stats_log() (now skipped by OJS_DISABLED), lprocfs_jobstats_seq_release() and job_cleanup_interval_store(). So after `job_stats_enable=0`, entries that already exist stay allocated past job_cleanup_interval until someone reads `job_stats` or writes `job_cleanup_interval`. An operator disabling jobstats to save server memory would not get it back on its own. If the patch is refreshed, consider either calling lprocfs_job_cleanup(stats, false) when the bit is set in job_stats_enable_store(), which would be easiest if the show/store lived next to job_cleanup_interval_show() in lprocfs_jobstats.c since lprocfs_job_cleanup() is static, or saying in the man page that stale entries are only reclaimed when `job_stats` is read or cleared.
reply Venkata Ravi Theja Reddy Venuthurla MAINTAINERS:517 — Acknowledged
Andreas Dilger
This is unnecessary, and would cause a lot of churn in this file to list every man page.
Venkata Ravi Theja Reddy Venuthurla
Acknowledged
owner Venkata Ravi Theja Reddy Venuthurla · uploader Venkata Ravi Theja Reddy Venuthurla · PS1 uploaded 8d ago · NEW · open in Gerrit ↗
commit message
LU-21045 obdclass: allow disabling server jobstats Cloud operators administer Lustre servers independently of clients. Clients can keep sending distinct JobIDs and consume server memory and accounting time even when the operator does not need jobstats. Add a per-target job_stats_enable control for MDTs and OSTs. Skip jobstats lookups, allocations and counter updates while disabled, using the existing atomic flags. Leave existing statistics and expiry intact, and allow collection to resume without client changes. Document the control and cover new and existing JobIDs in sanity/205p. Signed-off-by: Venkata Ravi Theja Reddy Venuthurla <venkata.ravi.theja.reddy.venu@oracle.com> Assisted-by: Codex:gpt-6.1-sol lreview Change-Id: I66f90a95589d694b59759896e193e1c43301af10
67570
master
J –B ✓T ✓R +0/2−
LU-20443 llite: fix statahead race conditions
cc Etienne AUJAMES · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
4 unresolved
XL +584 −549
6d
LU-20443 llite: fix statahead race conditions
cc Etienne AUJAMES · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
4 unresolved
XL +584 −549
6d
8 optional test failure(s) — informational
build #134459 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
no vote yet: Qian Yingjin, Alex Zhuravlev, Oleg Drokin
patchsets:
PS15 08-21
PS16 08-26
PS17 09-09
PS18 09-11
PS19 10-26
+14 earlier
PS1 07-27 PS2 07-28 PS3 07-28 PS4 07-28 PS5 07-29 PS6 07-29 PS7 07-30 PS8 08-06 PS9 08-07 PS10 08-10 PS11 08-10 PS12 08-11 PS13 08-12 PS14 08-14threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre statahead.c:2411 — (minor) Can this case be reached? sa_revalidate_sai() is only called from start_statahead_thread(), and both call sites sit below
Gerrit AI review for Lustre
(minor) Can this case be reached? sa_revalidate_sai() is only called from start_statahead_thread(), and both call sites sit below
if (unlikely(!(pattern & (LSA_PATTERN_FNAME | LSA_PATTERN_LIST))))
GOTO(out_stop, rc = -EOPNOTSUPP);
so a pattern of exactly LSA_PATTERN_ADVISE never gets here, and ADVISE combined with FNAME/LIST lands in default: anyway. The comment then points a reader at ll_ioctl_ahead() for a check that this function is never asked to make. Dropping the case (or the comment) would avoid suggesting ADVISE is handled here.
reply Etienne AUJAMES statahead.c:2655 — Yes I think this is what we wanted. Shared FNAME feature does not works as designed (LU-20583/LU-20582).
Gerrit AI review for Lustre
This changes hit/miss accounting for the patterns that used to have no @sai here.
Before, ll_revalidate_statahead() took @sai from lli_sai, which was deliberately NULL for shared FNAME (both sa_pattern_fname_detect() and ll_shared_statahead_check() cleared it) and for ADVISE. ll_sai_get() now returns the calling process's own sai in all three cases.
The visible effect is in sa_put(): on a statahead cache miss (entry == NULL) it now takes the
else if (sai) { sai->sai_miss++; sai->sai_consecutive_miss++; }
branch for a shared-FNAME sai, where previously nothing was counted. ll_statahead_by_fname() tests sa_low_hit(sai) on every iteration, so a shared-dir mdtest run whose hit ratio dips under 80% (sai_hit > 32 && sai_hit < 4 * sai_miss) now stops its statahead thread with -EFAULT and bumps ll_sa_wrong, which it could not do before.
That may well be the accounting you want, but it isn't mentioned in the commit message. Was the shared-FNAME/ADVISE side of this intentional?
Etienne AUJAMES
Yes I think this is what we wanted. Shared FNAME feature does not works as designed (LU-20583/LU-20582). The following patches try to fix the feature: - 68754: LU-20583 llite: move statahead generation to lli_sax_intall | https://review.whamcloud.com/c/fs/lustre-release/+/68754 - 67980: LU-20582 llite: fix statahead SFNAME pattern detection | https://review.whamcloud.com/c/fs/lustre-release/+/67980
reply Etienne AUJAMES statahead.c:2581 — > Walking through the sai list is O(N) and time-consuming for a large number of FNAME pattern
Gerrit AI review for Lustre
The return value changed from "a statahead context exists for this directory" to "this process owns a sai", which also makes every stat() walk ctx->sax_sai_list. ll_start_statahead() calls this on each stat() that passes dentry_may_statahead(), and ll_revalidate_statahead() now does a second ll_sai_get() where it used to read lli_sai directly. For the shared-FNAME (mdtest shared dir) pattern the list holds one sai per rank on the client, so that is two O(nranks) walks plus four extra lli_sa_lock round trips per stat(), on the lock the statahead threads themselves contend for. Was the per-process semantics needed here, or would keeping !!lli_sax (with ll_shared_statahead_check() continuing to handle the per-rank case) give the same behaviour more cheaply?
Etienne AUJAMES
This is needed for shared pattern: we don't care if another statahead thread is running on the directory, we want to checked if an statahead thread is started for our process (otherwise we miss some stat calls: seen in 67980: LU-20582 llite: fix statahead SFNAME pattern detection | https://review.whamcloud.com/c/fs/lustre-release/+/67980) The performance issue matter only for shared pattern with a lot of running thread for the dir. By default the maximum number of statahead threads is 10 and https://review.whamcloud.com/c/fs/lustre-release/+/67980 adds a statahead thread limit per directory.
Qian Yingjin
Walking through the sai list is O(N) and time-consuming for a large number of FNAME pattern stat() workload such as mdtest share dir stat() mode (LL_SA_RUNNING_DEF = 16, max statahead thread can reach 256).
Etienne AUJAMES
> Walking through the sai list is O(N) and time-consuming for a large number of FNAME pattern What are you suggesting? The current implementation is O(N) for multi-threaded statahead. That why, I adds a threshold by inode in https://review.whamcloud.com/c/fs/lustre-release/+/67980 (`llite.*.statahead_shared_max`). For example, I think we can limit the number of parallel statahead thread to the number of CPUs. This feature was primarily done for MPI jobs, MPI jobs used CPU affinity so we could allocate per CPU slot (O(1)). For threads, that don't use CPU affinity we can fallback to linear lookup. Then we could start the statahead thread on the same numa node for optimized cache access.
reply Etienne AUJAMES statahead.c:1341 — The old implementation does not wake up on lli_sa_enabled change. Now, this variable is only used to avoid starting new statahead threads. I
Gerrit AI review for Lustre
(minor) This clears lli_sa_enabled for the whole directory but only moves this sai to SA_THR_STOPPING. Before the patch every scan loop also tested lli->lli_sa_enabled, so the sibling threads on the same dir picked the signal up on their next iteration; now they only look at sai_task_state and keep going.
For the shared FNAME pattern (two PIDs stat()ing digit-suffixed names, enable_statahead_fname defaults to 1) that gives one sai per rank on ctx->sax_sai_list. When rank A's thread times out here:
lli_sa_enabled = 0
-> dentry_may_statahead() returns false for every process
-> ll_revalidate_statahead() is never called again
-> no sa_get()/sa_put(), so no consumption and no wakeups
Rank B's thread keeps calling sa_statahead() until its own window fills, then sits in schedule_timeout(ll_sa_timeout) for another 30s before it stops - issuing up to sai_max prefetch RPCs whose results nothing can consume, and holding dget(sai_dentry) plus the ctx igrab(dir) for that long.
Would calling ll_sa_thread_stopall_locked() here (or reusing ll_sa_reset_locked(), which already pairs the two) restore the broadcast that dropping the lli_sa_enabled poll removed?
Etienne AUJAMES
The old implementation does not wake up on lli_sa_enabled change. Now, this variable is only used to avoid starting new statahead threads. If a consumer is still active, we don't stop the thread.
owner Etienne AUJAMES · uploader Etienne AUJAMES · PS19 uploaded 8d ago · NEW · open in Gerrit ↗
commit message
LU-20443 llite: fix statahead race conditions
Replace smp barrier-based synchronization on sai_task and unsafe
access to lli_sa_enabled with an atomic state machine (sai_task_state
with SA_THR_STOPPED/RUNNING/STOPPING states).
Introduce centralized thread state management helpers:
- ll_sa_thread_should_stop(): check if thread should stop
- ll_sa_thread_stop(): transition thread to STOPPING state
- ll_sa_thread_stopall_locked(): stop all threads for a directory
- ll_sa_thread_wait_stop(): wait for thread to reach STOPPING state
- ll_sa_thread_wait_consumer(): wait for stat process to consume
entries
Clean up reference counting:
- ll_sai_put() now automatically releases sax reference
- Remove lli_sai field, using lli_sax->sax_sai_list for all cases
- Add ll_sai_get_self() to obtain a ref on the sai of the current
process
- Add ll_sax_install() for atomic context installation
Fix race conditions:
- Between start_statahead_thread() and ll_deauthorize_statahead()
- Add atomic bit check LFD_SA_STARTED to prevent duplicate statahead
hints (for ADVISE patterns).
- Stale state prevention via ll_sa_reset_locked()
- Use-after-free in revalidate_statahead_dentry() when sa_get()
returns -EINVAL
The @sai struct is revalidated via sa_revalidate_sai() before thread
start to ensure the parent directory hasn't been closed or reopened by
another thread.
Replace lfd bitfields with lfd_flags for atomic bit operations:
- lfd_lock_no_expand -> bit LFD_LOCK_NO_EXPAND
- lfd_hsm_agent_registered -> bit LFD_HSM_AGENT_REGISTERED
Fixes: b977caa2dc7d ("LU-15660 statahead: statahead thread doesn't stop")
Test-Parameters: optional testlist=racer
Test-Parameters: optional testlist=racer
Test-Parameters: testlist=sanity env=ONLY=123
Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
Change-Id: I3e4ffc991795029057326982513b7a270f1238ad
66816
master
J ✗1B ✓T ✗1R -1/2−
LU-20422 obdclass: allow cfs_hash locks to specify subclass
cc Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; janitor: test failures unique to this patch; enforced tests failed
needs rebase
1 unique failure
1 unresolved
M +85 −12
6d
LU-20422 obdclass: allow cfs_hash locks to specify subclass
cc Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; janitor: test failures unique to this patch; enforced tests failed
needs rebase
1 unique failure
1 unresolved
M +85 −12
6d
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity1@ldiskfs+DNE:test_56od | seen in 1 other review |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-ldiskfs-dne-arm | RHEL 8.10 / x86_64, Rocky 9.5 / aarch64 | ran 7 tests. 1 tests failed: sanity. | session |
build #126882 SUCCESS · tests all Maloo sessions
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Timothy Day patchset comment — Yes. This patch fixes a different type of issue.
James Simmons
Is this needed anymore now that 67351 landed?
Timothy Day
Yes. This patch fixes a different type of issue.
owner Timothy Day · uploader Timothy Day · PS1 uploaded 133d ago · NEW · open in Gerrit ↗
commit message
LU-20422 obdclass: allow cfs_hash locks to specify subclass
This way, we can silence recursive locking warnings from lockdep.
WARNING: possible recursive locking detected
...
mdt00_001/383 is trying to acquire lock:
ffff88823c483018 (&new_bkts[i]->hsb_lock.rw){++++}-{3:3}, at: cfs_hash_del+0xd0/0x2d0
but task is already holding lock:
ffff88823c339e18 (&new_bkts[i]->hsb_lock.rw){++++}-{3:3}, at: cfs_hash_del+0x97/0x2d0
...
dump_stack_lvl+0x54/0x70
print_deadlock_bug+0x27c/0x290
__lock_acquire+0x11b4/0x2830
? __lock_acquire+0x5d3/0x2830
? cfs_hash_del+0xd0/0x2d0
lock_acquire+0xd5/0x290
? cfs_hash_del+0xd0/0x2d0
? cfs_hash_bd_from_key+0x2b/0xc0
_raw_write_lock+0x33/0x40
? cfs_hash_del+0xd0/0x2d0
cfs_hash_del+0xd0/0x2d0
ldlm_lock_destroy_internal+0x19e/0x2f0
ldlm_lock_destroy+0x83/0x110
ldlm_lock_enqueue+0x161/0x950
? _raw_write_unlock+0x2d/0x50
? cfs_hash_add+0x247/0x2b0
ldlm_handle_enqueue+0x9c0/0x1410
tgt_enqueue+0xbd/0x260
tgt_request_handle+0x1297/0x1990
? obd_export_timed_fini+0xa2/0xb0
ptlrpc_main+0x2b7d/0x3ac0
? lockdep_hardirqs_on+0x7a/0x110
? __pfx_ptlrpc_main+0x10/0x10
kthread+0x11b/0x140
? __pfx_kthread+0x10/0x10
ret_from_fork+0x1a5/0x370
? __pfx_kthread+0x10/0x10
ret_from_fork_asm+0x1a/0x30
Test-Parameters: trivial
Signed-off-by: Timothy Day <timday@thelustrecollective.com>
Change-Id: Ice4b6a9f1ec6782ff7544909d807362b2c03f83b
66069
master
J !B ✓T ✓R +1/2
LU-18461 llapi: replace pattern with bitmask
cc Alexey Lyashkov ·
38 unresolved
L +187 −80
8d
LU-18461 llapi: replace pattern with bitmask
cc Alexey Lyashkov ·
38 unresolved
L +187 −80
8d
janitor run: 5 failing config(s), none unique to this patch — janitor results
build #132561 SUCCESS · tests all Maloo sessions
reviews:
Alexander Boyko +1
no vote yet: Andrew Perepechko, Andreas Dilger, Artem Blagodarenko, Patrick Farrell
patchsets:
PS5 08-20
PS6 08-25
PS7 09-14
PS8 09-23
PS9 09-29
+4 earlier
PS1 05-21 PS2 05-25 PS3 05-26 PS4 06-02threads: 37 need your reply · 0 waiting on others · 1 own notes · 0 bot
reply Oleg Drokin COMMIT_MSG:10 — what's zerooffset? we have zero hits in the entirety of the codebase and commit messages.
Oleg Drokin
what's zerooffset? we have zero hits in the entirety of the codebase and commit messages.
reply Gerrit AI review for Lustre COMMIT_MSG:12 — (minor) A few hunks aren't covered by the description.
Gerrit AI review for Lustre
(minor) A few hunks aren't covered by the description. The rewrite of lov_pattern_supported(), lov_pattern_available() and lov_pattern_supported_normal_comp() is not just a mechanical bitmask conversion - it widens what each accepts (see the lustre_user.h comment). That is server-side layout validation, so it deserves a sentence. The lov_ea.c dump_lsm() change adds a new field to a debug print and isn't mentioned at all - was that meant to be part of this patch? Also, the subject tag is `llapi:`, but roughly half the diff is in the uapi header and lustre/lov/, which the servers compile too. The "zerooffset" question raised on the previous revision is still open; there's no zerooffset handling in this diff (or anywhere in the tree).
reply Gerrit AI review for Lustre COMMIT_MSG:10 — (minor) The "zerooffset" question from the previous revision is still open - there is no zerooffset handling in this diff, and the token doe
Gerrit AI review for Lustre
(minor) The "zerooffset" question from the previous revision is still open - there is no zerooffset handling in this diff, and the token does not appear anywhere in the tree. Could this be reworded to whatever it is actually referring to? Also "handing" -> "handling", and "Fix usage a LOV_PATTERN_PARITY" -> "Fix use of LOV_PATTERN_PARITY".
reply Gerrit AI review for Lustre COMMIT_MSG:14 — (minor) The message says this fixes LOV_PATTERN_PARITY handling in llapi, which means llapi_layout_get_by_xattr() and llapi_pattern_to_lov()
Gerrit AI review for Lustre
(minor) The message says this fixes LOV_PATTERN_PARITY handling in llapi, which means llapi_layout_get_by_xattr() and llapi_pattern_to_lov() were silently dropping the parity bit for EC layouts. Would a Fixes: tag be appropriate for that part?
Fixes: 22e9e7e8b264 ("LU-12187 llapi: EC layout creation support")
reply Gerrit AI review for Lustre COMMIT_MSG:10 — (minor) Carrying forward the unresolved PS4 question about "zerooffset". The text is unchanged in this revision, and nothing in the diff (or
Gerrit AI review for Lustre
(minor) Carrying forward the unresolved PS4 question about "zerooffset". The text is unchanged in this revision, and nothing in the diff (or anywhere in the tree) handles a zero offset. Could this say what it actually refers to?
reply Oleg Drokin patchset comment — Did we ever get a confirmation this is not going to affect application api / old/new library linked apps problems?
Oleg Drokin
Did we ever get a confirmation this is not going to affect application api / old/new library linked apps problems?
reply Gerrit AI review for Lustre lustreapi.h:1045 — (defect) Changing LLAPI_LAYOUT_RAID0 from 0 to 0x40 and requiring the RAID0 bit alongside LLAPI_LAYOUT_OVERSTRIPING breaks applications comp
Gerrit AI review for Lustre
(defect) Changing LLAPI_LAYOUT_RAID0 from 0 to 0x40 and requiring the RAID0 bit alongside LLAPI_LAYOUT_OVERSTRIPING breaks applications compiled against the older header, which is the concern raised on earlier revisions and still not addressed. Two concrete failures against the new liblustreapi:
/* old header: LLAPI_LAYOUT_OVERSTRIPING == 0x4 */
llapi_layout_pattern_set(l, LLAPI_LAYOUT_OVERSTRIPING);
llapi_layout_supported(0x4) is false because the RAID0 bit is clear, so this now returns -1/EOPNOTSUPP where it used to succeed. The test32() change in llapi_layout_test.c is exactly that break.
/* old header: LLAPI_LAYOUT_RAID0 == 0 */
llapi_layout_pattern_get(l, &p);
if (p == LLAPI_LAYOUT_RAID0) ...
p is now 0x40, and an overstriped component returns 0x44 instead of 0x4, so the comparison silently stops matching. liblustreapi is a versioned shared library and this is a source and binary incompatible change with no soname bump or compat path.
The suggestion from the earlier review - keep LLAPI_LAYOUT_RAID0 at 0 and introduce a separate settable bit - would avoid both, as would accepting a bare LLAPI_LAYOUT_OVERSTRIPING in llapi_layout_pattern_set().
reply Gerrit AI review for Lustre lustreapi.h:1326 — (minor) A couple of things on the two new exported functions.
Gerrit AI review for Lustre
(minor) A couple of things on the two new exported functions. Neither has a doc comment, unlike the rest of this header, and there is no Documentation/man3 page for either. llapi_layout_pattern_set.3 / llapi_layout_pattern_get.3 also still say "the only supported RAID pattern is RAID0" and document LLAPI_LAYOUT_RAID0 as a plain value, which no longer matches the bitmask semantics. The names read as operating on `struct llapi_layout`, like the rest of the llapi_layout_* family, but both take a bare pattern bitmask. Something like llapi_layout_pattern_supported() and llapi_layout_string_to_pattern() would be less surprising. The declaration calls the out parameter `layout` while the definition calls it `pattern`; `pattern` is the accurate one. The rest of the pattern API uses uint64_t rather than unsigned long long.
reply Gerrit AI review for Lustre lustreapi.h:1070 — (defect) This is the compatibility concern raised on PS1 and asked again on PS4, and the code is unchanged since. Two concrete breaks agains
Gerrit AI review for Lustre
(defect) This is the compatibility concern raised on PS1 and asked again on PS4, and the code is unchanged since. Two concrete breaks against an application built with the older header:
/* old header: LLAPI_LAYOUT_RAID0 == 0 */
llapi_layout_pattern_set(l, LLAPI_LAYOUT_RAID0);
llapi_layout_supported(0) is false (0 is neither LLAPI_LAYOUT_MDT nor does it carry the RAID0 bit), and 0 is not LLAPI_LAYOUT_DEFAULT either, so this now fails with EOPNOTSUPP.
/* old header: LLAPI_LAYOUT_OVERSTRIPING == 0x4 */
llapi_layout_pattern_set(l, LLAPI_LAYOUT_OVERSTRIPING);
same EOPNOTSUPP, because the RAID0 bit is now required alongside it - the test32() change is exactly that break. In the other direction llapi_layout_pattern_get() now returns 0x40/0x44 where the old header's constants are 0/0x4, so an `== LLAPI_LAYOUT_RAID0` test in an existing binary stops matching. liblustreapi is a versioned shared library and -version-info is unchanged, so old and new binaries and libraries mix freely.
The suggestion from PS1 was to keep LLAPI_LAYOUT_RAID0 at 0 and add a separate settable bit; could that be revisited, or the old encodings accepted for compatibility?
Unrelated to the above: 0x0000040ULL has one hex digit fewer than the constants below it.
reply Gerrit AI review for Lustre lustreapi.h:1079 — (minor) LLAPI_LAYOUT_RAID0_VALID does not include LLAPI_LAYOUT_RAID0, while the identically-named LOV_PATTERN_RAID0_VALID in lustre_user.h d
Gerrit AI review for Lustre
(minor) LLAPI_LAYOUT_RAID0_VALID does not include LLAPI_LAYOUT_RAID0, while the identically-named LOV_PATTERN_RAID0_VALID in lustre_user.h does include LOV_PATTERN_RAID0. That is why llapi_layout_supported() has to write
layout &= ~(LLAPI_LAYOUT_RAID0 | LLAPI_LAYOUT_RAID0_VALID);
while lov_pattern_supported() only needs ~LOV_PATTERN_RAID0_VALID. Two macros with parallel names and different contents is easy to get wrong later - could the llapi one include the RAID0 bit too?
reply Gerrit AI review for Lustre lustreapi.h:1091 — (defect) Carrying forward the compatibility concern raised on PS1 and asked again on PS4. It is still unresolved, and the encoding is unchan
Gerrit AI review for Lustre
(defect) Carrying forward the compatibility concern raised on PS1 and asked again on PS4. It is still unresolved, and the encoding is unchanged in this revision. liblustreapi keeps -version-info 1:0:0, so binaries built against the old header (LLAPI_LAYOUT_RAID0 == 0, LLAPI_LAYOUT_OVERSTRIPING == 0x4) will load this library. Those values now fail with EOPNOTSUPP in llapi_layout_pattern_set(). The in-tree test32() needed a source change to keep passing, which shows the breakage. Would accepting the old encodings (0, and a bare 0x4 meaning RAID0|OVERSTRIPING) in llapi_layout_pattern_set()/llapi_pattern_to_lov() be enough to close this? The PS1 alternative would be a separate settable bit, with LLAPI_LAYOUT_RAID0 kept at 0.
note James Simmons lustre_user.h:32 — This should be giving a checkpatch error.
James Simmons
This should be giving a checkpatch error.
owner Alexey Lyashkov · uploader Alexey Lyashkov · PS9 uploaded 35d ago · NEW · open in Gerrit ↗
commit message
LU-18461 llapi: replace pattern with bitmask use a bitmask as llapi_pattern, to simplify overstripe / zerooffset handing. Fix usage a LOV_PATTERN_PARITY on the userspace (llapi) code. Signed-off-by: Alexey Lyashkov <alexey.lyashkov@hpe.com> Change-Id: I29a6943af1f58ed3834076d3bb3d618dd6b83983
51895
master
J –B ✓T ✗4R 0/2
LU-16763 obdclass: crash Lustre with OBD devices
cc Timothy Day · blocked on the owner: enforced tests failed
4 unresolved
S +29 −0
9d
LU-16763 obdclass: crash Lustre with OBD devices
cc Timothy Day · blocked on the owner: enforced tests failed
4 unresolved
S +29 −0
9d
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-subtest-change crashed | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-dne-zfs-subtest-change crashed | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs-dne crashed | RHEL 8.10 / x86_64 | ran 7 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
| review-ldiskfs-dne-arm crashed | RHEL 8.10 / x86_64, Rocky 9.8 / aarch64 | ran 7 tests. 1 tests failed: sanity. %% THIS TEST SESSION CRASHED %% | session |
build #133577 SUCCESS · tests all Maloo sessions
no vote yet: Alexey Lyashkov, Andreas Dilger, Alex Zhuravlev
patchsets:
PS1 08-08
PS2 11-07
PS3 11-07
PS4 04-29
PS5 10-13
threads: 4 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:7 — (style) Carrying forward a point from patch set 3 that still applies: the subject still says "crash Lustre" with an "obdclass:" tag. The pat
Gerrit AI review for Lustre
(style) Carrying forward a point from patch set 3 that still applies: the subject still says "crash Lustre" with an "obdclass:" tag. The patch only touches sanity.sh, so "tests:" fits better, and something like "stress concurrent OBD device attach/detach" stays accurate once the crash is fixed. The body also still doesn't describe the crash. From reading the code, two races could go in that description: 1. Duplicate names: class_attach_name() calls class_register_device() and only sets OBDF_ATTACHED after the obd_devs lock is dropped. During that window, class_name2dev_nolock() hits the same-named but not-yet-ATTACHED device, does `break` and returns -1. A second concurrent `attach obd_test obd_name` then registers a duplicate "obd_name". 2. Use-after-free: class_process_config() gets the obd from class_name2obd() without taking a reference. class_detach() only refuses when OBDF_SET_UP is set, so another worker's `detach` can drop the "obd_device_list" and "newdev" refs while class_setup() is still inside obd_setup(). That frees the device under the setup thread. A stack trace from the crash would show which of these 55d actually hits.
reply Gerrit AI review for Lustre sanity.sh:7427 — (defect) With verbose=2, obd_test_device_init() runs its lookup checks during setup:
Gerrit AI review for Lustre
(defect) With verbose=2, obd_test_device_init() runs its lookup checks during setup:
obd_minor_found = class_name2obd(obd->obd_name)->obd_minor;
obd_minor_found = class_uuid2obd(&obd->obd_uuid)->obd_minor;
That was fine for a single device in 55a. Here, though, another worker can run `--device obd_name detach` while this device is still inside class_setup()->obd_setup(). class_detach() only checks OBDF_SET_UP, so it clears OBDF_ATTACHED, and class_name2obd() then returns NULL. Doesn't that oops inside obd_test itself, hiding the obdclass race this test is aiming for?
Even without a NULL result, all 100 workers use the same name and uuid. So class_name2dev() and class_uuid2obd() can legitimately return another worker's minor and print "FAIL", which the dmesg grep below then reports as a unit test failure. Would loading without verbose=2 here be better?
reply Gerrit AI review for Lustre sanity.sh:7429 — (style) Carrying forward a point from patch set 3: `echo {1..100}` (or a `for` loop with `&` and `wait`) avoids forking `seq`. Also, `-n 1`
Gerrit AI review for Lustre
(style) Carrying forward a point from patch set 3: `echo {1..100}` (or a `for` loop with `&` and `wait`) avoids forking `seq`. Also, `-n 1` and `-I {}` are mutually exclusive in GNU xargs, which prints a warning and ignores `-n`, and `{}` is never used in the command.
reply Gerrit AI review for Lustre sanity.sh:7432 — (minor) Leftover devices are only printed ("EXPECT NONE"), never checked, and the xargs exit status is ignored. So the only things that can
Gerrit AI review for Lustre
(minor) Leftover devices are only printed ("EXPECT NONE"), never checked, and the xargs exit status is ignored. So the only things that can fail the test are a crash, the dmesg grep, or rmmod later refusing to unload because a leaked device still holds the module. Could this check `$LCTL dl | grep -c obd_name` and call error with a clear message instead? That would also avoid reading debugfs directly, which assumes it is mounted at /sys/kernel/debug; 55a uses `$LCTL dl`.
owner Timothy Day · uploader Timothy Day · PS5 uploaded 21d ago · NEW · open in Gerrit ↗
commit message
LU-16763 obdclass: crash Lustre with OBD devices Spawn a bunch of threads trying to register and unregister the same OBD device. Lustre does not like this. Test-Parameters: trivial testlist=sanity env=ONLY=55d Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: I58e59b13c37e7935c0b24d19c8637cd6462e4282
68263
master
J !B ✓T ✓R +0/2−
LU-20628 lnet: size selftest bulk to cover the offset
cc Oleg Drokin · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
2 unresolved
M +50 −18
13d
LU-20628 lnet: size selftest bulk to cover the offset
cc Oleg Drokin · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked
needs rebase
2 unresolved
M +50 −18
13d
janitor run: 2 failing config(s), none unique to this patch — janitor results
build #130105 SUCCESS · tests all Maloo sessions
reviews:
Jinshan Xiong +1
no vote yet: Chris Horn, Robert Read
threads: 2 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre brw_test.c:89 — (defect) `len` still isn't required to be a multiple of BRW_MSIZE here, while `off` is checked just above. brw_fill_page() asserts on both,
Gerrit AI review for Lustre
(defect) `len` still isn't required to be a multiple of BRW_MSIZE here, while `off` is checked just above. brw_fill_page() asserts on both, and that LASSERT sits before the pattern early-return, so it fires for every check= mode:
LASSERT(off % BRW_MSIZE == 0 && len % BRW_MSIZE == 0);
lst_get_bulk_param() only rejects `size=` <= 0 or > LNET_MTU, and lstcon_bulkrpc_v1_prep() copies blk_size straight into blk_len, so `lst add_test ... brw read size=100` reaches brw_client_prep_rpc()->brw_fill_bulk()->brw_fill_page() with len=100 and LBUGs the client node. The same brw_len goes on the wire, so brw_server_handle()->brw_fill_bulk() LBUGs the responder node too.
LU-20628 is filed as "crashes the test node for unvalidated size= and off= parameters" - is the size= half meant to be a separate patch, or should `len % BRW_MSIZE != 0` be rejected in this same block?
reply Gerrit AI review for Lustre lnet-selftest.sh:129 — (suggestion) check=full is the right choice here, but it may be worth noting why the other checked modes aren't covered.
Gerrit AI review for Lustre
(suggestion) check=full is the right choice here, but it may be worth noting why the other checked modes aren't covered. With a non-zero off the client descriptor is fragmented as (page0, off, PAGE_SIZE-off), (page1, 0, ...), while brw_server_handle() always does srpc_init_bulk(bulk, 0, brw_len), so the responder fragments from zero. brw_fill_page()/brw_check_page() write and verify the magic at each *fragment's* first and last __u64, so for LST_BRW_CHECK_SIMPLE the two sides disagree about where those words are and a read reports "Bulk data is corrupted" for a perfectly good transfer. Not introduced here - it dates back to the original off= support - but it was masked by the crash this patch fixes, so `lst add_test ... brw read check=simple off=8` becomes a spurious failure rather than an LBUG. Worth a follow-up ticket?
owner Oleg Drokin · uploader Oleg Drokin · PS1 uploaded 72d ago · NEW · open in Gerrit ↗
commit message
LU-20628 lnet: size selftest bulk to cover the offset
srpc_alloc_bulk() sized the page vector from the length alone, so a
brw test whose off= pushed the data across one more page walked past
the end of the allocation in srpc_init_bulk(), and a zero length
asserted. The offset is again an argument, and brw_client_init()
rejects an out of range page count rather than leaving it to an
assertion.
brw_client_prep_rpc() derived a second page count from an unmasked
blk_offset, which disagreed with the descriptor for any off= of a
page or more; take it from bk_niov instead.
lnet-selftest.sh had never passed off=, so the smoke batch now runs
two checked cases with an offset.
Test-Parameters: trivial testlist=lnet-selftest
Fixes: e502638050a6 ("LU-16011 lnet: use preallocate bulk for server")
Fixes: efcef00cb304 ("LU-5718 lnet: add offset for selftest brw")
Signed-off-by: Oleg Drokin <green@whamcloud.com>
Assisted-by: ClaudeCode:Opus-5 llm_code_and_review_tools
Change-Id: I440a0774c990b2b71861118b31be47aae857af8f
63382
master
J –B ✓T ✓R 0/2
LU-18813 osd-wbcfs: remove calls to alloc_file_pseudo()
cc Timothy Day ·
11 unresolved
M +37 −68
14d
LU-18813 osd-wbcfs: remove calls to alloc_file_pseudo()
cc Timothy Day ·
11 unresolved
M +37 −68
14d
build #134044 SUCCESS · tests all Maloo sessions
no vote yet: Qian Yingjin, Andreas Dilger
patchsets:
PS1 01-13
PS2 01-13
PS3 04-07 James Simmons
PS4 07-04
PS5 10-19
threads: 11 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Andreas Dilger COMMIT_MSG:9 — I would put this reference as a `Fixes:` line, which is more consistent with other patches, and the omission of osd-wbcfs from that patch co
Andreas Dilger
I would put this reference as a `Fixes:` line, which is more consistent with other patches, and the omission of osd-wbcfs from that patch could be considered a bug.
reply Gerrit AI review for Lustre COMMIT_MSG:20 — (style) Two hunks aren't accounted for by the description.
Gerrit AI review for Lustre
(style) Two hunks aren't accounted for by the description. osd_read()/osd_write() now set `inode->i_flags |= S_PRIVATE | S_NOSEC`, which permanently disables LSM/IMA on the object. That's a behaviour change worth a sentence, especially since the ldiskfs change did it in osd_iget2()/osd_mkfile()/osd_inode_setattr() rather than in the IO path. The `wbcfs_flush_descriptors_cnt` tunable also disappears; worth naming it so the removal is findable later. Also, this doesn't actually mirror LU-19388's structure: that one added `struct file oti_file` to osd_thread_info and a shared osd_get_filp_for_inode() helper, while this open-codes the file twice on the stack. If that divergence is deliberate (osd-wbcfs has no osd_thread_info), saying so would help.
reply Gerrit AI review for Lustre COMMIT_MSG:23 — (style) Raised on patchset 2 and still open: this reference reads better as a Fixes: line, since leaving osd-wbcfs out of the original chang
Gerrit AI review for Lustre
(style) Raised on patchset 2 and still open: this reference reads better as a Fixes: line, since leaving osd-wbcfs out of the original change is arguably the bug being fixed.
Fixes: bdb39e8390c4 ("LU-19388 osd: remove calls to alloc_file_pseudo()")
reply Gerrit AI review for Lustre COMMIT_MSG:18 — (minor) This sentence has a double negative: it says iterate_dir() crashes unless the security hooks "are not called", which is the opposite
Gerrit AI review for Lustre
(minor) This sentence has a double negative: it says iterate_dir() crashes unless the security hooks "are not called", which is the opposite of what's meant. It's also about iterate_dir(), which this patch doesn't touch; osd-wbcfs reaches the hooks through kernel_read()/kernel_write() -> rw_verify_area() -> security_file_permission(). Something like "kernel_read()/kernel_write() on a hand-built struct file will crash unless security_file_alloc() was called to set up f_security" would describe this change.
reply Gerrit AI review for Lustre COMMIT_MSG:21 — (style) The request from patch set 2 to turn the LU-19388 reference into a Fixes: line still isn't addressed in this revision. osd-wbcfs (25
Gerrit AI review for Lustre
(style) The request from patch set 2 to turn the LU-19388 reference into a Fixes: line still isn't addressed in this revision. osd-wbcfs (25813cf8ba, May 2025) was already in the tree when LU-19388 landed (Dec 2025) and was left out of it, so the delayed-fput load issue stayed in osd-wbcfs:
Fixes: bdb39e8390c4 ("LU-19388 osd: remove calls to alloc_file_pseudo()")
reply Gerrit AI review for Lustre osd_handler.c:36 — (style) Removing osd_flush_fput() left a double blank line here.
Gerrit AI review for Lustre
(style) Removing osd_flush_fput() left a double blank line here.
reply Gerrit AI review for Lustre osd_handler.c:11 — (minor) This include was only needed for cfs_kallsyms_lookup_name("flush_delayed_fput"), which this patch removes. Nothing else in osd-wbcfs
Gerrit AI review for Lustre
(minor) This include was only needed for cfs_kallsyms_lookup_name("flush_delayed_fput"), which this patch removes. Nothing else in osd-wbcfs uses kallsyms now, so the include can go. Also, osd-ldiskfs and osd-wbcfs were the only users of HAVE_FLUSH_DELAYED_FPUT, so LC_HAVE_FLUSH_DELAYED_FPUT in config/lustre-core.m4 is now dead too. That could be dropped here or in a follow-up.
reply Gerrit AI review for Lustre osd_internal.h:110 — (style) Double blank line left behind by the osd_alloc_file_pseudo() removal.
Gerrit AI review for Lustre
(style) Double blank line left behind by the osd_alloc_file_pseudo() removal.
reply Gerrit AI review for Lustre osd_io.c:173 — (suggestion) This puts roughly 400 bytes (struct file plus struct dentry) on the stack in a path that already runs deep under ptlrpc, and it
Gerrit AI review for Lustre
(suggestion) This puts roughly 400 bytes (struct file plus struct dentry) on the stack in a path that already runs deep under ptlrpc, and it's duplicated in osd_write(). LU-19388 avoided that by parking `struct file oti_file` in osd_thread_info and sharing osd_get_filp_for_inode(). osd-wbcfs has no osd_thread_info yet, but a small shared helper would at least keep the two copies from drifting.
reply Gerrit AI review for Lustre osd_io.c:187 — (minor) This is an unlocked read-modify-write on `i_flags`. osd_attr_set() takes `obj->oo_guard` for writing around osd_inode_setattr(), whi
Gerrit AI review for Lustre
(minor) This is an unlocked read-modify-write on `i_flags`. osd_attr_set() takes `obj->oo_guard` for writing around osd_inode_setattr(), which assigns the whole word:
inode->i_flags = ll_ext_to_inode_flags(attr->la_flags) | S_NOCMTIME;
A concurrent osd_read()/osd_write() can read the old word and store it back, dropping whatever flags that setattr just changed. Following the ldiskfs change and ORing S_PRIVATE into osd_inode_setattr() plus the inode-creation path would avoid both the race and re-doing this on every IO.
reply Gerrit AI review for Lustre osd_io.c:195 — (defect) Can this oops? `dentry` is a zeroed stack object, so `d_sb` is NULL, and f_mode here has neither FMODE_NONOTIFY nor FMODE_PATH. On
Gerrit AI review for Lustre
(defect) Can this oops? `dentry` is a zeroed stack object, so `d_sb` is NULL, and f_mode here has neither FMODE_NONOTIFY nor FMODE_PATH. On 6.10 through 6.16:
kernel_read() -> rw_verify_area(READ, ...)
-> fsnotify_file_area_perm(file, MAY_READ, ...) /* passes, MAY_READ */
-> fsnotify_file(file, FS_ACCESS_PERM)
and fsnotify_file() does
if (file->f_mode & (FMODE_NONOTIFY | FMODE_PATH))
return 0;
path = &file->f_path;
if (mask & ALL_FSNOTIFY_PERM_EVENTS &&
!fsnotify_sb_has_priority_watchers(path->dentry->d_sb, ...))
FS_ACCESS_PERM is in ALL_FSNOTIFY_PERM_EVENTS, so `path->dentry->d_sb` is read and fsnotify_sb_info() dereferences it. 6.12 is an in-tree build target (lustre/kernel_patches/targets/6.12-rhel10.0.target), and CONFIG_FANOTIFY_ACCESS_PERMISSIONS is on in the enterprise configs. The path is reached from llog_osd_read_header()/seq_store_read() -> dt_read() -> osd_read().
alloc_file_pseudo() used to hide this: d_alloc_pseudo() set d_sb from the mount and made the dentry its own parent, so IS_ROOT() held. Setting `dentry.d_sb = inode->i_sb;` and `dentry.d_parent = &dentry;` restores both. Adding FMODE_NONOTIFY, as osd_get_filp_for_inode() does in osd-ldiskfs, would short-circuit fsnotify entirely.
The write side at the bottom of the file has the same uninitialised dentry; MAY_WRITE returns early from fsnotify today, so only the read path trips it, but the two should probably be fixed together.
owner Timothy Day · uploader Timothy Day · PS5 uploaded 15d ago · NEW · open in Gerrit ↗
commit message
LU-18813 osd-wbcfs: remove calls to alloc_file_pseudo() Duplicate the work of "LU-19388 osd: remove calls to alloc_file_pseudo()" but for osd-wbcfs. fput() which we need to call after alloc_file_pseudo() doesn't release file struct right away and postponed jobs to release it may create a massive load to system interrupting regular Lustre processing. The reason for using alloc_file_pseudo() was due to the removal of kallsyms_lookup_name(). The function iterate_dir() will crash unless security_file_alloc() and security_file_free() are not called. Now that Lustre uses kprobes to export functions we can unwind the work of LU-13783. Test-Parameters: trivial Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: I378babbd6ec42c0f5ba6f3b6f74ccabb458dde01
65465
master
J !B ✓T ✓R 0/2
LU-20184 nrs: extend TBF rate to support bandwidth (BPS) mode
cc Qian Yingjin ·
L +538 −16
27d
LU-20184 nrs: extend TBF rate to support bandwidth (BPS) mode
cc Qian Yingjin ·
L +538 −16
27d
janitor run: 11 failing config(s), none unique to this patch — janitor results
no vote yet: Chris Horn, Andreas Dilger
patchsets:
PS10 09-06 Chris Horn
PS11 09-07 Chris Horn
PS12 09-11 Chris Horn
PS13 09-12 Chris Horn
PS14 09-18 Chris Horn
+9 earlier
PS1 04-22 PS2 04-22 PS3 04-22 PS4 05-01 PS5 05-09 PS6 05-14 PS7 09-02 Chris Horn PS8 09-05 Chris Horn PS9 09-06 Chris Hornowner Qian Yingjin · uploader Chris Horn · PS14 uploaded 46d ago · NEW · open in Gerrit ↗
commit message
LU-20184 nrs: extend TBF rate to support bandwidth (BPS) mode
The TBF policy limits a rule in RPCs per second. With mixed I/O sizes,
the RPC count does not show the cost. 100 writes of 4 MiB cost much
more than 100 writes of 4 KiB.
Add a bandwidth (BPS) mode. The "bps=" rule key sets a byte rate for
read and write RPCs, in MiB/s by default. The "iops=" key sets an RPC
rate, and a rule can set both. The rule dump adds a "bps=" field.
"realtime=" with "bps=" returns -EOPNOTSUPP. A rate of 0, or of
LPROCFS_NRS_RATE_MAX or more, returns -ERANGE, not -EINVAL.
nrs_tbf_rule="start r1 projid={100} iops=1000 bps=5MB/s"
Read limit 5 MiB/s, write limit 15 MiB/s, result in MB/s:
blksz 4KiB 64KiB 128KiB 256KiB 1MiB
write 5.7 14.6 14.8 15.3 15.7
read 4.6 5.0 5.1 5.2 5.3
Add sanityn/test_77u{a,b,c,d}.
Test-Parameters: trivial testlist=sanityn env=ONLY=77
Signed-off-by: Yingjin Qian <qian@ddn.com>
Assisted-by: ClaudeCode:Opus-5
Change-Id: I359e23faedd2a09d3249c1a36038396d9780293a
62461
master
J !B ✓T ✓R -1/2−
LU-19584 lraft: import Raft code
cc Hongchao Zhang ·
1 unresolved
XL +3412 −0
35d
LU-19584 lraft: import Raft code
cc Hongchao Zhang ·
1 unresolved
XL +3412 −0
35d
janitor run: 1 failing config(s), none unique to this patch — janitor results
build #121787 SUCCESS · tests all Maloo sessions
reviews:
Timothy Day -1
no vote yet: Lai Siyao, Andreas Dilger
patchsets:
PS3 02-05
PS4 02-06
PS5 02-09
PS6 02-10
PS7 02-18
+2 earlier
PS1 11-10 PS2 11-13threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Timothy Day raft.h:4 — This file doesn't exist. We should point to the correct file.
Timothy Day
This file doesn't exist. We should point to the correct file.
owner Hongchao Zhang · uploader Hongchao Zhang · PS7 uploaded 258d ago · NEW · open in Gerrit ↗
commit message
LU-19584 lraft: import Raft code Import Raft implementation from https://github.com/willemt/raft (v0.7.0-57-ge428eeb) to Lustre, which will be used to implement fault-tolerant service. Test-Parameters: trivial Signed-off-by: Lai Siyao <lai.siyao@whamcloud.com> Change-Id: I1de9861f7fab9afcde5a63c932ef9651618aafc1
67823
master
J !B ✓T ✓R +0/2−
LU-20559 target: keep client bitmap updates out of assertions
cc Oleg Drokin ·
1 unresolved
S +10 −7
40d
LU-20559 target: keep client bitmap updates out of assertions
cc Oleg Drokin ·
1 unresolved
S +10 −7
40d
janitor run: 6 failing config(s), none unique to this patch — janitor results
2 optional test failure(s) — informational
build #128987 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1 · Timothy Day -1
patchsets:
PS1 08-07
PS2 08-08
PS3 08-09
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:30 — (suggestion) this isn't a bug, but LU-20559 is filed against the obd2obt() obt_magic assertion when destroying exports of a failed mount, an
Gerrit AI review for Lustre
(suggestion) this isn't a bug, but LU-20559 is filed against the obd2obt() obt_magic assertion when destroying exports of a failed mount, and this paragraph says the change needs neither that crash nor the rest of the series. It also has its own Fixes: commit and an unrelated failure mode. Would a separate ticket be a better home, so the backport scope of the two doesn't get conflated?
owner Oleg Drokin · uploader Oleg Drokin · PS3 uploaded 86d ago · NEW · open in Gerrit ↗
commit message
LU-20559 target: keep client bitmap updates out of assertions
tgt_client_add() and tgt_client_free() update lut_client_bitmap from
inside the condition of a LASSERTF(). With --disable-libcfs-assert
LASSERTF() expands to ((void)sizeof!!(cond)), so neither the set nor
the clear is evaluated at all and the bitmap stops tracking anything.
The clear side leaks: the slot stays set for the life of the target
while tgt_client_new() hands out a fresh index for each new client.
The set side corrupts. tgt_clients_data_init() calls tgt_client_add()
once per occupied last_rcvd slot at mount, so with the set gone every
recovered client's bit stays clear. tgt_client_new() then takes
find_first_zero_bit() == 0 and gives that index to a new client while
a recovering export still owns it: both get the same ted_lr_idx and
ted_lr_off and write over each other's lsd_client_data.
Do the bitmap operation first and assert on its result. The clear
side also tests lut_client_bitmap rather than asserting on it, because
the dereference below it would otherwise happen in exactly the builds
where the assertion is gone, on a pointer this series shows can be
NULL.
This is independent of the rest of the series and of the crash it
fixes - it needs neither, and neither needs it.
Fixes: a32c87805ffb ("LU-18155 misc: use LASSERT/F instead of if () LBUG()")
Signed-off-by: Oleg Drokin <green@whamcloud.com>
Assisted-by: ClaudeCode:Opus-5 llm_code_and_review_tools
Change-Id: Ie8b233b19cd385cab92058acaafbc603bf35165e
67873
master
J !B ✓T ✓R +1/2
LU-20559 misc: fix the --disable-libcfs-assert build
cc Oleg Drokin ·
3 unresolved
S +10 −4
40d
LU-20559 misc: fix the --disable-libcfs-assert build
cc Oleg Drokin ·
3 unresolved
S +10 −4
40d
janitor run: 6 failing config(s), none unique to this patch — janitor results
build #128990 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger +1
threads: 3 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre COMMIT_MSG:33 — (minor) Both breakages are long-standing, so Fixes: tags would help the maintenance branches decide whether they need this. The %lld mismatc
Gerrit AI review for Lustre
(minor) Both breakages are long-standing, so Fixes: tags would help the maintenance branches decide whether they need this. The %lld mismatch came in with the atomic64 conversion, and the LDLM_WARN gap with the commit that added the only call site:
Fixes: 9397f8cf866a ("LU-14016 libcfs: use atomic64_t for libcfs_kmem")
Fixes: 238a309ea608 ("LU-3285 mds: combine DoM bit with other IBITS")
reply Gerrit AI review for Lustre libcfs_private.h:112 — (minor) With the declaration unconditional here, the second `extern atomic64_t libcfs_kmem;` in lustre/include/obd_support.h becomes redunda
Gerrit AI review for Lustre
(minor) With the declaration unconditional here, the second `extern atomic64_t libcfs_kmem;` in lustre/include/obd_support.h becomes redundant - that header already includes this one. Worth dropping in the same patch?
reply Gerrit AI review for Lustre lustre_dlm.h:1485 — (defect) The stub list is complete now, but _ldlm_lock_debug()'s prototype a few lines up is still inside the #ifdef, while ldlm_lock.c defi
Gerrit AI review for Lustre
(defect) The stub list is complete now, but _ldlm_lock_debug()'s prototype a few lines up is still inside the #ifdef, while ldlm_lock.c defines and exports the function unconditionally. Since v6.7 the kernel adds -Wmissing-prototypes in the default warning set (scripts/Makefile.extrawarn), and configure adds -Wall -Werror on x86_64 by default (config/lustre-toolchain.m4), so --disable-libcfs-assert still stops here:
ldlm_lock.c:2780: error: no previous prototype for '_ldlm_lock_debug'
Moving the declaration above the #ifdef gives it the same treatment libcfs_kmem gets in this patch. el8/el9 kernels predate that warning becoming default, which is likely why the build looked clean.
lustre/quota/lquota_internal.h has the identical pattern for lquota_lqe_debug0(), defined unconditionally in lquota_entry.c.
owner Oleg Drokin · uploader Oleg Drokin · PS1 uploaded 86d ago · NEW · open in Gerrit ↗
commit message
LU-20559 misc: fix the --disable-libcfs-assert build The tree does not compile with --disable-libcfs-assert. Two things break once LIBCFS_DEBUG is undefined: libcfs_kmem_read() becomes (0), an int, while the branch above it yields long long and every caller prints it with %lld. With -Werror=format that is 73 errors across lnet and libcfs. The extern for libcfs_kmem sits inside the same #ifdef, but the sysctl table in lnet/libcfs/module.c refers to libcfs_kmem.counter whether or not the counters are maintained, so it fails to compile with the variable undeclared. It is defined unconditionally in debug.c. Give the disabled branch a long long, and declare libcfs_kmem outside the conditional. Two more surface in ldlm once that is out of the way: the !LIBCFS_DEBUG branch defines LDLM_DEBUG_LIMIT, LDLM_DEBUG and LDLM_ERROR but not LDLM_WARN, which ldlm_inodebits.c calls, and ldlm_handle_ast_error()'s peer is then referenced only from macros that compile to nothing. This matters beyond the build: the assertion fixes elsewhere in this series only change behaviour in this configuration, and none of them could be tested until it compiled. Signed-off-by: Oleg Drokin <green@whamcloud.com> Assisted-by: ClaudeCode:Opus-5 llm_code_and_review_tools Change-Id: I7b2e884999ee39b37f31cbc135ead1713a07f83e
68019
master
J ✗4B ✗T –R -1/2−
LU-20591 target: iterate objects on OST and MDT
cc Jinshan Xiong · blocked on the owner: janitor: test failures unique to this patch; build failure
4 unique failures
13 unresolved
XL +2173 −7
64d
LU-20591 target: iterate objects on OST and MDT
cc Jinshan Xiong · blocked on the owner: janitor: test failures unique to this patch; build failure
4 unique failures
13 unresolved
XL +2173 −7
64d
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-scrub@ldiskfs+DNE:test_23 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-scrub@ldiskfs+DNE:test_24 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-scrub@ldiskfs+DNE:test_25 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
| sanity-scrub@ldiskfs+DNE:test_26 | NEW unique failure for this branch in the last 30 days, and was seen 0 times across 0 other branches 0 reviews |
build #129393 FAILURE
threads: 13 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Jinshan Xiong COMMIT_MSG — (style) In 'LU-20591 target: iterate objects on OST and MDT' the Change-Id: comes before the Signed-off-by:, which usually means the Lustre
Jinshan Xiong
(style) In 'LU-20591 target: iterate objects on OST and MDT' the Change-Id: comes before the Signed-off-by:, which usually means the Lustre commit-msg hook is not installed. The other two commits in the series have the conventional order. The series is also authored under two different addresses, jinshan.xiong@gmail.com on the first and third commits and jinshanx@google.com on the second, while every Signed-off-by is the google.com one.
reply Jinshan Xiong llapi_obj_iterate.3:60 — (typo) Four timestamps, not three: the item carries lsii_atime, lsii_btime, lsii_ctime and lsii_mtime, and the struct listing further down s
Jinshan Xiong
(typo) Four timestamps, not three: the item carries lsii_atime, lsii_btime, lsii_ctime and lsii_mtime, and the struct listing further down shows all four.
reply Jinshan Xiong llapi_obj_iterate.3:166 — (minor) LU_SCRUB_ITER_RES_EOF is undocumented here, even though it is the only way a caller can tell a walk that reached the end of the devi
Jinshan Xiong
(minor) LU_SCRUB_ITER_RES_EOF is undocumented here, even though it is the only way a caller can tell a walk that reached the end of the device from one that stopped early or was turned away with -EBUSY. Worth listing alongside LU_SCRUB_ITER_RES_SKIPPED.
reply Jinshan Xiong llapi_obj_iterate.3:235 — (minor) For a man page added in the same patch as the function, this should carry the most recent parent tag (2.17.57) rather than a git des
Jinshan Xiong
(minor) For a man page added in the same patch as the function, this should carry the most recent parent tag (2.17.57) rather than a git describe of an unlanded commit. The exact hash can be filled in once it lands.
reply Jinshan Xiong lctl.8:227 — (minor) This adds ~175 lines describing one sub-command inside lctl.8. The convention for lctl sub-commands is a page of its own, lctl-itera
Jinshan Xiong
(minor) This adds ~175 lines describing one sub-command inside lctl.8. The convention for lctl sub-commands is a page of its own, lctl-iterate-objects.8, cross-referenced from here, so that 'man lctl-iterate-objects' works and lctl.8 stays an index.
reply Jinshan Xiong ofd_obd.c:1248 — (style) This isn't a bug, but there is already fid_seq_is_mdt0() for this comparison, and fid_seq_is_mdt() folds it together with the fid_se
Jinshan Xiong
(style) This isn't a bug, but there is already fid_seq_is_mdt0() for this comparison, and fid_seq_is_mdt() folds it together with the fid_seq_is_norm() line below.
reply Misc Code Checks Robot (Gatekeeper helper) ofd_obd.c:1303 — error: ofd_scrub_iter_rec():'fo' dereferencing possible ERR_PTR()
Misc Code Checks Robot (Gatekeeper helper)
error: ofd_scrub_iter_rec():'fo' dereferencing possible ERR_PTR()
reply Jinshan Xiong osd_scrub.c:2536 — (defect) Turning osd_scrub_start() away with -EBUSY changes what a client sees when an OI inconsistency is hit during a walk.
Jinshan Xiong
(defect) Turning osd_scrub_start() away with -EBUSY changes what a client sees when an OI inconsistency is hit during a walk.
osd_fid_lookup() does:
rc1 = osd_scrub_start(env, dev, flags);
if (rc1 && rc1 != -EALREADY)
GOTO(out, result = -EREMCHG);
so an RPC that would previously have triggered the scrub and returned the retryable -EINPROGRESS now fails hard with -EREMCHG. The osd-zfs side has the same shape in osd_index.c, where rc is overwritten by the osd_scrub_start() return and -EBUSY becomes the lookup result.
The iterator only lives for one ioctl, but a full 'lctl iterate_objects' run holds it back to back for most of the walk, so the window is not small in practice. Should the -EBUSY be confined to an explicitly requested scrub start and the RPC-triggered path fall back to -EINPROGRESS?
reply Jinshan Xiong osd_scrub.c:3005 — (defect) Is this assertion still guaranteed on the DOIF_NOSCRUB path?
Jinshan Xiong
(defect) Is this assertion still guaranteed on the DOIF_NOSCRUB path? Before this patch osd_otable_it_init() always went through scrub_start(), and scrub_thread_prep() clears os_partial_scan before it sets os_running, so load() could rely on it being 0. With noscrub, scrub_start() is skipped entirely and nothing clears the flag. os_partial_scan is only reset in scrub_thread_prep() and osd_scrub_join(); scrub_thread_post() leaves it set, and the partial-scan loop in osd_inode_iteration() exits with it still 1 on SCRUB_NEXT_EXIT, SCRUB_NEXT_CRASH and SCRUB_NEXT_FATAL. A partial scan that ended that way leaves os_partial_scan == 1 with os_running == 0 for the life of the mount, which is exactly the state the noscrub iterator is allowed to start in, and it LBUGs here.
reply Jinshan Xiong osd_scrub.c:1579 — (minor) The noscrub arm of this looks dead: osd_otable_it_load() sets ooi_pos = hash + 1 unconditionally, and scrub_iterate_objects() always
Jinshan Xiong
(minor) The noscrub arm of this looks dead: osd_otable_it_load() sets ooi_pos = hash + 1 unconditionally, and scrub_iterate_objects() always calls load(). Was the intent to cover a caller that skips load()?
reply Jinshan Xiong sanity-scrub.sh:1540 — (style) New subtests normally take a large round number with gaps (test_100, test_200) so that patches landing in parallel do not collide on
Jinshan Xiong
(style) New subtests normally take a large round number with gaps (test_100, test_200) so that patches landing in parallel do not collide on the same numbers. 23 through 30 immediately after test_22 is likely to conflict. Also, test_23 creates 2048 files and test_28 creates 2560, and neither removes them; test_24, test_29 and test_30 already rm -rf $tdir, so the same stack_trap here would keep the filesystem from growing across the suite.
reply Jinshan Xiong sanity-scrub.sh:1555 — (defect) None of test_23 through test_31 gate on the server version, so an interop run against a server without OBD_IOC_SCRUB_ITER fails her
Jinshan Xiong
(defect) None of test_23 through test_31 gate on the server version, so an interop run against a server without OBD_IOC_SCRUB_ITER fails here instead of skipping. Something like
(( $OST1_VERSION >= $(version_code 2.17.58) )) ||
skip "need OST >= 2.17.58 for lctl iterate_objects"
at the top of each test body, with the MDT variant where the test drives mds1.
owner Jinshan Xiong · uploader Jinshan Xiong · PS1 uploaded 81d ago · NEW · open in Gerrit ↗
commit message
LU-20591 target: iterate objects on OST and MDT Add the OBD_IOC_SCRUB_ITER ioctl so that user space can enumerate the objects that a target holds. Both OFD and MDT implement it on top of the OSD object table iterator, which already knows how to walk a device and to resume from a cookie. That iterator was so far only used by OI scrub and LFSCK, and starting it also started the scrub thread. Add a DOIF_NOSCRUB flag that skips that: this is a read only walk and it must not repair anything. An iterator that did not start the scrub must not stop it either, so osd_otable_it_fini() now leaves the scrub alone in that case, where it would otherwise silently abort a scrub that was already running. A NOSCRUB iteration and an OI scrub further refuse to run at the same time and return -EBUSY, because the two would throttle each other through the preload window. A single call examines at most SCRUB_ITER_MAX_SCAN entries. Without such a budget a device holding only a handful of user objects would be walked from end to end inside one ioctl, keeping the iterator, and therefore OI scrub and LFSCK, busy for an unbounded time. A call can consequently come back with no object at all before the device has been fully walked, so the end of the walk is reported explicitly with LU_SCRUB_ITER_RES_EOF rather than inferred from an empty batch. The iterator is built and torn down inside each call, which is what lets a scrub start between two batches instead of waiting out a whole walk. The walk resumes from the cookie it was left at, so llapi_obj_iterate() hands that cookie back to its caller: a walk that was stopped, interrupted or turned away with -EBUSY can carry on from where it stopped rather than from the beginning of the device. The cookie only moves once a batch has been handed to the callback, so resuming repeats at most one batch and never skips an object. Recreating the iterator costs about 15us per call, and the preload window it fills is 64 entries, so a batch below that reads entries it then throws away. Measured over 20033 objects on one OST, a walk takes 0.03s at a batch of 64 or more and 0.34s at a batch of 1. An object that cannot be read is left out of the result, which a caller cannot tell from an object that was never there, so such a walk comes back marked with LU_SCRUB_ITER_RES_SKIPPED. Per object metadata is optional and is selected with the LU_SCRUB_ITER_REQ_* flags, so a caller that only wants FIDs does not pay for reading anything else, and what the target managed to collect comes back in LU_SCRUB_ITER_FL_*. There is one flag per extra read rather than one per field, because the size, the blocks, the four timestamps and the ownership of an object all come out of a single read of it, while its parent FID costs a read of its extended attributes. A flag the target does not know is refused rather than ignored, since metadata that comes back quietly missing cannot be told from metadata the object does not have. The parent FID of an MDT object lives in its linkEA, which is far too expensive to read for every object of a device, so LU_SCRUB_ITER_REQ_PARENT is rejected with -EOPNOTSUPP there. An item keeps room in reserve for the attributes a later version may report, and the caller says how large an item it expects: the size of an item is how both sides divide up the buffer, so two sides that disagree about it would read the result as something else entirely. Only the objects that user space can see are reported: the OST leaves out its local metadata files such as LAST_ID, the quota files and the llogs, and the MDT reports the regular files that have a normal FID only. An IGIF FID is not enough there: the OSD builds one out of the inode number and generation for the local files it has no FID of its own for, CONFIGS/mountdata for one, and nothing tells such a FID apart from the FID of a file inherited from a 1.8 filesystem. The walk itself is shared between the two targets in scrub_iterate_objects(), with a per target callback that filters an entry and fills in its metadata. Add llapi_obj_iterate() and 'lctl iterate_objects' on top of the ioctl, and document both under Documentation/. How many objects a single call fetches is left to the caller of the library function, which is what test_28 varies; test_23 to test_27 in sanity-scrub.sh cover the rest, test_29 that a walk can be resumed where it stopped and test_30 that one survives the objects under it being unlinked. Test-Parameters: testlist=sanity-scrub Change-Id: I47dceaf73031221c662c5cdd2b21d1bd667c87eb Signed-off-by: Jinshan Xiong <jinshanx@google.com>
68265
master
J !B ✓T ✓R +2/2
LU-20628 lnet: do not assert on an odd selftest bulk size
cc Oleg Drokin ·
S +38 −7
65d
LU-20628 lnet: do not assert on an odd selftest bulk size
cc Oleg Drokin ·
S +38 −7
65d
janitor run: 3 failing config(s), none unique to this patch — janitor results
build #130107 SUCCESS · tests all Maloo sessions
reviews:
Jinshan Xiong +1 · Chris Horn +1
no vote yet: Robert Read
owner Oleg Drokin · uploader Oleg Drokin · PS1 uploaded 72d ago · NEW · open in Gerrit ↗
commit message
LU-20628 lnet: do not assert on an odd selftest bulk size
brw_fill_page() asserted the length was a multiple of __u64 above
the early return for the patterns that write nothing, so any brw
test with a size= that is not a multiple of 8 LBUGged the test
node before a request went out, the default check=none included.
Assert only where the pattern is written, and reject an odd size
for the checked patterns in brw_client_init() and, since brw_len
also arrives over the wire, in brw_server_handle().
lst now refuses check=full and check=simple with an odd size= that
it used to pass down to the kernel, and the two dead end == NULL
guards that sat in front of that test are gone. lnet-selftest.sh
runs three more brw cases with an odd size=.
Test-Parameters: trivial testlist=lnet-selftest
Fixes: efcef00cb304 ("LU-5718 lnet: add offset for selftest brw")
Signed-off-by: Oleg Drokin <green@whamcloud.com>
Assisted-by: ClaudeCode:Opus-5 llm_code_and_review_tools
Change-Id: I76128c3d9e3bfce8fcde25bc1403c8b66160c9c0
68264
master
J !B ✓T ✓R +2/2
LU-20342 lnet: no selftest bulk after a refused request
cc Oleg Drokin ·
1 unresolved
XS +8 −1
65d
LU-20342 lnet: no selftest bulk after a refused request
cc Oleg Drokin ·
1 unresolved
XS +8 −1
65d
janitor run: 2 failing config(s), none unique to this patch — janitor results
build #130106 SUCCESS · tests all Maloo sessions
reviews:
Jinshan Xiong +1 · Chris Horn +1
no vote yet: Robert Read
threads: 1 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Gerrit AI review for Lustre rpc.c:1074 — (minor) This makes a refused BRW request reach srpc_server_rpc_done() with srpc_bulk still set, and brw_server_handle() has already installe
Gerrit AI review for Lustre
(minor) This makes a refused BRW request reach srpc_server_rpc_done() with srpc_bulk still set, and brw_server_handle() has already installed brw_server_rpc_done() before its early returns. Since srpc_status is 0 on this path, the callback takes the success branch:
CDEBUG(D_NET, "Transferred %d pages bulk data %s %s\n",
blk->bk_niov, blk->bk_sink ? "from" : "to", ...);
srpc_init_bulk() was never called for this request, so bk_niov/bk_sink still hold whatever the previous RPC on this recycled srpc_server_rpc left there, and the log claims a transfer that never happened. Debug-only, but it is misleading in exactly the interop case this patch is about. Worth having brw_server_rpc_done() bail out when the reply status is non zero?
owner Oleg Drokin · uploader Oleg Drokin · PS1 uploaded 72d ago · NEW · open in Gerrit ↗
commit message
LU-20342 lnet: no selftest bulk after a refused request
Since the BRW service began preallocating its bulk descriptor, a
handler that refused a request left rpc->srpc_bulk set, so
srpc_handle_rpc() asserted, and would otherwise have run a bulk
transfer for a request it had just refused. Send the reply
straight away instead; the client already unlinks its own bulk
when the reply status is non zero. The version mismatch branch
above had the same problem with no assertion to catch it.
A brw check=discard test against a server too old to know that
flag panics that server today.
Test-Parameters: trivial testlist=lnet-selftest
Fixes: e502638050a6 ("LU-16011 lnet: use preallocate bulk for server")
Signed-off-by: Oleg Drokin <green@whamcloud.com>
Assisted-by: ClaudeCode:Opus-5 llm_code_and_review_tools
Change-Id: Id57db19ea45d2899d641a815cc85700a22c8f91d
65861
master
J !B ✓T ✗19R 0/2
LU-20253 llite: remove d_compare() for overlayfs support
cc Timothy Day · blocked on the owner: enforced tests failed
13 unresolved
M +14 −53
89d
LU-20253 llite: remove d_compare() for overlayfs support
cc Timothy Day · blocked on the owner: enforced tests failed
13 unresolved
M +14 −53
89d
janitor run: 1 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-part-1 | RHEL 10.1 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-part-3 | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-part-4 | RHEL 9.7 / x86_64 | ran 9 tests. 1 tests failed: sanity-dom. | session |
| review-dne-part-4 | RHEL 10.1 / x86_64 | ran 9 tests. 1 tests failed: sanity-dom. | session |
| review-dne-part-5 | RHEL 9.7 / x86_64 | ran 5 tests. 1 tests failed: sanityn. | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-1 | RHEL 10.1 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-1 | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-2 | RHEL 10.1 / x86_64 | ran 11 tests. 2 tests failed: sanity-sec, sanity-lfsck. | session |
| review-dne-zfs-part-3 | RHEL 9.7 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-3 | RHEL 10.1 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. | session |
| review-dne-zfs-part-4 | RHEL 9.7 / x86_64 | ran 9 tests. 1 tests failed: sanity-dom. | session |
| review-dne-zfs-part-4 | RHEL 10.1 / x86_64 | ran 9 tests. 1 tests failed: sanity-dom. | session |
| review-dne-zfs-part-5 | RHEL 9.7 / x86_64 | ran 5 tests. 1 tests failed: sanityn. | session |
| review-ldiskfs | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 9.7 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-arm | RHEL 8.10 / x86_64, Rocky 9.5 / aarch64 | ran 6 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 24.04 / x86_64 | ran 6 tests. 1 tests failed: sanity. | session |
build #128826 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger
patchsets:
PS1 05-13
PS2 07-30
PS3 07-30
PS4 08-06
threads: 13 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Timothy Day COMMIT_MSG:12 — I ported simul to our tree: https://review.whamcloud.com/c/fs/lustre-release/+/65894. I can take a look at the racer issues as well.
Andreas Dilger
To be honest, I wouldn't call `ll_dcompare()` "very similar" to `d_same_name()`. Yes, they both start the same (compare name length and name string), but there several other checks in there that play a significant role with handling races between clients modifying the file in parallel.
Along with the in-tree "racer" code that is throwing garbage at the VFS, the "simul" test (https://github.com/llnl/simul) is stress-testing concurrent operations on the same directory and could be used to test this change.
Unfortunately, "racer" is flakey right now and not passing consistently, but it might still be worthwhile to run before/after tests to see if the _nature_ of the failures change (e.g. crash vs. hang). Of course, fixing "racer" would also be good.
The "simul" test _should_ always be passing, but I see it is being skipped for a large number of sessions. I filed LU-20259 about that, but in the meantime you should be able to run a session with something like:
Test-Parameters: testlist=parallel-scale env=ONLY=simul,simul_REP=100,simul_THREADS=8 clientdistro=ubuntu2404
Timothy Day
I ported simul to our tree: https://review.whamcloud.com/c/fs/lustre-release/+/65894. I can take a look at the racer issues as well.
reply Gerrit AI review for Lustre COMMIT_MSG:12 — This was raised on patchset 1 and the text is unchanged, so repeating it with a bit more detail: the part of ll_dcompare() that has no count
Gerrit AI review for Lustre
This was raised on patchset 1 and the text is unchanged, so repeating it with a bit more detail: the part of ll_dcompare() that has no counterpart in d_same_name() is exactly the part this patch has to re-implement - the d_lustre_invalid()/d_mountpoint()/d_in_lookup() handling. And it is not re-implemented equivalently: a name that failed d_compare() left the stale dentry alone and let ll_splice_alias()->ll_find_alias() reuse it, while a 0 from d_revalidate() makes the VFS d_invalidate() it first. Could the body describe that change of failure mode rather than calling it a move of "the special revalidation logic"?
reply Gerrit AI review for Lustre COMMIT_MSG:15 — The Test-Parameters line suggested on patchset 1 for the concurrent-access stress coverage still isn't here:
Gerrit AI review for Lustre
The Test-Parameters line suggested on patchset 1 for the concurrent-access stress coverage still isn't here:
Test-Parameters: testlist=parallel-scale env=ONLY=simul,simul_REP=100,simul_THREADS=8 clientdistro=ubuntu2404
reply Gerrit AI review for Lustre COMMIT_MSG:12 — This was raised on patchset 1 and the wording is unchanged, so passing on some evidence for it.
Gerrit AI review for Lustre
This was raised on patchset 1 and the wording is unchanged, so passing on some evidence for it.
ll_dcompare() was not only reachable from ->d_revalidate() paths. d_same_name() consults parent->d_op->d_compare(), so every d_lookup() went through it - including the ones llite makes itself, which never call ->d_revalidate():
ll_migrate() file.c:5897
LL_IOC_PCC_STATE dir.c:2857
sa_statahead() statahead.c:1059
So "very similar to the default" understates it: the invalid-dentry filtering was a property of d_lookup() for the whole module, and the replacement only covers the VFS revalidate path. Could the body describe which behaviour is preserved and which is dropped?
reply Timothy Day patchset comment — Do you have a reference to his previous work I can look at?
James Simmons
Interesting. Neil some time back tried this but never got it to work.
Timothy Day
Do you have a reference to his previous work I can look at?
reply Timothy Day patchset comment — The later patches (RENAME_*) don't have any dependency on this patch. So they could land independently of this one. s_encoding is an interes
James Simmons
https://review.whamcloud.com/24175. It was revert right after landing. Broke conf-sanity 32.
Andreas Dilger
Strangely, I had written a comment referencing this patch as well after I was spelunking in this code (`git log --patch lustre/llite/namei.c | grep -A30 -E "^commit|ll_dcompare"`), but I seem to have lost it when I saved my comments. Definitely this is a tricky area of code.
My suggestion in that other lengthy comment was to set `sb->s_encoding`, as this will bypass the `DCACHE_OP_COMPARE` check in `ovl_weird_dentry()`. It doesn't look hard to set a legitimate UTF-8 encoding value:
```
#if IS_ENABLED(CONFIG_UNICODE)
sb->s_encoding = utf8_load(UNICODE_AGE(12, 1, 0));
#endif
```
AFAICS setting `s_encoding` doesn't seem to have any other effect in the VFS if the case-insensitive `generic_ci_dentry_ops` are not installed on the file and `S_CASEFOLD` is not set on the directory. Consider this "preparing for case-insensitivity".
While this may (or may not) be a long-term solution, it is relatively harmless and should allow the later overlayfs patches to make progress while this one (likely) will take longer to get right.
Timothy Day
The later patches (RENAME_*) don't have any dependency on this patch. So they could land independently of this one. s_encoding is an interesting idea. But I'd prefer to work on improving the testing until were comfortable removing d_compare. Neil's previous patch seemed to mostly pass testing, so that gives me some hope that the work required isn't huge.
reply Gerrit AI review for Lustre dcache.c:231 — The comment says the check can "only definitively reject here when there is no inode", and that returning 0 for a positive invalid dentry is
Gerrit AI review for Lustre
The comment says the check can "only definitively reject here when there is no inode", and that returning 0 for a positive invalid dentry is what breaks the overlayfs case - but the condition below has no d_inode test, so it fires for positive dentries too. ovl_revalidate_real() will turn that 0 into -ESTALE exactly as described. Was the `!dentry->d_inode` term meant to stay in the condition, or is the comment left over from an earlier version? Worth noting the two readings are not equivalent for non-overlayfs use either: with the inode test, a positive dentry whose LOOKUP lock was revoked reports valid, so a name renamed/replaced on another client keeps resolving to the old inode until the operation itself fails.
reply Gerrit AI review for Lustre dcache.c:240 — Returning 0 here makes the VFS call d_invalidate() on the dentry (lookup_fast(), lookup_dcache(), __lookup_slow() all do `if (!status) d_inv
Gerrit AI review for Lustre
Returning 0 here makes the VFS call d_invalidate() on the dentry (lookup_fast(), lookup_dcache(), __lookup_slow() all do `if (!status) d_invalidate(dentry)`). For a positive dentry, d_invalidate() unhashes it, calls shrink_dcache_parent(), then loops on d_walk(..., find_submount) calling detach_mounts() on every mounted descendant.
d_lustre_invalidate() is not a "this name is gone" signal - ll_lock_cancel_bits() calls ll_prune_aliases() on any MDS_INODELOCK_LOOKUP|PERM cancellation, including a plain LRU cancel. So:
mount --bind /tmp /mnt/lustre/dir/sub
lctl set_param ldlm.namespaces.*mdc*.lru_size=clear
ls /mnt/lustre/dir
looks like it would silently unmount the bind mount. The `!d_mountpoint(dentry)` term only covers the dentry itself, not mounts below it. Under ll_dcompare() none of this happened: the invalid dentry was simply skipped and ll_find_alias() re-used the same object, with its children and mounts intact.
The same path also drops the whole cached subtree on each such lookup, and unhashing conflicts with the deliberate choice in ll_getattr_dentry() not to d_drop() an invalidated dentry so that getcwd() keeps working.
reply Gerrit AI review for Lustre dcache.c:241 — Is `!d_in_lookup(dentry)` reachable? That term was needed in ll_dcompare() because d_alloc_parallel() compares against the in-lookup hash vi
Gerrit AI review for Lustre
Is `!d_in_lookup(dentry)` reachable? That term was needed in ll_dcompare() because d_alloc_parallel() compares against the in-lookup hash via d_same_name(), but ->d_revalidate() is never called on an in-lookup dentry: __lookup_slow() and lookup_open() both test d_in_lookup() before calling it, and __d_lookup{,_rcu}() cannot return one since __d_add()/__d_splice_alias() clear DCACHE_PAR_LOOKUP before rehashing.
Not a bug, but as written it reads as though the parallel-lookup exclusion is still being enforced here.
reply Gerrit AI review for Lustre dcache.c:241 — Is the d_mountpoint() term reachable? DCACHE_MOUNTED is only set by d_set_mounted() on a mounted-on dentry, which is always positive, so `!d
Gerrit AI review for Lustre
Is the d_mountpoint() term reachable? DCACHE_MOUNTED is only set by d_set_mounted() on a mounted-on dentry, which is always positive, so `!dentry->d_inode` already implies `!d_mountpoint(dentry)`. Not a bug, but it reads as though the mountpoint case from ll_dcompare() is still being honoured here when it can never be evaluated.
reply Misc Code Checks Robot (Gatekeeper helper) dcache.c:264 — error: ll_revalidate_dentry():we previously assumed 'dentry->d_inode' could be null (see line 240)
Misc Code Checks Robot (Gatekeeper helper)
error: ll_revalidate_dentry():we previously assumed 'dentry->d_inode' could be null (see line 240)
reply Gerrit AI review for Lustre dcache.c:299 — Dropping .d_compare also changes what plain d_lookup() returns, and llite has three internal callers that use the result directly without ->
Gerrit AI review for Lustre
Dropping .d_compare also changes what plain d_lookup() returns, and llite has three internal callers that use the result directly without ->d_revalidate().
ll_migrate() (file.c:5897) is the concrete one:
dchild = d_lookup(file_dentry(file), &qstr);
if (dchild) {
if (dchild->d_inode)
child_inode = igrab(dchild->d_inode);
dput(dchild);
}
if (!child_inode) {
rc = ll_get_fid_by_name(parent, name, namelen, NULL, &child_inode);
With ll_dcompare() an invalid dentry never matched, so this always fell through to ll_get_fid_by_name(), i.e. a server lookup by name. Now an invalid dentry matches and the fallback is skipped.
ll_prune_aliases() marks aliases invalid on any MDS_INODELOCK_LOOKUP cancel and only d_prune_aliases() the unused ones, so a referenced dentry (cwd, cached children, open file) stays hashed and invalid. If another client renamed the name over a new object in the meantime, child_inode is the old object while mdt_migrate_lookup() resolves rr_name on the server and migrates the new one. The client then sets op_fid3, inode_lock()s, ll_lease_open()/ll_data_version() flushes, and on success clear_nlink()s the wrong inode.
The other two are less severe but the same root cause: the LL_IOC_PCC_STATE handler (dir.c:2857) reports state for a stale inode instead of falling back to ll_get_fid_by_name(), and sa_statahead() (statahead.c:1059) takes sa_revalidate() (getattr by fid on the stale inode) where it used to take sa_lookup() (lookup by name).
The new ->d_revalidate() check cannot cover these - they never reach it. Should these sites gain an explicit d_lustre_invalid() test before using the dcache result?
owner Timothy Day · uploader Timothy Day · PS4 uploaded 89d ago · NEW · open in Gerrit ↗
commit message
LU-20253 llite: remove d_compare() for overlayfs support To support overlayfs, Lustre must not implement DCACHE_OP_COMPARE. Otherwise, ovl_dentry_weird() will block the overlayfs mount with an error like: 'filesystem on lower not supported'. Lustre's custom d_compare() is very similar to the default d_compare() operation implemented by the kernel. Hence, remove Lustre's reimplementation and move the special revalidation logic. Signed-off-by: Timothy Day <timday@thelustrecollective.com> Change-Id: Iedd9b9ed837ae4b0db50770da30a80f140d427bb
59826
master
J ✗4B ✓T ✗17R 0/2
LU-19061 debug: restore --enable-pgstate-track
cc Shaun Tancheff · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
4 unique failures
1 unresolved
M +93 −36
96d
LU-19061 debug: restore --enable-pgstate-track
cc Shaun Tancheff · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
4 unique failures
1 unresolved
M +93 −36
96d
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity3@ldiskfs+DNE:test_78 | seen in 1 other review |
| sanity-lfsck@ldiskfs+DNE:test_45 | seen in 1 other review |
| sanity-quota@ldiskfs+DNE:test_13 | seen in 1 other review |
| sanity-quota@ldiskfs+DNE:test_86 | seen in 15 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| review-dne-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-part-1 | RHEL 9.5 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-part-2 | RHEL 8.10 / x86_64 | ran 11 tests. 1 tests failed: sanity-lfsck. | session |
| review-dne-part-2 | RHEL 9.5 / x86_64 | ran 11 tests. 1 tests failed: sanity-lfsck. | session |
| review-dne-part-4 | RHEL 8.10 / x86_64 | ran 9 tests. 1 tests failed: sanity-quota. | session |
| review-dne-part-4 | RHEL 9.5 / x86_64 | ran 9 tests. 1 tests failed: sanity-quota. | session |
| review-dne-part-6 | RHEL 8.10 / x86_64 | ran 6 tests. 1 tests failed: replay-single. | session |
| review-dne-part-6 | RHEL 9.5 / x86_64 | ran 6 tests. 1 tests failed: replay-single. | session |
| review-dne-selinux-ssk-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-1 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| review-dne-zfs-part-4 | RHEL 8.10 / x86_64 | ran 9 tests. 1 tests failed: sanity-quota. | session |
| review-dne-zfs-part-5 | RHEL 8.10 / x86_64 | ran 5 tests. 1 tests failed: sanityn. | session |
| review-dne-zfs-part-6 | RHEL 8.10 / x86_64 | ran 6 tests. 1 tests failed: replay-single. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, RHEL 9.5 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs | RHEL 8.10 / x86_64, SLES 15.5 / x86_64 | ran 5 tests. 1 tests failed: sanity. | session |
| review-ldiskfs-ubuntu | RHEL 8.10 / x86_64, Ubuntu 22.04 / x86_64 | ran 8 tests. 2 tests failed: sanity-sec, sanity. | session |
| review-zfs | RHEL 8.10 / x86_64 | ran 10 tests. 2 tests failed: replay-single, sanity-quota. | session |
4 optional test failure(s) — informational
build #114515 SUCCESS · tests all Maloo sessions
no vote yet: Timothy Day
patchsets:
PS1 06-18
PS2 06-18
PS3 06-22
threads: 0 need your reply · 0 waiting on others · 1 own notes · 0 bot
note James Simmons lustre-core.m4:6238 — Close. For upstream it should be ONFIG_LUSTRE_FS_DEBUG_PAGESTATE_TRACKING.
James Simmons
Close. For upstream it should be ONFIG_LUSTRE_FS_DEBUG_PAGESTATE_TRACKING.
owner Shaun Tancheff · uploader Shaun Tancheff · PS3 uploaded 500d ago · NEW · open in Gerrit ↗
commit message
LU-19061 debug: restore --enable-pgstate-track Statistics on cl_page tracking of folios in system cache. This also fixes KASAN errors related to use after free and a crash when checking stats during umount. Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: Ic84c7839b4a8ee5c74bf0249cf4920b0bf491561
47013
master
J ✓B ✓T ✓R 0/2
LU-13847 test: add sanity test_64f() to ALWAYS_EXCEPT
cc John Hammond ·
stalled 105d
XS +2 −0
105d
LU-13847 test: add sanity test_64f() to ALWAYS_EXCEPT
cc John Hammond ·
stalled 105d
XS +2 −0
105d
build #87303 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Mikhail Pershin, Vladimir Saveliev
patchsets:
PS1 04-07
PS2 04-07
PS3 05-06
owner John Hammond · uploader John Hammond · PS3 uploaded 1643d ago · NEW · open in Gerrit ↗
commit message
LU-13847 test: add sanity test_64f() to ALWAYS_EXCEPT sanity test_64f() fails some non zero percent of the time and no one is working on it so add it to ALWAYS_EXCEPT. Test-Parameters: trivial testlist=sanity Signed-off-by: John L. Hammond <jhammond@whamcloud.com> Change-Id: Iafc080502fe4c9f2b7be8a95f268953296d8a1e3
63175
master
J ✗2B ✓T ✗1R -2/2−
LU-19692 test: track portal leak
cc Mikhail Pershin · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; janitor: test failures unique to this patch; enforced tests failed
needs rebase
2 unique failures
stalled 116d
S +32 −13
116d
LU-19692 test: track portal leak
cc Mikhail Pershin · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; janitor: test failures unique to this patch; enforced tests failed
needs rebase
2 unique failures
stalled 116d
S +32 −13
116d
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| conf-sanity2@ldiskfs+DNE:test_73e | NEW unique failure for this branch in the last 30 days, and was seen 2 times across 1 other branches 1 reviews |
| conf-sanity2@zfs:test_73e | NEW unique failure for this branch in the last 30 days, and was seen 2 times across 1 other branches 1 reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: conf-sanity. This build will be scored -1 since fortestonly was specified. | session |
build #120101 SUCCESS · tests all Maloo sessions
no vote yet: Serguei Smirnov
patchsets:
PS5 12-29
PS6 12-29
PS7 12-29
PS8 12-29
PS9 01-02
+4 earlier
PS1 12-26 PS2 12-26 PS3 12-27 PS4 12-28owner Mikhail Pershin · uploader Mikhail Pershin · PS9 uploaded 305d ago · NEW · open in Gerrit ↗
commit message
LU-19692 test: track portal leak attempt to reproduce Test-Parameters: fortestonly testlist=conf-sanity env=ONLY=73,ONLY_REPEAT=10 Signed-off-by: Mikhail Pershin <mpershin@whamcloud.com> Change-Id: Ie1b9f16b5049483879437a5ab7a42caefbf1ea25
29117
master
J –B ✓T ✗0R -2/2−
LU-10013 llite: Atomic usage cleanups
cc Patrick Farrell · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
stalled 292d
5 unresolved
M +76 −88
292d
LU-10013 llite: Atomic usage cleanups
cc Patrick Farrell · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; enforced tests failed
needs rebase
stalled 292d
5 unresolved
M +76 −88
292d
reviews:
Alex Zhuravlev -1
no vote yet: Dmitry Eremin, Arshad Hussain, Patrick Farrell
threads: 5 need your reply · 0 waiting on others · 0 own notes · 0 bot
reply Arshad Hussain COMMIT_MSG:9 — This patch is a improvement even if it does do "There are a lot of places in Lustre where we use more than one atomic operation where one wi
Arshad Hussain
This patch is a improvement even if it does do "There are a lot of places in Lustre where we use more than one atomic operation where one will do".
reply Arshad Hussain lib-lnet.h:420 — IMO, to change read + check for zero then increment like below...
Arshad Hussain
IMO, to change read + check for zero then increment like below... ASSERT(atomic_read(&lp->lpni_refcount) > 0); atomic_inc(&lp->lpni_refcount); is to change to LASSERT(atomic_inc_not_zero(&hdev->ibh_ref)); since we do not want to always increment. But only increment if the value is not zero. Else it is error condition
reply Arshad Hussain import.c:1380 — same...
Arshad Hussain
same...
reply Arshad Hussain service.c:1386 — this looks correct
Arshad Hussain
this looks correct
reply Arshad Hussain lquota_entry.c:126 — this is definitely a win... others also
Arshad Hussain
this is definitely a win... others also
owner Patrick Farrell · uploader Patrick Farrell · PS3 uploaded 3331d ago · NEW · open in Gerrit ↗
commit message
LU-10013 llite: Atomic usage cleanups There are a lot of places in Lustre where we use more than one atomic operation where one will do. The compiler can't fix this for us, since usage of atomics is mostly exempt from optimization. This patch cleans up many of those cases. In a few places, this has a measurable benefit. (lu_object_get can use atomic_inc_return for the ASSERT, and this nets a few % improvement on single process reads). The change to osc_update_pending is expected to net a few % on shared file workloads. Signed-off-by: Patrick Farrell <paf@cray.com> Change-Id: Ie2b0b4a7fac4e544a66746c95e496071765070a3
60050
master
J !B ✗T –R -1/2−
LU-19162 lnet: implement simple LNet block driver
cc Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; build failure
needs rebase
stalled 369d
L +703 −2
369d
LU-19162 lnet: implement simple LNet block driver
cc Timothy Day · blocked on the owner: needs rebase — checkpatch: cannot be cherry-picked; build failure
needs rebase
stalled 369d
L +703 −2
369d
janitor run: build failed — no tests ran — janitor results
build #114918 FAILURE
no vote yet: Serguei Smirnov
patchsets:
PS1 07-07
PS2 07-07
PS3 07-07
PS4 07-09
owner Timothy Day · uploader Timothy Day · PS4 uploaded 482d ago · NEW · open in Gerrit ↗
commit message
LU-19162 lnet: implement simple LNet block driver Implement a simple block device on-top of LNet. This is implemented as two drivers: lnet_host.ko (client) and lnet_target.ko (server). The target allocates an array of pages and registers them as passive RDMAs. The host registers a block device and devices block requests to the target as LNetGet() and LNetPut(). There is a one-to-one mapping between O_DIRECT block IOs and LNet network requests. The LNet block driver aims to implement the simplest LNet service possible. With some additional optimization, this could serve as an alternative to LNet selftest. Test-Parameters: ignore Signed-off-by: Timothy Day <timday@amazon.com> Change-Id: Ic8968d37a76021939dcf082191598d7ca23c738a
60747
master
J –B ✓T ✓R 0/2
LU-19238 tests: Ensure dir updates are visible
cc Oleg Drokin ·
stalled 444d
S +16 −0
444d
LU-19238 tests: Ensure dir updates are visible
cc Oleg Drokin ·
stalled 444d
S +16 −0
444d
build #115788 SUCCESS · tests all Maloo sessions
patchsets:
PS1 08-14
PS2 08-15
PS3 08-15
owner Oleg Drokin · uploader Oleg Drokin · PS3 uploaded 446d ago · NEW · open in Gerrit ↗
commit message
LU-19238 tests: Ensure dir updates are visible This is a test for the actual fix. Change-Id: I238171bc60586b8ae2a2d7d185b9c4ac3b70d48d Test-Parameters: trivial testlist=parallel-scale-nfsv4,parallel-scale-nfsv3 Signed-off-by: Oleg Drokin <green@whamcloud.com>
60537
master
J !B ✓T ✓R 0/2
LU-0000 lov: initial client support
cc Patrick Farrell ·
stalled 455d
M +95 −12
455d
LU-0000 lov: initial client support
cc Patrick Farrell ·
stalled 455d
M +95 −12
455d
janitor run: 3 failing config(s), none unique to this patch — janitor results
3 optional test failure(s) — informational
build #115547 SUCCESS · tests all Maloo sessions
owner Patrick Farrell · uploader Patrick Farrell · PS1 uploaded 456d ago · NEW · open in Gerrit ↗
commit message
LU-0000 lov: initial client support Initial client support for EC layouts. A step towards allowing actually creating EC layouts. Signed-off-by: Patrick Farrell <pfarrell@whamcloud.com> Change-Id: I0e2a5d59df04ba6f7053d889cb5f204048edf8d7
60538
master
J !B ✗T –R 0/2
LU-0000 lod: initial implementation
cc Patrick Farrell · blocked on the owner: build failure
stalled 455d
L +254 −81
455d
LU-0000 lod: initial implementation
cc Patrick Farrell · blocked on the owner: build failure
stalled 455d
L +254 −81
455d
janitor run: build failed — no tests ran — janitor results
build #115548 FAILURE
owner Patrick Farrell · uploader Patrick Farrell · PS1 uploaded 456d ago · NEW · open in Gerrit ↗
commit message
LU-0000 lod: initial implementation This is an initial and partially incorrect implementation, which I'll be tearing up a bit until we can actually get layout creation to work. Signed-off-by: Patrick Farrell <pfarrell@whamcloud.com> Change-Id: I229b5751b60f8078e22dbb4ed3e2e205d3e4c9a1
50561
master
J !B ✓T ✓R -1/2−
LU-16374 ldiskfs: implement backup/restore of enc files
cc Sebastien Buisson ·
stalled 456d
XL +1336 −249
456d
LU-16374 ldiskfs: implement backup/restore of enc files
cc Sebastien Buisson ·
stalled 456d
XL +1336 −249
456d
janitor run: 2 failing config(s), none unique to this patch — janitor results
2 optional test failure(s) — informational
build #96694 SUCCESS · tests all Maloo sessions
reviews:
Andreas Dilger -1
no vote yet: Qian Yingjin
patchsets:
PS4 05-22
PS5 07-12
PS6 07-13
PS7 08-01
PS8 08-07
+3 earlier
PS1 04-06 PS2 05-17 PS3 05-17owner Sebastien Buisson · uploader Sebastien Buisson · PS8 uploaded 1184d ago · NEW · open in Gerrit ↗
commit message
LU-16374 ldiskfs: implement backup/restore of enc files Add new dev/testing commands to lctl to perform backup and restore of encrypted files at the ldiskfs level: - lctl fscrypt backup - lctl fscrypt restore ldiskfs is patched to support reading encrypted files without the encryption key, and also creating new files and writing to them without the encryption key. The backup phase (lctl fscrypt backup) consists in copying the source directory or file to a backup folder. A file is opened with O_CIPHERTEXT | O_DIRECT flags and content is copied. Then attributes and xattrs are copied. The restore phase (lctl fscrypt restore) consists in copying back a file or directory to ldiskfs. A file is opened with O_TMPFILE flag in addition to O_CIPHERTEXT | O_DIRECT, to create a temp file. After restoring attributes and xattrs, the file is linked to the namespace atomically, with its actual encrypted name. For directories we simply use rename, as links on directories are not possible. Add sanity-sec test_65 to exercise backup/restore at the ldiskfs level via the lctl fscrypt backup/restore commands. This patch only supports rhel8. Signed-off-by: Sebastien Buisson <sbuisson@ddn.com> Change-Id: I981a1c543819b3b097f41e4812fa82ef059e0a0c
58698
master
J !B ✓T ✗3R 0/2
LU-18813 osd-wbcfs: store/pin LAST_ID and local files into MemFS
cc Qian Yingjin · blocked on the owner: enforced tests failed
stalled 573d
1 unresolved
L +426 −28
573d
LU-18813 osd-wbcfs: store/pin LAST_ID and local files into MemFS
cc Qian Yingjin · blocked on the owner: enforced tests failed
stalled 573d
1 unresolved
L +426 −28
573d
janitor run: 2 failing config(s), none unique to this patch — janitor results
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| custom-1002 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
| custom-1003 | RHEL 8.10 / x86_64 | ran 3 tests. 1 tests failed: sanity. | session |
build #112346 SUCCESS · tests all Maloo sessions
no vote yet: Andreas Dilger, Timothy Day
patchsets:
PS2 04-07
PS3 04-08
PS4 04-08
PS5 04-08
PS6 04-08
+1 earlier
PS1 04-07threads: 0 need your reply · 0 waiting on others · 1 own notes · 0 bot
note James Simmons COMMIT_MSG:8 — sotre/store
James Simmons
sotre/store
owner Qian Yingjin · uploader Qian Yingjin · PS6 uploaded 574d ago · NEW · open in Gerrit ↗
commit message
LU-18813 osd-wbcfs: store/pin LAST_ID and local files into MemFS The local files with the fid seq of "FID_SEQ_LOCAL_FILE" and the "LAST_ID" for O/<seq> hierarchy should also be created and pinned in MemFS. Thus they will not evict from memory under the memory pressure or manual cache shrinking command. Test-Parameters: trivial Test-Parameters: trivial Test-Parameters: testlist=sanity fstype=wbcfs mdscount=1 mdtcount=1 osscount=1 ostcount=1 Test-Parameters: testlist=sanity fstype=wbcfs mdscount=1 mdtcount=1 osscount=4 ostcount=1 Test-Parameters: testlist=sanity fstype=wbcfs combinedmdsmgs=false standalonemgs=true mdscount=1 mdtcount=1 osscount=1 ostcount=1 Test-Parameters: testlist=sanity fstype=wbcfs combinedmdsmgs=false standalonemgs=true mdscount=1 mdtcount=1 osscount=4 ostcount=1 Signed-off-by: Yingjin Qian <qian@ddn.com> Change-Id: I1bbf768f0467fff16b12896db3f4f329ae11c7f4
25901
multi-rail
B ✓T ✓R 0/2
LU-9119 lnet: enable/disable multi-rail
cc Amir Shehata ·
stalled 862d
L +182 −184
862d
LU-9119 lnet: enable/disable multi-rail
cc Amir Shehata ·
stalled 862d
L +182 −184
862d
no vote yet: Serguei Smirnov, Chris Horn, Andreas Dilger
owner Amir Shehata · uploader Amir Shehata · PS3 uploaded 3525d ago · NEW · open in Gerrit ↗
commit message
LU-9119 lnet: enable/disable multi-rail Add the ability to turn on and off multi-rail from user space. A module parameter has been added for the same purpose. When multi-rail is off, peers discovering the node see it as non-multi-rail. Test-Parameters: trivial Signed-off-by: Amir Shehata <amir.shehata@intel.com> Change-Id: I60f0fbb8d1b95297819bb0975bac31f1e8a5c60e
53730
master
J ✗1B ✓T ✗3R 0/2
LU-10391 lnet: Add helpers for netlink initialization
cc Chris Horn · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
1 unique failure
IPv6
stalled 1016d
L +212 −456
1016d
LU-10391 lnet: Add helpers for netlink initialization
cc Chris Horn · blocked on the owner: janitor: test failures unique to this patch; enforced tests failed
1 unique failure
IPv6
stalled 1016d
L +212 −456
1016d
janitor flagged test failures unique to this patch — full janitor results
| unique failing test | history |
|---|---|
| sanity-lnet@zfs:test_207 | seen in 4 other reviews |
| failed enforced test | platform | detail | |
|---|---|---|---|
| custom-1001 | RHEL 8.8/x86_64 | ran 3 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-dne | RHEL 8.8/x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
| review-ldiskfs-dne-arm | RHEL 8.8/aarch64, RHEL 8.8/x86_64 | ran 5 tests. 1 tests failed: sanity-lnet. | session |
build #101520 SUCCESS · tests all Maloo sessions
patchsets:
PS1 01-18
PS2 01-19
owner Chris Horn · uploader Chris Horn · PS2 uploaded 1019d ago · NEW · open in Gerrit ↗
commit message
LU-10391 lnet: Add helpers for netlink initialization Remove some code duplication with helper routines for initalizing the netlink/yaml API. Test-Parameters: trivial testlist=sanity-lnet Signed-off-by: Chris Horn <chris.horn@hpe.com> Change-Id: I57fd64a37dbbde0428c26aa430e41986dba0b07b
41095
master
J ✓B ✓T ✓R +1/2−
LU-10973 lnet: api_check_route works if no route
cc Cyril Bordage ·
stalled 1316d
S +9 −6
1316d
LU-10973 lnet: api_check_route works if no route
cc Cyril Bordage ·
stalled 1316d
S +9 −6
1316d
build #19508 SUCCESS
reviews:
Frank Sehr +1 · Serguei Smirnov +1 · Andreas Dilger -1
no vote yet: Amir Shehata
owner Cyril Bordage · uploader Amir Shehata · PS2 uploaded 2066d ago · NEW · open in Gerrit ↗
commit message
LU-10973 lnet: api_check_route works if no route We can use api_check_route with exception set to false even if there is no configured route. Test-Parameters: @lnet Signed-off-by: Cyril Bordage <cbordage@whamcloud.com> Change-Id: Ib19180234b70b33dbd9f0af7ee66c978c8ddb508
Merged — last 30 days
(3)reviews:
Arshad Hussain +1 · Oleg Drokin +2 · Timothy Day +1
patchsets:
PS1 10-06
PS2 10-06
PS3 10-07
owner James Simmons · uploader Oleg Drokin · PS4 uploaded 13d ago · MERGED · open in Gerrit ↗
commit message
LU-18687 llite: cleanup BDI_CAP_* flags According to git commit v5.9-rc3-156-ged7b6b4f6e91 upstream we don't need BDI_CAP_CGROUP_WRITEBACK anymore for SB_I_CGROUPWB to function. For older kernels we need to keep it around. Also SB_I_CGROUPWB has been around since 4.1 so we don't need the ifdef anymore for SB_I_CGROUPWB. For git commit 2841808f35eebfd07150333f3af3007cb2904a09 upstream BDI_CAP_WRITEBACK_ACCT was removed. This is only needed for wb_stat_mod() handling which is not used by lustre and also was removed upstream. We can remove the wb_stats handling as well. By default the Linux kernel enables a similar type of accounting with newer kernels. Due to these changes we can greatly simplify Lustre. Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I1417eca54d9fa6b2c0e1d7d8a197146649f0b3c8 Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/69445 Reviewed-by: Oleg Drokin <green@whamcloud.com> Reviewed-by: Timothy Day <timday@thelustrecollective.com> Reviewed-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Tested-by: Maloo <maloo@whamcloud.com> Tested-by: jenkins <devops@whamcloud.com>
69444
master
J –B ✓T ✓R +4/2
LU-18687 obd: cleanup kobject default groups handling
mine
upstream
XS +1 −7
13d
LU-18687 obd: cleanup kobject default groups handling
mine
upstream
XS +1 −7
13d
reviews:
Arshad Hussain +1 · Oleg Drokin +2 · Timothy Day +1
patchsets:
PS1 10-06
PS2 10-06
owner James Simmons · uploader Oleg Drokin · PS3 uploaded 13d ago · MERGED · open in Gerrit ↗
commit message
LU-18687 obd: cleanup kobject default groups handling With our kobject abstraction we can simplify _get_attr_matches(). Currently if we drop it into a kernel tree this breaks the build. Make it buildable in tree and out of tree by having _get_attr_matches() now always walks kobj_type.default_groups[]. We can do this because our compat layer maps default_attrs of older kernels to default_groups. Test-Parameters: trivial Signed-off-by: James Simmons <jsimmons@infradead.org> Change-Id: I8779b50f861d14310796dc2e8b49c47dab9e40cc Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/69444 Tested-by: Maloo <maloo@whamcloud.com> Reviewed-by: Timothy Day <timday@thelustrecollective.com> Reviewed-by: Arshad Hussain <arshad.hussain@aeoncomputing.com> Reviewed-by: Oleg Drokin <green@whamcloud.com> Tested-by: jenkins <devops@whamcloud.com>
69043
master
J –B ✓T ✓R +5/2
LU-18687 build: convert most cfs_timer users to the kernel API
mine
upstream
M +76 −59
20d
LU-18687 build: convert most cfs_timer users to the kernel API
mine
upstream
M +76 −59
20d
reviews:
Arshad Hussain +1 · Andreas Dilger +1 · Oleg Drokin +2 · Timothy Day +1
patchsets:
PS1 09-18
PS2 09-22
PS3 09-23
owner James Simmons · uploader Oleg Drokin · PS4 uploaded 22d ago · MERGED · open in Gerrit ↗
commit message
LU-18687 build: convert most cfs_timer users to the kernel API
With the removal of pre-5.0 kernels only one difference exists
for the kernel timer API. We can simplify our code with using
the latest API directly. Only timer_container_of() is new so
add a m4 test and create a wrapper if not present. Fix an old
gnilnd bug using the wrong timer callback.
Test-Parameters: trivial
Fixes: 4b0e495e3c52 ("LU-14080 gnilnd: updates for SUSE 15 SP2")
Signed-off-by: James Simmons <jsimmons@infradead.org>
Change-Id: Iac012ec487b002f191647523e74bb5d29c1a8c64
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/69043
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Timothy Day <timday@thelustrecollective.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@thelustrecollective.com>
Reviewed-by: Arshad Hussain <arshad.hussain@aeoncomputing.com>