Commit Graph
59541 Commits
Author SHA1 Message Date
Luca Boccassi dddec402de Merge pull request #24530 from poettering/loop-with-more-lock
a variety of loopback block device fixes
2022-09-02 00:04:32 +01:00
Lennart Poettering 7cb349f0ca loop-util: make clearer how LoopDevice objects that do not encapsulate an actual loopback device are set up 2022-09-01 22:06:19 +02:00
Lennart Poettering 4c1d50e65c loop-util: lock the control device around clearing the loopback device and deleting it
This mirrors what we already do during allocation. We lock the control
device first, and then release the block device and then delete it.

This makes things substantially more robust as long all participants do
such locking: we won't attempt to delete a block device somebody else
already is using.
2022-09-01 22:06:19 +02:00
Lennart Poettering 87862cc2b4 loop-util: close lock fd before trying LOOP_CLR_FD in failure path
If the loopback device is open more than once LOOP_CLR_FD will fail,
hence close the lock fd first explicitly, so there's definitely only one
fd left.
2022-09-01 22:06:19 +02:00
Lennart Poettering 247738b4f5 loop-util: drop code to attach empty file
Back when I wrote this code I wasn't aware of BLKPG and what it can do.
Hence I came up with this hack to attach an empty file to delete all
partitions. But today we can do better with BLKPG: let's just explicitly
remove all partitions, and then try again.
2022-09-01 22:06:19 +02:00
Lennart Poettering 7f52206a2b loop-util: rework how we lock loopback block devices
Let's rework how we lock loopback block devices in two ways:

1. Lock a separate fd, instead of the main block device fd. We already
   did that for our internal locking when allocating loopback block
   devices, but do so for the exposed locking (i.e.
   loop_device_flock()), too, so that the lock is independent of the
   main fd we actually use of IO.

2. Instead of locking the device during allocation of the loopback
   device, then unlocking it (which will make udev run), and then
   re-locking things if we need, let's instead just keep the lock the
   whole time, to make things a bit safer and faster, and not have to
   wait for udev at all. This is done by adding a "lock_op" parameter to
   loop device allocation functions that declares the initial state of
   the lock, and is one of LOCK_UN/LOCK_SH/LOCK_EX. This change also
   shortens a lot of code, since we allocate + immediately lock loopback
   devices pretty much everywhere.
2022-09-01 22:05:32 +02:00
Lennart Poettering 234c2e16e5 dissect: drop partition removal code
This reverts a major chunk of 75d7e04eb4

Now that the loopback device code already destroys the partitions we
don't have to do this here anymore.

I am sure the right place to delete the partitions is in the loopback
code, since we really only should do that for loopback devices, see
bug #24431, and not on "real" block devices.

I am also not convinced dropping partitions the dissection logic doesn't
care about is a good idea, after all. The dissection stuff should
probably not consider itself the "owner" of the block devices it
analyzes, but take a more passive role: figure out what is what, but not
modify it.

Fixes: #24431
2022-09-01 22:05:10 +02:00
Lennart Poettering e8383058b2 dissect: don't remove partitions explicitly on umount anymore
We do that now automatically when releasing the loopback device, hence
we can drop the redundant try entirely.
2022-09-01 20:42:17 +02:00
Lennart Poettering 3a6ed1e19d loop-util: when clearing a loopback device delete partitions first, and take BSD lock
Whenever we release a loopback device, let's first synchronously delete
all partitions, so that we know that's complete and not done
asynchronously in the background. Take a BSD lock on the device while
doing so, so that udev won't make the devices busy while we do this.
2022-09-01 20:41:08 +02:00
Lennart Poettering ff27ef4b59 loop: convert impossibe EBADF cases into asserts 2022-09-01 20:40:01 +02:00
Yu Watanabe 0a3e413516 github: update differential shellcheck to v3.0.1
v3 supports external sources. Yey!
2022-09-01 17:27:09 +00:00
Yu Watanabe 51165cf587 Merge pull request #24531 from poettering/loop-resize-part-modernizations
loopback block device resize partition modernizations
2022-09-02 00:53:38 +09:00
Lennart Poettering ed13feff1e loop-util: use DEVNUM_FORMAT_STR more 2022-09-01 16:00:45 +02:00
Lennart Poettering 91e1ce1a7c loop-util: move resize partition ioctl call to blockdev-util.[ch]
The other BLKPG calls have wrappers in blockdev-util.[ch], let's place
them all there.

