Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename sysfs device label attribute to group and minor time tweak #14

Open
wants to merge 303 commits into
base: master
Choose a base branch
from

Conversation

modelrockettier
Copy link
Contributor

@modelrockettier modelrockettier commented Jan 31, 2019

Inspired by this Reddit thread, I've changed the /sys/fs/bcachefs/<uuid>/dev-#/label attribute to /sys/fs/bcachefs/<uuid>/dev-#/group to more closely mirror the bcachefs format and show-super output (naming it "group" instead of "label").

Additionally, this replaces two current_kernel_time64() calls with calls to ktime_get_coarse_real_ts64() (to fix the time portion of #13). Also since ktime_get_coarse_real_ts64() was added in the 4.18 kernel, the change can be done now (unlike the chacha changes, which were done in 5.0).

bch2_btree_node_relock() and __bch2_btree_iter_relock() are now only
used for relocking, not upgrading or downgrading locks, so we can split
out bch2_btree_node_upgrade() and slim down the fast path.
also fix some dirent bugs
bch2_btree_iter_peek_slot() -> bch2_bkey_debugcheck() was popping,
because __bch2_btree_iter_peek_slot() was using KEY_TYPE_DELETED for an
extent hole
also factor out bch2_btree_iter_checks()
prep work for btree_iter_prev()
btree_node_merge -> get_sibling -> btree_node_lock could drop locks,
when using linked iterators
Fewer allocations, and to_disk/from_disk are considerably less sketchy
now

Signed-off-by: Kent Overstreet <[email protected]>
similar to the dirent bug - making struct bch_dirent and bch_xattr 8
byte aligned changed sizeof, and size calculations that used
sizeof(bch_xattr)/sizeof(bch_dirent) wrong
when looking up the unit, it was matching against the trailing null in
si_units

Signed-off-by: Kent Overstreet <[email protected]>
There was a missing set_btree_bset_end() call, leading to popped
assertions later. Also add a quick and dirty debug option for injecting
invalid keys.

Signed-off-by: Kent Overstreet <[email protected]>
so as to generate fewer transaction restarts

Signed-off-by: Kent Overstreet <[email protected]>
@koverstreet koverstreet force-pushed the master branch 11 times, most recently from 09b4e04 to b0e4d11 Compare August 27, 2024 00:33
koverstreet pushed a commit that referenced this pull request Sep 10, 2024
[ Upstream commit a699781 ]

A sysfs reader can race with a device reset or removal, attempting to
read device state when the device is not actually present. eg:

     [exception RIP: qed_get_current_link+17]
  #8 [ffffb9e4f2907c48] qede_get_link_ksettings at ffffffffc07a994a [qede]
  #9 [ffffb9e4f2907cd8] __rh_call_get_link_ksettings at ffffffff992b01a3
 #10 [ffffb9e4f2907d38] __ethtool_get_link_ksettings at ffffffff992b04e4
 #11 [ffffb9e4f2907d90] duplex_show at ffffffff99260300
 #12 [ffffb9e4f2907e38] dev_attr_show at ffffffff9905a01c
 #13 [ffffb9e4f2907e50] sysfs_kf_seq_show at ffffffff98e0145b
 #14 [ffffb9e4f2907e68] seq_read at ffffffff98d902e3
 #15 [ffffb9e4f2907ec8] vfs_read at ffffffff98d657d1
 #16 [ffffb9e4f2907f00] ksys_read at ffffffff98d65c3f
 #17 [ffffb9e4f2907f38] do_syscall_64 at ffffffff98a052fb

 crash> struct net_device.state ffff9a9d21336000
    state = 5,

state 5 is __LINK_STATE_START (0b1) and __LINK_STATE_NOCARRIER (0b100).
The device is not present, note lack of __LINK_STATE_PRESENT (0b10).

This is the same sort of panic as observed in commit 4224cfd
("net-sysfs: add check for netdevice being present to speed_show").

There are many other callers of __ethtool_get_link_ksettings() which
don't have a device presence check.

Move this check into ethtool to protect all callers.

Fixes: d519e17 ("net: export device speed and duplex via sysfs")
Fixes: 4224cfd ("net-sysfs: add check for netdevice being present to speed_show")
Signed-off-by: Jamie Bainbridge <[email protected]>
Link: https://patch.msgid.link/8bae218864beaa44ed01628140475b9bf641c5b0.1724393671.git.jamie.bainbridge@gmail.com
Signed-off-by: Jakub Kicinski <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants