O_DIRECT flag가 있는 unbuffered I/O에서 WRITE가 안되는 문제
글쓴이: antzzang3 / 작성시간: 금, 2009/03/20 - 12:21오후
리눅스 FC6 커널 2.6.18을 사용중입니다.
open 과 write 콜로 파일을 만들고 읽고 쓰고 하는 중인데,
O_DIRECT 플래그만 붙으면 파일이 써지질 않습니다.
open은 되구요.
이렇게 되는 원인이 무엇이 있을까 궁금하네요
이전글을 찾아보니,
dma 관련해서 byte align이 필요하던거 같은데,
512bytes씩 write하도록 되어있습니다.
혹시 몰라서 4092로 바꿔봤는데,
달라지는건 없었습니다.
조언 부탁드려요 ^^;
Forums:
errno 찍어보니
22번 EINVAL 로 나오는데,
MANUAL 에는
The STREAM or multiplexer referenced by fildes is linked downstream grom a multiplexer.
라고 나오네요.
와우.. 무슨 소리인지 ㅠㅠ
배우는 자의 가치에 있어서 현재의 위치는 물론 발전하는 속도도 중요한 factor이다.
혼자 북치고 장구치네요.. ^^;
쓰고자 하는 BUF DATA의 memalign을 안한 거더군요 OTL...
다시 질문을 보니 그런것도 제대로 명시 안하고 조언 구하려고 했다는데 부끄럽네요
그나저나 내심 이번 기회로 kldp 계신분들과 대화트고 싶었는데 아쉽네요 ㅠ 다음 기회가 곧 또 있겠죠 ㅎㅎ
그럼 수고하세요~
배우는 자의 가치에 있어서 현재의 위치는 물론 발전하는 속도도 중요한 factor이다.
마침 필요하던 자료였네요
O_DIRECT가 안되서 하루 넘게 삽질하고 포기하려든중에
ANTZZANG3님이 쓰신글을 보구 해결했네요
감사합니다~^^
참고로 posix_memalign 요걸 사용했습니다
정적인 공간의
정적인 공간의 align은...
http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html
x86이 아닌 곳에선 가끔 써야하는 경우가 생기더군요. 꼼수를 부릴 때가 대부분이긴하지만.
OTL
저도 예전
저도 예전 연구실에서 O_DIRECT I/O를 가지고 테스트 코드를 만들면서, memory align으로 고생했던 적이 있는데, 그때 생각이 나네요^^
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
댓글 달기