sdcard: direct I/O file access write buffer alignment
It is not enough to align the read buffer only, because consequent writes might still fail with EINVAL. The write buffer should be also aligned according to the write(2) manual page. Change-Id: I7547dec5208732c56f4466c1b0c88f36dabacf5b
This commit is contained in:
parent
f7cf1a062e
commit
49e9344bdd
|
@ -1244,6 +1244,12 @@ static int handle_write(struct fuse* fuse, struct fuse_handler* handler,
|
|||
struct fuse_write_out out;
|
||||
struct handle *h = id_to_ptr(req->fh);
|
||||
int res;
|
||||
__u8 aligned_buffer[req->size] __attribute__((__aligned__(PAGESIZE)));
|
||||
|
||||
if (req->flags & O_DIRECT) {
|
||||
memcpy(aligned_buffer, buffer, req->size);
|
||||
buffer = (const __u8*) aligned_buffer;
|
||||
}
|
||||
|
||||
TRACE("[%d] WRITE %p(%d) %u@%llu\n", handler->token,
|
||||
h, h->fd, req->size, req->offset);
|
||||
|
|
Loading…
Reference in New Issue