Unix and Linux Discussions Tagged with risk |
|
Thread / Thread Starter |
Last Post |
Replies |
Views |
Forum |
|
|
|
6 |
2,106 |
UNIX for Dummies Questions & Answers |
|
|
|
0 |
1,429 |
Complex Event Processing RSS News |
|
|
|
0 |
1,301 |
Complex Event Processing RSS News |
|
|
|
0 |
1,043 |
Software Releases - RSS News |
|
|
|
0 |
3,016 |
IT Security RSS |
|
|
|
0 |
1,093 |
UNIX and Linux RSS News |
|
|
|
0 |
2,347 |
IT Security RSS |
|
|
|
0 |
2,767 |
IT Security RSS |
|
|
|
0 |
996 |
Software Releases - RSS News |
|
|
|
0 |
1,115 |
Software Releases - RSS News |
|
|
|
0 |
971 |
Software Releases - RSS News |
|
|
|
0 |
1,662 |
Complex Event Processing RSS News |
|
|
|
0 |
1,391 |
Complex Event Processing RSS News |
|
|
|
1 |
3,486 |
Cybersecurity |
|
|
|
4 |
9,253 |
IP Networking |
BLK_MAKE_REQUEST(9) Block Devices BLK_MAKE_REQUEST(9)
NAME
blk_make_request - given a bio, allocate a corresponding struct request.
SYNOPSIS
struct request * blk_make_request(struct request_queue * q, struct bio * bio, gfp_t gfp_mask);
ARGUMENTS
q
target request queue
bio
The bio describing the memory mappings that will be submitted for IO. It may be a chained-bio properly constructed by block/bio layer.
gfp_mask
gfp flags to be used for memory allocation
DESCRIPTION
blk_make_request is the parallel of generic_make_request for BLOCK_PC type commands. Where the struct request needs to be farther
initialized by the caller. It is passed a struct bio, which describes the memory info of the I/O transfer.
The caller of blk_make_request must make sure that bi_io_vec are set to describe the memory buffers. That bio_data_dir will return the
needed direction of the request. (And all bio's in the passed bio-chain are properly set accordingly)
If called under none-sleepable conditions, mapped bio buffers must not need bouncing, by calling the appropriate masked or flagged
allocator, suitable for the target device. Otherwise the call to blk_queue_bounce will BUG.
WARNING
When allocating/cloning a bio-chain, careful consideration should be given to how you allocate bios. In particular, you cannot use
__GFP_WAIT for anything but the first bio in the chain. Otherwise you risk waiting for IO completion of a bio that hasn't been submitted
yet, thus resulting in a deadlock. Alternatively bios should be allocated using bio_kmalloc instead of bio_alloc, as that avoids the
mempool deadlock. If possible a big IO should be split into smaller parts when allocation fails. Partial allocation should not be an error,
or you risk a live-lock.
COPYRIGHT
Kernel Hackers Manual 2.6. July 2010 BLK_MAKE_REQUEST(9)