>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???{饼?z鳐??骅w*jg????????G??⒏⒎?:+v????????????"??????