genode/repos/os/src/server
Norman Feske bbe3ee8dc5 block_session: server-defined payload alignment
This patch replaces the formerly fixed 2 KiB data alignment within the
packet-stream buffer by a server-defined alignment. This has two
benefits.

First, when using block servers that provide small block sizes like 512
bytes, we avoid fragmenting the packet-stream buffer, which occurs when
aligning 512-byte requests at 2 KiB boundaries. This reduces meta data
costs for the packet-stream allocator and also allows fitting more
requests into the buffer.

Second, block drivers with alignment constraints dictated by the
hardware can now pass those constraints to the client, thereby easing
the use of zero-copy DMA directly into the packet stream.

The alignment is determined by the Block::Session_client at construction
time and applied by the Block::Session_client::alloc_packet method.
Block-session clients should always use this method, not the 'alloc_packet'
method of the packet stream (tx source) directly. The latter merely
applies a default alignment of 2 KiB.

At the server side, the alignment is automatically checked by
block/component.h (old API) and block/request_stream.h (new API).

Issue #3274
2019-05-03 13:53:12 +02:00
..
block_cache block_session: server-defined payload alignment 2019-05-03 13:53:12 +02:00
cached_fs_rom Serve empty dataspace for empty files at cached_fs_rom 2018-08-28 16:45:25 +02:00
chroot os: avoid using deprecated APIs 2019-01-30 13:49:54 +01:00
clipboard Runtime package of clipboard service 2019-02-19 10:50:51 +01:00
dynamic_rom Add missing override annotations 2019-02-19 11:12:11 +01:00
fs_log Add missing override annotations 2019-02-19 11:12:11 +01:00
fs_report server/fs_report: don't truncate file initially 2018-05-31 12:28:15 +02:00
fs_rom fs_rom: revert workaround for possible livelock 2018-08-28 16:48:46 +02:00
input_filter Chargen description of French keyboard 2019-02-26 14:42:55 +01:00
input_merger os: avoid using deprecated APIs 2019-01-30 13:49:54 +01:00
iso9660 block_session: server-defined payload alignment 2019-05-03 13:53:12 +02:00
loader Add missing override annotations 2019-02-19 11:12:11 +01:00
log_report os: avoid using deprecated APIs 2019-01-30 13:49:54 +01:00
log_terminal Add missing override annotations 2019-02-19 11:12:11 +01:00
lx_block block_session: server-defined payload alignment 2019-05-03 13:53:12 +02:00
lx_fs lx_fs: return host inode value for dir entries 2019-02-28 11:34:06 +01:00
mixer Add missing override annotations 2019-02-19 11:12:11 +01:00
nic_bridge nic_router/nic_bridge: free MAC addresses 2019-04-01 19:33:48 +02:00
nic_dump Add missing override annotations 2019-02-19 11:12:11 +01:00
nic_loopback Add missing override annotations 2019-02-19 11:12:11 +01:00
nic_router nic_router: manipulate port-forwarding port 2019-04-01 19:33:48 +02:00
nit_fb nit_fb: defer mode change to client response 2018-05-30 13:36:15 +02:00
nitpicker nitpicker: send mode change on domain update 2019-04-01 19:33:52 +02:00
part_block block_session: server-defined payload alignment 2019-05-03 13:53:12 +02:00
ram_block block_session: server-defined payload alignment 2019-05-03 13:53:12 +02:00
ram_fs ram_fs: increase max file size on 64 bit to 8 GiB 2019-03-18 15:57:00 +01:00
report_rom os: avoid using deprecated APIs 2019-01-30 13:49:54 +01:00
rom_block block_session: server-defined payload alignment 2019-05-03 13:53:12 +02:00
rom_filter Add missing override annotations 2019-02-19 11:12:11 +01:00
rom_prefetcher Add missing override annotations 2019-02-19 11:12:11 +01:00
tar_rom Add missing override annotations 2019-02-19 11:12:11 +01:00
terminal_crosslink Add missing override annotations 2019-02-19 11:12:11 +01:00
terminal_log Add missing override annotations 2019-02-19 11:12:11 +01:00
trace_fs os: avoid using deprecated APIs 2019-01-30 13:49:54 +01:00
tz_vmm block_session: server-defined payload alignment 2019-05-03 13:53:12 +02:00
vfs VFS: Replace global response handlers with local handlers 2019-04-09 12:30:34 +02:00
vmm hw: name vm_state header explicitely 2019-04-01 19:33:49 +02:00