No change in behaviour.
2022-09-01 15:59:54 +02:00
Antonio Alvarez Feijoo cf0dc88da6 man: remove reference to mkinitrd 2022-09-01 14:09:30 +01:00
dependabot[bot] c19053e657 build(deps): bump meson from 0.63.0 to 0.63.1 in /.github/workflows
Bumps [meson](https://github.com/mesonbuild/meson) from 0.63.0 to 0.63.1.
- [Release notes](https://github.com/mesonbuild/meson/releases)
- [Commits](https://github.com/mesonbuild/meson/compare/0.63.0...0.63.1)

---
updated-dependencies:
- dependency-name: meson
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-01 10:31:30 +00:00
dependabot[bot] d1cc2654fd build(deps): bump github/super-linter from 4.9.5 to 4.9.6
Bumps [github/super-linter](https://github.com/github/super-linter) from 4.9.5 to 4.9.6.
- [Release notes](https://github.com/github/super-linter/releases)
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md)
- [Commits](https://github.com/github/super-linter/compare/2d64ac1c067c34beaf7d24cc12733cd46236f76e...01d3218744765b55c3b5ffbb27e50961e50c33c5)

---
updated-dependencies:
- dependency-name: github/super-linter
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-01 09:21:53 +00:00
dependabot[bot] 42907767bd build(deps): bump redhat-plumbers-in-action/advanced-issue-labeler
Bumps [redhat-plumbers-in-action/advanced-issue-labeler](https://github.com/redhat-plumbers-in-action/advanced-issue-labeler) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/redhat-plumbers-in-action/advanced-issue-labeler/releases)
- [Commits](https://github.com/redhat-plumbers-in-action/advanced-issue-labeler/compare/b89eb39b97529bb7596cb4e716485a6d6f7dd74a...d12b782ff92bc9ac535fb09c925aaa5be9e40f69)

---
updated-dependencies:
- dependency-name: redhat-plumbers-in-action/advanced-issue-labeler
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-01 09:08:19 +00:00
Lennart Poettering b7b7441de4 update TODO 2022-09-01 09:48:40 +02:00
Colin Walters 413e8650b7 tree-wide: Use "unmet" for condition checks, not "failed"
Often I end up debugging a problem on a system, and I
do e.g. `journalctl --grep=failed|error`.  The use of the term
"failed" for condition checks adds a *lot* of unnecessary noise into
this.

Now, I know this regexp search isn't precise, but it has proven
to be useful to me.

I think "failed" is too strong of a term as a baseline, and also
just stands out to e.g. humans watching their servers boot or
whatever.

The term "met condition" is fairly widely used, e.g.
https://stackoverflow.com/questions/63751794/what-does-the-condition-is-met-exactly-mean-in-programming-languages

Use that instead.
2022-09-01 15:03:40 +09:00
Yu Watanabe 133ac84e60 udevadm-settle: improve logs when we cannot access /run/udev/control
Addresses https://github.com/systemd/systemd/pull/24474#discussion_r959696663.
2022-08-31 22:26:06 +01:00
Frantisek Sumsal 47190275cf Merge pull request #24515 from yuwata/dissect-timeout
dissect-image: extend timeout for waiting devlink
2022-08-31 18:03:00 +00:00
Lennart Poettering a9f1bf409f update TODO 2022-08-31 18:29:30 +02:00
Jan Janssen 3a4e4fface tree-wide: Use devnum helpers in a few more places 2022-09-01 00:55:37 +09:00
Lennart Poettering 18f806b8d9 test: don't mistake error for success
Follow-up for acd3c86624
2022-09-01 00:54:28 +09:00
Luca Boccassi df16869660 shellcheck/labeler: disable on systemd-security 2022-09-01 00:53:46 +09:00
Lennart Poettering 7fd0fb02a1 condition: properly handle fnmatch() errors in ConditionHost 2022-08-31 17:31:28 +02:00
Lennart Poettering 6eeadaa141 path-util: return error if fnmatch() fails 2022-08-31 17:31:11 +02:00
Yu Watanabe 39fdc6f82d test-29-portable: enable debugging logs of udevd 2022-08-31 23:33:13 +09:00
Yu Watanabe 9fff8e1fdd test-29-portable: extend timeout for slower environment 2022-08-31 23:32:57 +09:00
Yu Watanabe 2b6605102d dissect-image: add environment variable to control timeout for waiting devlink to be configured 2022-08-31 23:20:09 +09:00
Yu Watanabe 4f89ce0c91 udev-util: make device_wait_for_initialization() take relative timeout
Also make the timer event source floating.
2022-08-31 23:12:46 +09:00
Yu Watanabe f81b3e90e4 udev-util: replace device_new_from_dev_path() with sd_device_new_from_devname() 2022-08-31 23:12:46 +09:00
Lennart Poettering 8812f8fc65 hashmap: add comment explaining that set_fnmatch() handles fnmatch() errors as non-matches 2022-08-31 15:13:42 +02:00
Yu Watanabe a7614fbe85 Merge pull request #24499 from medhefgo/format-signedness
meson: Compile with -Werror=format-signedness
2022-08-31 18:46:27 +09:00
Swapnil Devesh f1c36537a9 hwdb: fix Dell Professional Sound Bar AE515 scancode (#24497) 2022-08-31 04:31:50 +09:00
Jan Janssen a4ea5d19bb meson: Compile with -Werror=format-signedness 2022-08-30 12:03:33 +02:00
Jan Janssen f996072fe0 tree-wide: Fix field width specifier warnings
The casting here isn't pretty, but at least it makes it obvious what is
happening instead of implicit and it allows enabling -Wformat-signedness.
2022-08-30 12:03:33 +02:00
Jan Janssen 5570a09702 tree-wide: Fix format specifier warnings for %x
Unfortunately, hex output can only be produced with unsigned types. Some
cases can be fixed by producing the correct type, but a few simply have
to be cast. At least casting makes it explicit.
2022-08-30 12:03:33 +02:00
Jan Janssen 2676befc73 tree-wide: Fix a some remaining format warnings by casting 2022-08-30 12:03:33 +02:00
Jan Janssen 63b9838639 tree-wide: Mark some constants as unsigned
All these are really unsigned and used as such. This silences some
-Wformat-signedness warnings with gcc.
2022-08-30 12:03:33 +02:00
Jan Janssen 1dbab956ba journal: Show grcrypt error message instead of a raw code 2022-08-30 12:03:33 +02:00
Jan Janssen 9cf6c94eba efivars: Parse into unsigned
The format specifiers for UUID parsing use %x, which expects unsigned.
2022-08-30 12:03:33 +02:00
Jan Janssen c0f86d66f3 tree-wide: Use correct format specifiers
gcc will complain about all these with -Wformat-signedness.
2022-08-30 12:03:28 +02:00
Yu Watanabe 125d108665 Merge pull request #24474 from yuwata/udevadm-settle-cleanups
udevadm-settle: several cleanups
2022-08-30 07:31:20 +09:00
Yu Watanabe 7078299658 Merge pull request #24471 from yuwata/udevadm-wait-periodic-timer
udevadm-wait: introduce periodic timer for checking devices
2022-08-30 07:31:05 +09:00
Yu Watanabe 69a20cc3e4 Merge pull request #23888 from topimiettinen/networkd-netlabel-v2
network: NetLabel integration
2022-08-30 07:30:49 +09:00
LockBlock-dev 1ee4635413 hwdb: Force release calculator key on all HP Victus laptops
The key doesn't create a release event. This is a fix to make it work properly. I made sure the product is generic to work on all Victus laptops.

This fix #23006.
2022-08-30 05:01:37 +09:00
Lennart Poettering 4bede0a0aa homed: don't use stat() data from an unrelated inode
This doesn't really change anything, since we know the stat data used
here also contains S_IFBLK, but it's frickin' confusing.
2022-08-30 01:13:58 +09:00
Yu Watanabe 3c82f2028d Merge pull request #24495 from poettering/loopback-block-msg
improve loopback warning message
2022-08-30 01:10:43 +09:00