>On Sun, Feb 03 2013, majianpeng wrote: >> Hi all, >> When I wanted to do discard operations,but i set the openflag was O_RDONLY,it returned a EBADF rather than EACCES or EPERM. >> I searched the code and found: >> >case BLKDISCARD: >> >case BLKSECDISCARD: { >> > uint64_t range[2]; >> >> > if (!(mode & FMODE_WRITE)) >> > return -EBADF; >> Initial i thought there was error.But i searched all code of kernel and found some places like this. >> >> The description of EBADF is "Bad file numbe". There are some places where returned EBADF like, >> >if (!f.file) >> > return -EBADF; >> >> So i think for checking file->f_mode when failed, it should return EACCESS. > >But that would break the ABI at this point. I agree with you, though, >EBADF is not the right error for this case. > >-- >Jens Axboe > Sorry, can you explain in detail? Why can it break the ABI ? Thanks! Jianpeng Maÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ¥Šwÿº{.nÇ+‰·¥Š{±þG«�éÿŠ{ayºʇڙë,j­¢f£¢·hš�ï�êÿ‘êçz_è®(­éšŽŠÝ¢j"�ú¶m§ÿÿ¾«þG«�éÿ¢¸?™¨è­Ú&£ø§~�á¶iO•æ¬z·švØ^¶m§ÿÿà ÿ¶ìÿ¢¸?–I¥